diff --git a/core/CPlayerManager.cpp b/core/CPlayerManager.cpp index ea30b8c0d..02952b24a 100644 --- a/core/CPlayerManager.cpp +++ b/core/CPlayerManager.cpp @@ -67,10 +67,14 @@ void CPlayerManager::OnSourceModShutdown() void CPlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax) { - /* Initialize all players */ - m_maxClients = clientMax; - m_PlayerCount = 0; - m_Players = new CPlayer[m_maxClients + 1]; + if (m_FirstPass) + { + /* Initialize all players */ + m_maxClients = clientMax; + m_PlayerCount = 0; + m_Players = new CPlayer[m_maxClients + 1]; + m_FirstPass = false; + } } bool CPlayerManager::OnClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen) diff --git a/core/CPlayerManager.h b/core/CPlayerManager.h index a3fd16309..042476bf9 100644 --- a/core/CPlayerManager.h +++ b/core/CPlayerManager.h @@ -11,6 +11,8 @@ class CPlayer; class CPlayerManager : public SMGlobalClass { +public: + CPlayerManager() : m_FirstPass(true) {} public: //SMGlobalClass virtual void OnSourceModAllInitialized(); virtual void OnSourceModShutdown(); @@ -38,6 +40,7 @@ private: CPlayer *m_Players; int m_maxClients; int m_PlayerCount; + bool m_FirstPass; }; extern CPlayerManager g_PlayerManager;