extensions/sdktools/hooks.cpp
changeset 4268 3c383c5b1aaa
parent 4141 8ff66ae5ffcc
     1.1 --- a/extensions/sdktools/hooks.cpp	Sat Mar 01 11:00:52 2014 -0500
     1.2 +++ b/extensions/sdktools/hooks.cpp	Sat Mar 01 14:25:35 2014 -0700
     1.3 @@ -116,36 +116,18 @@
     1.4  		return;
     1.5  	}
     1.6  
     1.7 -	SH_ADD_MANUALHOOK(PlayerRunCmdHook, pEntity, SH_MEMBER(this, &CHookManager::PlayerRunCmd), false);
     1.8 -}
     1.9 -
    1.10 -void CHookManager::OnClientDisconnecting(int client)
    1.11 -{
    1.12 -	if (!PRCH_enabled)
    1.13 -		return;
    1.14 -
    1.15 -	if (!PRCH_used)
    1.16 -		return;
    1.17 -
    1.18 -	edict_t *pEdict = PEntityOfEntIndex(client);
    1.19 -	if (!pEdict)
    1.20 +	CVTableHook hook(pEntity);
    1.21 +	for (size_t i = 0; i < m_runUserCmdHooks.length(); ++i)
    1.22  	{
    1.23 -		return;
    1.24 +		if (hook == m_runUserCmdHooks[i])
    1.25 +		{
    1.26 +			return;
    1.27 +		}
    1.28  	}
    1.29  
    1.30 -	IServerUnknown *pUnknown = pEdict->GetUnknown();
    1.31 -	if (!pUnknown)
    1.32 -	{
    1.33 -		return;
    1.34 -	}
    1.35 -
    1.36 -	CBaseEntity *pEntity = pUnknown->GetBaseEntity();
    1.37 -	if (!pEntity)
    1.38 -	{
    1.39 -		return;
    1.40 -	}
    1.41 -
    1.42 -	SH_REMOVE_MANUALHOOK(PlayerRunCmdHook, pEntity, SH_MEMBER(this, &CHookManager::PlayerRunCmd), false);
    1.43 +	int hookid = SH_ADD_MANUALVPHOOK(PlayerRunCmdHook, pEntity, SH_MEMBER(this, &CHookManager::PlayerRunCmd), false);
    1.44 +	hook.SetHookID(hookid);
    1.45 +	m_runUserCmdHooks.append(new CVTableHook(hook));
    1.46  }
    1.47  
    1.48  void CHookManager::PlayerRunCmd(CUserCmd *ucmd, IMoveHelper *moveHelper)
    1.49 @@ -245,15 +227,12 @@
    1.50  	if (m_usercmdsFwd->GetFunctionCount())
    1.51  		return;
    1.52  
    1.53 -	int MaxClients = playerhelpers->GetMaxClients();
    1.54 -	for (int i = 1; i <= MaxClients; i++)
    1.55 +	for (size_t i = 0; i < m_runUserCmdHooks.length(); ++i)
    1.56  	{
    1.57 -		if (playerhelpers->GetGamePlayer(i)->IsInGame())
    1.58 -		{
    1.59 -			OnClientDisconnecting(i);
    1.60 -		}
    1.61 +		delete m_runUserCmdHooks[i];
    1.62  	}
    1.63  
    1.64 +	m_runUserCmdHooks.clear();
    1.65  	PRCH_used = false;
    1.66  }
    1.67