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)