diff --git a/r5dev/engine/server/server.cpp b/r5dev/engine/server/server.cpp index 4889a535..0cc35222 100644 --- a/r5dev/engine/server/server.cpp +++ b/r5dev/engine/server/server.cpp @@ -57,6 +57,26 @@ int CServer::GetNumFakeClients(void) const return nBots; } +//--------------------------------------------------------------------------------- +// Purpose: Gets the number of clients on the server +// Output : int +//--------------------------------------------------------------------------------- +int CServer::GetNumClients(void) const +{ + int nClients = 0; + for (int i = 0; i < g_ServerGlobalVariables->m_nMaxClients; i++) + { + CClient* pClient = g_pClient->GetClient(i); + if (!pClient) + continue; + + if (pClient->IsConnected()) + nClients++; + } + + return nClients; +} + //--------------------------------------------------------------------------------- // Purpose: client to server authentication // Input : *pChallenge - diff --git a/r5dev/engine/server/server.h b/r5dev/engine/server/server.h index d8c1ca0f..800155e5 100644 --- a/r5dev/engine/server/server.h +++ b/r5dev/engine/server/server.h @@ -33,6 +33,7 @@ public: #ifndef CLIENT_DLL // Only the connectionless packet handler is implemented on the client via the IServer base class. int GetNumHumanPlayers(void) const; int GetNumFakeClients(void) const; + int GetNumClients(void) const; const char* GetMapName(void) const { return m_szMapname; } const char* GetMapGroupName(void) const { return m_szMapGroupName; } int GetNumClasses(void) const { return m_nServerClasses; }