core/CPlayerManager.cpp
changeset 268 d6fed4f05e07
parent 242 9dcd59d9014a
child 269 0658b8daeba6
     1.1 --- a/core/CPlayerManager.cpp	Thu Jan 04 23:43:01 2007 +0000
     1.2 +++ b/core/CPlayerManager.cpp	Fri Jan 05 00:42:22 2007 +0000
     1.3 @@ -8,6 +8,7 @@
     1.4  SH_DECL_HOOK1_void(IServerGameClients, ClientDisconnect, SH_NOATTRIB, 0, edict_t *);
     1.5  SH_DECL_HOOK1_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *);
     1.6  SH_DECL_HOOK1_void(IServerGameClients, ClientSettingsChanged, SH_NOATTRIB, 0, edict_t *);
     1.7 +SH_DECL_HOOK3_void(IServerGameDLL, ServerActivate, SH_NOATTRIB, 0, edict_t *, int, int);
     1.8  
     1.9  void CPlayerManager::OnSourceModAllInitialized()
    1.10  {
    1.11 @@ -17,6 +18,7 @@
    1.12  	SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, serverClients, this, &CPlayerManager::OnClientDisconnect_Post, true);
    1.13  	SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, serverClients, this, &CPlayerManager::OnClientCommand, false);
    1.14  	SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientSettingsChanged, serverClients, this, &CPlayerManager::OnClientSettingsChanged, true);
    1.15 +	SH_ADD_HOOK_MEMFUNC(IServerGameDLL, ServerActivate, gamedll, this, &CPlayerManager::OnServerActivate, true);
    1.16  
    1.17  	/* Register OnClientConnect */
    1.18  	ParamType p1[] = {Param_Cell, Param_String, Param_Cell};
    1.19 @@ -40,11 +42,6 @@
    1.20  
    1.21  	/* Register OnClientAuthorized */
    1.22  	//:TODO:
    1.23 -
    1.24 -	/* Initialize all players */
    1.25 -	m_maxClients = g_SMAPI->pGlobals()->maxClients;
    1.26 -	m_PlayerCount = 0;
    1.27 -	m_Players = new CPlayer[m_maxClients];
    1.28  }
    1.29  
    1.30  void CPlayerManager::OnSourceModShutdown()
    1.31 @@ -55,6 +52,7 @@
    1.32  	SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, serverClients, this, &CPlayerManager::OnClientDisconnect_Post, true);
    1.33  	SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, serverClients, this, &CPlayerManager::OnClientCommand, false);
    1.34  	SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientSettingsChanged, serverClients, this, &CPlayerManager::OnClientSettingsChanged, true);
    1.35 +	SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, ServerActivate, gamedll, this, &CPlayerManager::OnServerActivate, true);
    1.36  
    1.37  	/* Release forwards */
    1.38  	g_Forwards.ReleaseForward(m_clconnect);
    1.39 @@ -67,6 +65,14 @@
    1.40  	delete [] m_Players;
    1.41  }
    1.42  
    1.43 +void CPlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
    1.44 +{
    1.45 +	/* Initialize all players */
    1.46 +	m_maxClients = clientMax;
    1.47 +	m_PlayerCount = 0;
    1.48 +	m_Players = new CPlayer[m_maxClients + 1];
    1.49 +}
    1.50 +
    1.51  bool CPlayerManager::OnClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen)
    1.52  {
    1.53  	cell_t res = 1;