about summary refs log tree commit diff
path: root/src/engine/server/server.cpp
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-03-20 15:33:49 +0100
committeroy <Tom_Adams@web.de>2011-03-20 15:33:49 +0100
commit96808a11451f2ccf22346253bd22f8f559207ac8 (patch)
treea91ecb0ea18cff36e8515f234c5028c6c1c1b628 /src/engine/server/server.cpp
parent2547bfa4fcc8916a47eceb9a929fe73c8a1d83b9 (diff)
downloadzcatch-96808a11451f2ccf22346253bd22f8f559207ac8.tar.gz
zcatch-96808a11451f2ccf22346253bd22f8f559207ac8.zip
made it possible to just show the number of player slots of a server (instead of client ones). Closes #68
Diffstat (limited to 'src/engine/server/server.cpp')
-rw-r--r--src/engine/server/server.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index e2408a10..c3ba583b 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -911,11 +911,16 @@ void CServer::SendServerInfo(NETADDR *pAddr, int Token)
 	char aBuf[128];
 
 	// count the players
-	int PlayerCount = 0;
+	int PlayerCount = 0, ClientCount = 0;
 	for(int i = 0; i < MAX_CLIENTS; i++)
 	{
 		if(m_aClients[i].m_State != CClient::STATE_EMPTY)
-			PlayerCount++;
+		{
+			if(GameServer()->IsClientPlayer(i))
+				PlayerCount++;
+			
+			ClientCount++;
+		}
 	}
 	
 	p.Reset();
@@ -939,20 +944,22 @@ void CServer::SendServerInfo(NETADDR *pAddr, int Token)
 	p.AddString(aBuf, 2);
 
 	str_format(aBuf, sizeof(aBuf), "%d", PlayerCount); p.AddString(aBuf, 3);  // num players
-	str_format(aBuf, sizeof(aBuf), "%d", m_NetServer.MaxClients()); p.AddString(aBuf, 3); // max players
+	str_format(aBuf, sizeof(aBuf), "%d", m_NetServer.MaxClients()-g_Config.m_SvSpectatorSlots); p.AddString(aBuf, 3); // max players
+	str_format(aBuf, sizeof(aBuf), "%d", ClientCount); p.AddString(aBuf, 3);  // num clients
+	str_format(aBuf, sizeof(aBuf), "%d", m_NetServer.MaxClients()); p.AddString(aBuf, 3); // max clients
 
 	for(i = 0; i < MAX_CLIENTS; i++)
 	{
 		if(m_aClients[i].m_State != CClient::STATE_EMPTY)
 		{
-			p.AddString(ClientName(i), MAX_NAME_LENGTH);  // player name
-			p.AddString(ClientClan(i), MAX_CLAN_LENGTH);  // player clan
-			str_format(aBuf, sizeof(aBuf), "%d", m_aClients[i].m_Country); p.AddString(aBuf, 6);  // player country
-			str_format(aBuf, sizeof(aBuf), "%d", m_aClients[i].m_Score); p.AddString(aBuf, 6);  // player score
+			p.AddString(ClientName(i), MAX_NAME_LENGTH);  // client name
+			p.AddString(ClientClan(i), MAX_CLAN_LENGTH);  // client clan
+			str_format(aBuf, sizeof(aBuf), "%d", m_aClients[i].m_Country); p.AddString(aBuf, 6);  // client country
+			str_format(aBuf, sizeof(aBuf), "%d", m_aClients[i].m_Score); p.AddString(aBuf, 6);  // client score
+			str_format(aBuf, sizeof(aBuf), "%d", GameServer()->IsClientPlayer(i)?1:0); p.AddString(aBuf, 2);  // is player?
 		}
 	}
 	
-	
 	Packet.m_ClientID = -1;
 	Packet.m_Address = *pAddr;
 	Packet.m_Flags = NETSENDFLAG_CONNLESS;