core/PlayerManager.cpp
changeset 1996 3f0cd604812b
parent 1993 8c08aaff4d39
child 2042 4a2faafca477
     1.1 --- a/core/PlayerManager.cpp	Sat Apr 12 02:11:16 2008 +0000
     1.2 +++ b/core/PlayerManager.cpp	Sat Apr 12 02:18:03 2008 +0000
     1.3 @@ -134,6 +134,9 @@
     1.4  	PreAdminCheck = g_Forwards.CreateForward("OnClientPreAdminCheck", ET_Event, 1, p1);
     1.5  	PostAdminCheck = g_Forwards.CreateForward("OnClientPostAdminCheck", ET_Ignore, 1, p1);
     1.6  	PostAdminFilter = g_Forwards.CreateForward("OnClientPostAdminFilter", ET_Ignore, 1, p1);
     1.7 +
     1.8 +	m_bIsListenServer = !engine->IsDedicatedServer();
     1.9 +	m_ListenClient = 0;
    1.10  }
    1.11  
    1.12  void PlayerManager::OnSourceModShutdown()
    1.13 @@ -385,7 +388,9 @@
    1.14  		{
    1.15  			m_AuthQueue[++m_AuthQueue[0]] = client;
    1.16  		}
    1.17 -	} else {
    1.18 +	}
    1.19 +	else
    1.20 +	{
    1.21  		RETURN_META_VALUE(MRES_SUPERCEDE, false);
    1.22  	}
    1.23  
    1.24 @@ -415,6 +420,13 @@
    1.25  		}
    1.26  	}
    1.27  
    1.28 +	if (!pPlayer->IsFakeClient() 
    1.29 +		&& m_bIsListenServer
    1.30 +		&& strncmp(pszAddress, "127.0.0.1", 9) == 0)
    1.31 +	{
    1.32 +		m_ListenClient = client;
    1.33 +	}
    1.34 +
    1.35  	return true;
    1.36  }
    1.37  
    1.38 @@ -524,7 +536,9 @@
    1.39  	{
    1.40  		m_cldisconnect->PushCell(client);
    1.41  		m_cldisconnect->Execute(&res, NULL);
    1.42 -	} else {
    1.43 +	}
    1.44 +	else
    1.45 +	{
    1.46  		/* We don't care, prevent a double call */
    1.47  		return;
    1.48  	}
    1.49 @@ -565,6 +579,11 @@
    1.50  
    1.51  	m_Players[client].Disconnect();
    1.52  	m_UserIdLookUp[engine->GetPlayerUserId(pEntity)] = 0;
    1.53 +
    1.54 +	if (m_ListenClient == client)
    1.55 +	{
    1.56 +		m_ListenClient = 0;
    1.57 +	}
    1.58  }
    1.59  
    1.60  void PlayerManager::OnClientDisconnect_Post(edict_t *pEntity)