core/PlayerManager.cpp
changeset 3350 4e7c8ee5bc0e
parent 3349 65bc60635110
child 3356 011f2234c936
     1.1 --- a/core/PlayerManager.cpp	Fri Jul 08 07:54:21 2011 -0400
     1.2 +++ b/core/PlayerManager.cpp	Fri Jul 08 07:55:20 2011 -0400
     1.3 @@ -111,6 +111,7 @@
     1.4  {
     1.5  	m_AuthQueue = NULL;
     1.6  	m_FirstPass = false;
     1.7 +	m_maxClients = 0;
     1.8  
     1.9  	m_UserIdLookUp = new int[USHRT_MAX+1];
    1.10  	memset(m_UserIdLookUp, 0, sizeof(int) * (USHRT_MAX+1));
    1.11 @@ -231,12 +232,12 @@
    1.12  
    1.13  void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
    1.14  {
    1.15 -	int maxClients = gpGlobals->maxClients;
    1.16  	if (!m_FirstPass)
    1.17  	{
    1.18  		/* Initialize all players */
    1.19  
    1.20  		// clientMax will not necessarily be correct here (such as on late SourceTV enable)
    1.21 +		m_maxClients = gpGlobals->maxClients;
    1.22  
    1.23  		m_PlayerCount = 0;
    1.24  		m_Players = new CPlayer[ABSOLUTE_PLAYER_LIMIT + 1];
    1.25 @@ -247,9 +248,9 @@
    1.26  
    1.27  		g_NumPlayersToAuth = &m_AuthQueue[0];
    1.28  
    1.29 -		g_PluginSys.SyncMaxClients(maxClients);
    1.30 +		g_PluginSys.SyncMaxClients(clientMax);
    1.31  	}
    1.32 -	g_Extensions.CallOnCoreMapStart(pEdictList, edictCount, maxClients);
    1.33 +	g_Extensions.CallOnCoreMapStart(pEdictList, edictCount, clientMax);
    1.34  	m_onActivate->Execute(NULL);
    1.35  	m_onActivate2->Execute(NULL);
    1.36  
    1.37 @@ -258,7 +259,7 @@
    1.38  	{
    1.39  		if ((*iter)->GetClientListenerVersion() >= 5)
    1.40  		{
    1.41 -			(*iter)->OnServerActivated(maxClients);
    1.42 +			(*iter)->OnServerActivated(clientMax);
    1.43  		}
    1.44  	}
    1.45  
    1.46 @@ -581,8 +582,7 @@
    1.47  void PlayerManager::OnSourceModLevelEnd()
    1.48  {
    1.49  	/* Disconnect all bots still in game */
    1.50 -	int maxClients = gpGlobals->maxClients;
    1.51 -	for (int i=1; i<=maxClients; i++)
    1.52 +	for (int i=1; i<=m_maxClients; i++)
    1.53  	{
    1.54  		if (m_Players[i].IsConnected())
    1.55  		{
    1.56 @@ -851,12 +851,12 @@
    1.57  
    1.58  int PlayerManager::GetMaxClients()
    1.59  {
    1.60 -	return gpGlobals->maxClients;
    1.61 +	return m_maxClients;
    1.62  }
    1.63  
    1.64  CPlayer *PlayerManager::GetPlayerByIndex(int client) const
    1.65  {
    1.66 -	if (client > gpGlobals->maxClients || client < 1)
    1.67 +	if (client > m_maxClients || client < 1)
    1.68  	{
    1.69  		return NULL;
    1.70  	}
    1.71 @@ -896,8 +896,7 @@
    1.72  
    1.73  	/* If we can't verify the userid, we have to do a manual loop */
    1.74  	CPlayer *player;
    1.75 -	int maxClients = gpGlobals->maxClients;
    1.76 -	for (int i = 1; i <= maxClients; i++)
    1.77 +	for (int i = 1; i <= m_maxClients; i++)
    1.78  	{
    1.79  		player = GetPlayerByIndex(i);
    1.80  		if (!player || !player->IsConnected())
    1.81 @@ -937,8 +936,7 @@
    1.82  
    1.83  void PlayerManager::ClearAdminId(AdminId id)
    1.84  {
    1.85 -	int maxClients = gpGlobals->maxClients;
    1.86 -	for (int i=1; i<=maxClients; i++)
    1.87 +	for (int i=1; i<=m_maxClients; i++)
    1.88  	{
    1.89  		if (m_Players[i].m_Admin == id)
    1.90  		{
    1.91 @@ -949,8 +947,7 @@
    1.92  
    1.93  void PlayerManager::ClearAllAdmins()
    1.94  {
    1.95 -	int maxClients = gpGlobals->maxClients;
    1.96 -	for (int i=1; i<=maxClients; i++)
    1.97 +	for (int i=1; i<=m_maxClients; i++)
    1.98  	{
    1.99  		m_Players[i].DumpAdmin(true);
   1.100  	}
   1.101 @@ -963,8 +960,7 @@
   1.102  
   1.103  void PlayerManager::RecheckAnyAdmins()
   1.104  {
   1.105 -	int maxClients = gpGlobals->maxClients;
   1.106 -	for (int i=1; i<=maxClients; i++)
   1.107 +	for (int i=1; i<=m_maxClients; i++)
   1.108  	{
   1.109  		if (m_Players[i].IsInGame() && m_Players[i].IsAuthorized())
   1.110  		{
   1.111 @@ -1358,6 +1354,11 @@
   1.112  	}
   1.113  }
   1.114  
   1.115 +void PlayerManager::OnSourceModMaxPlayersChanged( int newvalue )
   1.116 +{
   1.117 +	m_maxClients = newvalue;
   1.118 +}
   1.119 +
   1.120  void PlayerManager::MaxPlayersChanged( int newvalue /*= -1*/ )
   1.121  {
   1.122  	if (!m_FirstPass)