diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 5d035f5b..98c7dae6 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -171,14 +171,16 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) return; } sessionid = getint(p); - int oldcn = player1->clientnum; player1->clientnum = mycn; - joining = getint(p); if(getint(p) > 0) conoutf("INFO: this server is password protected"); - if(oldcn < 0 && mycn >= 0) sendintro(); + sendintro(); break; } + case SV_WELCOME: + joining = getint(p); + break; + case SV_CLIENT: { int cn = getint(p), len = getuint(p); diff --git a/source/src/protocol.cpp b/source/src/protocol.cpp index ffc62470..6f289d7f 100644 --- a/source/src/protocol.cpp +++ b/source/src/protocol.cpp @@ -133,7 +133,7 @@ const char *voteerrorstr(int n) { return (n>=0 && (size_t)n < sizeof(voteerrors) char msgsizesl[] = // size inclusive message token, 0 for variable or not-checked sizes { - SV_INITS2C, 5, SV_INITC2S, 0, SV_POS, 0, SV_TEXT, 0, SV_TEAMTEXT, 0, SV_SOUND, 2, SV_VOICECOM, 2, SV_VOICECOMTEAM, 2, SV_CDIS, 2, + SV_INITS2C, 5, SV_WELCOME, 2, SV_INITC2S, 0, SV_POS, 0, SV_TEXT, 0, SV_TEAMTEXT, 0, SV_SOUND, 2, SV_VOICECOM, 2, SV_VOICECOMTEAM, 2, SV_CDIS, 2, SV_SHOOT, 0, SV_EXPLODE, 0, SV_SUICIDE, 1, SV_AKIMBO, 2, SV_RELOAD, 3, SV_GIBDIED, 4, SV_DIED, 4, SV_GIBDAMAGE, 6, SV_DAMAGE, 6, SV_HITPUSH, 6, SV_SHOTFX, 9, SV_THROWNADE, 8, SV_TRYSPAWN, 1, SV_SPAWNSTATE, 23, SV_SPAWN, 3, SV_FORCEDEATH, 2, SV_RESUME, 0, diff --git a/source/src/protocol.h b/source/src/protocol.h index ba82f6f5..9c7474fc 100644 --- a/source/src/protocol.h +++ b/source/src/protocol.h @@ -14,7 +14,7 @@ // network messages codes, c2s, c2c, s2c enum { - SV_INITS2C = 0, SV_INITC2S, SV_POS, SV_TEXT, SV_TEAMTEXT, SV_SOUND, SV_VOICECOM, SV_VOICECOMTEAM, SV_CDIS, + SV_INITS2C = 0, SV_WELCOME, SV_INITC2S, SV_POS, SV_TEXT, SV_TEAMTEXT, SV_SOUND, SV_VOICECOM, SV_VOICECOMTEAM, SV_CDIS, SV_SHOOT, SV_EXPLODE, SV_SUICIDE, SV_AKIMBO, SV_RELOAD, SV_GIBDIED, SV_DIED, SV_GIBDAMAGE, SV_DAMAGE, SV_HITPUSH, SV_SHOTFX, SV_THROWNADE, SV_TRYSPAWN, SV_SPAWNSTATE, SV_SPAWN, SV_FORCEDEATH, SV_RESUME, @@ -44,7 +44,7 @@ extern void protocoldebug(bool enable); // converts message code to char const static char *messagenames[] = { - "SV_INITS2C", "SV_INITC2S", "SV_POS", "SV_TEXT", "SV_TEAMTEXT", "SV_SOUND", "SV_VOICECOM", "SV_VOICECOMTEAM", "SV_CDIS", + "SV_INITS2C", "SV_WELCOME", "SV_INITC2S", "SV_POS", "SV_TEXT", "SV_TEAMTEXT", "SV_SOUND", "SV_VOICECOM", "SV_VOICECOMTEAM", "SV_CDIS", "SV_SHOOT", "SV_EXPLODE", "SV_SUICIDE", "SV_AKIMBO", "SV_RELOAD", "SV_GIBDIED", "SV_DIED", "SV_GIBDAMAGE", "SV_DAMAGE", "SV_HITPUSH", "SV_SHOTFX", "SV_THROWNADE", "SV_TRYSPAWN", "SV_SPAWNSTATE", "SV_SPAWN", "SV_FORCEDEATH", "SV_RESUME", diff --git a/source/src/server.cpp b/source/src/server.cpp index cb6bf08a..eab415c5 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -2206,7 +2206,7 @@ void sendresume(client &c) void sendinits2c(client &c) { - sendf(c.clientnum, 1, "ri6", SV_INITS2C, c.clientnum, PROTOCOL_VERSION, c.salt, 0, serverpassword[0] ? 1 : 0); + sendf(c.clientnum, 1, "ri5", SV_INITS2C, c.clientnum, PROTOCOL_VERSION, c.salt, serverpassword[0] ? 1 : 0); } void welcomepacket(ucharbuf &p, int n, ENetPacket *packet) @@ -2227,12 +2227,8 @@ void welcomepacket(ucharbuf &p, int n, ENetPacket *packet) client *c = valid_client(n) ? clients[n] : NULL; int numcl = numclients(); - putint(p, SV_INITS2C); - putint(p, n); - putint(p, PROTOCOL_VERSION); - putint(p, c ? c->salt : 0); + putint(p, SV_WELCOME); putint(p, smapname[0] && !m_demo ? numcl : -1); - putint(p, 0); if(smapname[0] && !m_demo) { putint(p, SV_MAPCHANGE);