diff options
Diffstat (limited to 'src/cgame')
-rw-r--r-- | src/cgame/cg_servercmds.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c index 035b8c56..e955e8ab 100644 --- a/src/cgame/cg_servercmds.c +++ b/src/cgame/cg_servercmds.c @@ -81,32 +81,31 @@ static void CG_ParseTeamInfo( void ) int i; int count; int client; - int fields; - if( cg.snap->ps.stats[ STAT_TEAM ] == TEAM_ALIENS ) - fields = 4; // aliens don't have upgrades - else - fields = 5; + count = trap_Argc( ); - count = ( trap_Argc( ) - 1 ) / fields; + for( i = 1; i < count; i++ ) // i is also incremented when writing into cgs.clientinfo + { + client = atoi( CG_Argv( i ) ); - cgs.teaminfoReceievedTime = cg.time; + // wrong team? drop the remaining info + if( cgs.clientinfo[ client ].team != cg.snap->ps.stats[ STAT_TEAM ] ) + return; - for( i = 0; i < count; i++ ) - { - client = atoi( CG_Argv( i * fields + 1 ) ); if( client < 0 || client >= MAX_CLIENTS ) { CG_Printf( "[skipnotify]CG_ParseTeamInfo: bad client number: %d\n", client ); return; } - cgs.clientinfo[ client ].location = atoi( CG_Argv( i * fields + 2 ) ); - cgs.clientinfo[ client ].health = atoi( CG_Argv( i * fields + 3 ) ); - cgs.clientinfo[ client ].curWeaponClass = atoi( CG_Argv( i * fields + 4 ) ); + cgs.clientinfo[ client ].location = atoi( CG_Argv( ++i ) ); + cgs.clientinfo[ client ].health = atoi( CG_Argv( ++i ) ); + cgs.clientinfo[ client ].curWeaponClass = atoi( CG_Argv( ++i ) ); if( cg.snap->ps.stats[ STAT_TEAM ] == TEAM_HUMANS ) - cgs.clientinfo[ client ].upgrade = atoi( CG_Argv( i * fields + 5 ) ); + cgs.clientinfo[ client ].upgrade = atoi( CG_Argv( ++i ) ); } + + cgs.teaminfoReceievedTime = cg.time; } |