1.1 --- a/core/PlayerManager.cpp Sun Aug 19 15:11:49 2007 +0000
1.2 +++ b/core/PlayerManager.cpp Sun Aug 19 15:44:36 2007 +0000
1.3 @@ -65,11 +65,6 @@
1.4 int client = g_Players.GetClientOfUserId(userid);
1.5 if (client)
1.6 {
1.7 -#if defined CLIENT_DEBUG
1.8 - g_Logger.LogMessage("[CL_DEBUG] KickPlayerTimer (userid %d) (client %d)",
1.9 - client,
1.10 - userid);
1.11 -#endif
1.12 CPlayer *player = g_Players.GetPlayerByIndex(client);
1.13 player->Kick("Your name is reserved by SourceMod; set your password to use it.");
1.14 }
1.15 @@ -125,34 +120,8 @@
1.16 PostAdminCheck = g_Forwards.CreateForward("OnClientPostAdminCheck", ET_Ignore, 1, p1);
1.17 }
1.18
1.19 -#if defined CLIENT_DEBUG
1.20 -SH_DECL_HOOK1_void(IServerGameEnts, FreeContainingEntity, SH_NOATTRIB, false, edict_t *);
1.21 -
1.22 -void FreeContainingEntity(edict_t *pEdict)
1.23 -{
1.24 - if (!pEdict || pEdict->IsFree())
1.25 - {
1.26 - return;
1.27 - }
1.28 -
1.29 - int client = engine->IndexOfEdict(pEdict);
1.30 - if (client >= 1 && client <= g_Players.MaxClients())
1.31 - {
1.32 - g_Logger.LogMessage("[CL_DEBUG] FreeContainingEntity(%p) (client %d) (pUnknown %p)",
1.33 - pEdict,
1.34 - client,
1.35 - pEdict->GetUnknown());
1.36 - }
1.37 -}
1.38 -#endif
1.39 -
1.40 void PlayerManager::OnSourceModShutdown()
1.41 {
1.42 -#if defined CLIENT_DEBUG
1.43 - IServerGameEnts *ents = (IServerGameEnts *)(g_SMAPI->serverFactory(false))(INTERFACEVERSION_SERVERGAMEENTS, NULL);
1.44 - SH_ADD_HOOK_STATICFUNC(IServerGameEnts, FreeContainingEntity, ents, FreeContainingEntity, false);
1.45 -#endif
1.46 -
1.47 SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, serverClients, this, &PlayerManager::OnClientConnect, false);
1.48 SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientPutInServer, serverClients, this, &PlayerManager::OnClientPutInServer, true);
1.49 SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, serverClients, this, &PlayerManager::OnClientDisconnect, false);
1.50 @@ -358,10 +327,6 @@
1.51 {
1.52 int client = engine->IndexOfEdict(pEntity);
1.53
1.54 -#if defined CLIENT_DEBUG
1.55 - g_Logger.LogMessage("[CL_DEBUG] OnClientConnect(%p, %s, %s) (client %d)", pEntity, pszName, pszAddress, client);
1.56 -#endif
1.57 -
1.58 List<IClientListener *>::iterator iter;
1.59 IClientListener *pListener = NULL;
1.60 for (iter=m_hooks.begin(); iter!=m_hooks.end(); iter++)
1.61 @@ -403,15 +368,6 @@
1.62 bool orig_value = META_RESULT_ORIG_RET(bool);
1.63 CPlayer *pPlayer = GetPlayerByIndex(client);
1.64
1.65 -#if defined CLIENT_DEBUG
1.66 - g_Logger.LogMessage("[CL_DEBUG] OnClientConnect_Post(%p, %s, %s) (client %d) (orig_value %d)",
1.67 - pEntity,
1.68 - pszName,
1.69 - pszAddress,
1.70 - client,
1.71 - orig_value);
1.72 -#endif
1.73 -
1.74 if (orig_value)
1.75 {
1.76 List<IClientListener *>::iterator iter;
1.77 @@ -435,10 +391,6 @@
1.78 cell_t res;
1.79 int client = engine->IndexOfEdict(pEntity);
1.80
1.81 -#if defined CLIENT_DEBUG
1.82 - g_Logger.LogMessage("[CL_DEBUG] OnClientPutInServer(%p, %s) (client %d)", pEntity, playername, client);
1.83 -#endif
1.84 -
1.85 CPlayer *pPlayer = GetPlayerByIndex(client);
1.86 /* If they're not connected, they're a bot */
1.87 if (!pPlayer->IsConnected())
1.88 @@ -469,11 +421,6 @@
1.89 {
1.90 pListener = (*iter);
1.91 pListener->OnClientAuthorized(client, authid);
1.92 - /* See if bot was kicked */
1.93 - if (!pPlayer->IsConnected())
1.94 - {
1.95 - return;
1.96 - }
1.97 }
1.98 /* Finally, tell plugins */
1.99 if (m_clauth->GetFunctionCount())
1.100 @@ -481,16 +428,8 @@
1.101 m_clauth->PushCell(client);
1.102 m_clauth->PushString(authid);
1.103 m_clauth->Execute(NULL);
1.104 - if (!pPlayer->IsConnected())
1.105 - {
1.106 - return;
1.107 - }
1.108 }
1.109 pPlayer->Authorize_Post();
1.110 - if (!pPlayer->IsConnected())
1.111 - {
1.112 - return;
1.113 - }
1.114 }
1.115
1.116 if (playerinfo)
1.117 @@ -511,9 +450,8 @@
1.118 }
1.119 }
1.120
1.121 -#if defined CLIENT_DEBUG
1.122 - g_Logger.LogMessage("[CL_DEBUG] OnClientPutInServer() (m_Info %p)", pPlayer->m_Info);
1.123 -#endif
1.124 + m_Players[client].Connect();
1.125 + m_PlayerCount++;
1.126
1.127 List<IClientListener *>::iterator iter;
1.128 IClientListener *pListener = NULL;
1.129 @@ -521,15 +459,8 @@
1.130 {
1.131 pListener = (*iter);
1.132 pListener->OnClientPutInServer(client);
1.133 - /* See if player was kicked */
1.134 - if (!pPlayer->IsConnected())
1.135 - {
1.136 - return;
1.137 - }
1.138 }
1.139
1.140 - m_Players[client].Connect();
1.141 - m_PlayerCount++;
1.142 m_clputinserver->PushCell(client);
1.143 m_clputinserver->Execute(&res, NULL);
1.144 }
1.145 @@ -539,11 +470,8 @@
1.146 /* Disconnect all bots still in game */
1.147 for (int i=1; i<=m_maxClients; i++)
1.148 {
1.149 - if (m_Players[i].IsConnected() && m_Players[i].IsFakeClient())
1.150 + if (m_Players[i].IsConnected())
1.151 {
1.152 -#if defined CLIENT_DEBUG
1.153 - g_Logger.LogMessage("[CL_DEBUG] OnSourceModLevelChange() (client %d)", i);
1.154 -#endif
1.155 OnClientDisconnect(m_Players[i].GetEdict());
1.156 }
1.157 }
1.158 @@ -554,17 +482,13 @@
1.159 cell_t res;
1.160 int client = engine->IndexOfEdict(pEntity);
1.161
1.162 -#if defined CLIENT_DEBUG
1.163 - g_Logger.LogMessage("[CL_DEBUG] OnClientDisconnect(%p) (client %d) (pUnknown %p)",
1.164 - pEntity,
1.165 - client,
1.166 - pEntity->GetUnknown());
1.167 -#endif
1.168 -
1.169 if (m_Players[client].IsConnected())
1.170 {
1.171 m_cldisconnect->PushCell(client);
1.172 m_cldisconnect->Execute(&res, NULL);
1.173 + } else {
1.174 + /* We don't care, prevent a double call */
1.175 + return;
1.176 }
1.177
1.178 if (m_Players[client].IsInGame())
1.179 @@ -610,13 +534,6 @@
1.180 cell_t res;
1.181 int client = engine->IndexOfEdict(pEntity);
1.182
1.183 -#if defined CLIENT_DEBUG
1.184 - g_Logger.LogMessage("[CL_DEBUG] OnClientDisconnect(%p) (client %d) (pUnknown %p)",
1.185 - pEntity,
1.186 - client,
1.187 - pEntity->GetUnknown());
1.188 -#endif
1.189 -
1.190 m_cldisconnect_post->PushCell(client);
1.191 m_cldisconnect_post->Execute(&res, NULL);
1.192
1.193 @@ -939,7 +856,12 @@
1.194
1.195 const char *CPlayer::GetName()
1.196 {
1.197 - return (m_Info) ? m_Info->GetName(): m_Name.c_str();
1.198 + if (m_Info && m_pEdict->GetUnknown())
1.199 + {
1.200 + return m_Info->GetName();
1.201 + }
1.202 +
1.203 + return m_Name.c_str();
1.204 }
1.205
1.206 const char *CPlayer::GetIPAddress()
1.207 @@ -959,7 +881,7 @@
1.208
1.209 bool CPlayer::IsInGame()
1.210 {
1.211 - return m_IsInGame;
1.212 + return m_IsInGame && (m_pEdict->GetUnknown() != NULL);
1.213 }
1.214
1.215 bool CPlayer::IsConnected()
1.216 @@ -974,7 +896,12 @@
1.217
1.218 IPlayerInfo *CPlayer::GetPlayerInfo()
1.219 {
1.220 - return m_Info;
1.221 + if (m_pEdict->GetUnknown())
1.222 + {
1.223 + return m_Info;
1.224 + }
1.225 +
1.226 + return NULL;
1.227 }
1.228
1.229 bool CPlayer::IsFakeClient()