From 264ffa80ce12685dea28f915d6d3a9b0dce2b89b Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Fri, 8 Jul 2011 07:55:20 -0400 Subject: [PATCH] Backed out changeset: b5969264060e --- core/PlayerManager.cpp | 33 +++++++++++++++++---------------- core/PlayerManager.h | 4 +++- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp index a91fe9c8..b5a1be02 100644 --- a/core/PlayerManager.cpp +++ b/core/PlayerManager.cpp @@ -111,6 +111,7 @@ PlayerManager::PlayerManager() { m_AuthQueue = NULL; m_FirstPass = false; + m_maxClients = 0; m_UserIdLookUp = new int[USHRT_MAX+1]; memset(m_UserIdLookUp, 0, sizeof(int) * (USHRT_MAX+1)); @@ -231,12 +232,12 @@ ConfigResult PlayerManager::OnSourceModConfigChanged(const char *key, void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax) { - int maxClients = gpGlobals->maxClients; if (!m_FirstPass) { /* Initialize all players */ // clientMax will not necessarily be correct here (such as on late SourceTV enable) + m_maxClients = gpGlobals->maxClients; m_PlayerCount = 0; m_Players = new CPlayer[ABSOLUTE_PLAYER_LIMIT + 1]; @@ -247,9 +248,9 @@ void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int cl g_NumPlayersToAuth = &m_AuthQueue[0]; - g_PluginSys.SyncMaxClients(maxClients); + g_PluginSys.SyncMaxClients(clientMax); } - g_Extensions.CallOnCoreMapStart(pEdictList, edictCount, maxClients); + g_Extensions.CallOnCoreMapStart(pEdictList, edictCount, clientMax); m_onActivate->Execute(NULL); m_onActivate2->Execute(NULL); @@ -258,7 +259,7 @@ void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int cl { if ((*iter)->GetClientListenerVersion() >= 5) { - (*iter)->OnServerActivated(maxClients); + (*iter)->OnServerActivated(clientMax); } } @@ -581,8 +582,7 @@ void PlayerManager::OnClientPutInServer(edict_t *pEntity, const char *playername void PlayerManager::OnSourceModLevelEnd() { /* Disconnect all bots still in game */ - int maxClients = gpGlobals->maxClients; - for (int i=1; i<=maxClients; i++) + for (int i=1; i<=m_maxClients; i++) { if (m_Players[i].IsConnected()) { @@ -851,12 +851,12 @@ void PlayerManager::OnClientSettingsChanged(edict_t *pEntity) int PlayerManager::GetMaxClients() { - return gpGlobals->maxClients; + return m_maxClients; } CPlayer *PlayerManager::GetPlayerByIndex(int client) const { - if (client > gpGlobals->maxClients || client < 1) + if (client > m_maxClients || client < 1) { return NULL; } @@ -896,8 +896,7 @@ int PlayerManager::GetClientOfUserId(int userid) /* If we can't verify the userid, we have to do a manual loop */ CPlayer *player; - int maxClients = gpGlobals->maxClients; - for (int i = 1; i <= maxClients; i++) + for (int i = 1; i <= m_maxClients; i++) { player = GetPlayerByIndex(i); if (!player || !player->IsConnected()) @@ -937,8 +936,7 @@ IGamePlayer *PlayerManager::GetGamePlayer(int client) void PlayerManager::ClearAdminId(AdminId id) { - int maxClients = gpGlobals->maxClients; - for (int i=1; i<=maxClients; i++) + for (int i=1; i<=m_maxClients; i++) { if (m_Players[i].m_Admin == id) { @@ -949,8 +947,7 @@ void PlayerManager::ClearAdminId(AdminId id) void PlayerManager::ClearAllAdmins() { - int maxClients = gpGlobals->maxClients; - for (int i=1; i<=maxClients; i++) + for (int i=1; i<=m_maxClients; i++) { m_Players[i].DumpAdmin(true); } @@ -963,8 +960,7 @@ const char *PlayerManager::GetPassInfoVar() void PlayerManager::RecheckAnyAdmins() { - int maxClients = gpGlobals->maxClients; - for (int i=1; i<=maxClients; i++) + for (int i=1; i<=m_maxClients; i++) { if (m_Players[i].IsInGame() && m_Players[i].IsAuthorized()) { @@ -1358,6 +1354,11 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info) } } +void PlayerManager::OnSourceModMaxPlayersChanged( int newvalue ) +{ + m_maxClients = newvalue; +} + void PlayerManager::MaxPlayersChanged( int newvalue /*= -1*/ ) { if (!m_FirstPass) diff --git a/core/PlayerManager.h b/core/PlayerManager.h index 7c88e1a2..ce31287c 100644 --- a/core/PlayerManager.h +++ b/core/PlayerManager.h @@ -135,6 +135,7 @@ public: //SMGlobalClass void OnSourceModShutdown(); void OnSourceModLevelEnd(); ConfigResult OnSourceModConfigChanged(const char *key, const char *value, ConfigSource source, char *error, size_t maxlength); + void OnSourceModMaxPlayersChanged(int newvalue); public: CPlayer *GetPlayerByIndex(int client) const; void RunAuthChecks(); @@ -171,7 +172,7 @@ public: //IPlayerManager public: inline int MaxClients() { - return gpGlobals->maxClients; + return m_maxClients; } inline int NumPlayers() { @@ -205,6 +206,7 @@ private: IForward *m_onActivate2; CPlayer *m_Players; int *m_UserIdLookUp; + int m_maxClients; int m_PlayerCount; bool m_FirstPass; unsigned int *m_AuthQueue;