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;