From 6ef76fe6656f22b2a73a8ad48611f0378f76d9f4 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 13 Aug 2022 22:33:58 +0300 Subject: [PATCH] engine: server: fix bots are counted as real players --- engine/server/sv_client.c | 50 ++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/engine/server/sv_client.c b/engine/server/sv_client.c index 0e7da563..9cdc9f92 100644 --- a/engine/server/sv_client.c +++ b/engine/server/sv_client.c @@ -42,6 +42,35 @@ typedef struct ucmd_s static int g_userid = 1; +/* +================= +SV_GetPlayerCount + +================= +*/ +static void SV_GetPlayerCount( int *players, int *bots ) +{ + int i; + + *players = 0; + *bots = 0; + + if( !svs.clients ) + return; + + for( i = 0; i < svs.maxclients; i++ ) + { + if( svs.clients[i].state >= cs_connected ) + { + if( FBitSet( svs.clients[i].flags, FCL_FAKECLIENT )) + (*bots)++; + else + (*players)++; + } + + } +} + /* ================= SV_GetChallenge @@ -835,12 +864,10 @@ void SV_Info( netadr_t from, int protocolVersion ) } else { - int i, count = 0; + int i, count, bots; qboolean havePassword = COM_CheckStringEmpty( sv_password.string ); - for( i = 0; i < svs.maxclients; i++ ) - if( svs.clients[i].state >= cs_connected ) - count++; + SV_GetPlayerCount( &count, &bots ); // a1ba: send protocol version to distinguish old engine and new Info_SetValueForKey( string, "p", va( "%i", PROTOCOL_VERSION ), MAX_INFO_STRING ); @@ -2163,22 +2190,11 @@ void SV_TSourceEngineQuery( netadr_t from ) { // A2S_INFO char answer[1024] = ""; - int count = 0, bots = 0; + int count, bots; int index; sizebuf_t buf; - if( svs.clients ) - { - for( index = 0; index < svs.maxclients; index++ ) - { - if( svs.clients[index].state >= cs_connected ) - { - if( FBitSet( svs.clients[index].flags, FCL_FAKECLIENT )) - bots++; - else count++; - } - } - } + SV_GetPlayerCount( &count, &bots ); MSG_Init( &buf, "TSourceEngineQuery", answer, sizeof( answer ));