core/PlayerManager.cpp
changeset 1357 4d85f4ce87d1
parent 1355 c15901d5c40b
child 1358 b7329d08cd95
     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()