PlayerVisibility: 5hz instead of every tick

This commit is contained in:
BotoX 2019-08-21 15:04:23 +02:00
parent 9f6327e615
commit 795c329f16

View File

@ -1,5 +1,4 @@
#include <sourcemod>
#include <sdkhooks>
#include <dhooks>
#undef REQUIRE_PLUGIN
#include <zombiereloaded>
@ -19,6 +18,7 @@ public Plugin myinfo =
// bool CBaseEntity::AcceptInput( const char *szInputName, CBaseEntity *pActivator, CBaseEntity *pCaller, variant_t Value, int outputID )
Handle g_hAcceptInput;
Handle g_hThinkTimer;
ConVar g_CVar_MaxDistance;
ConVar g_CVar_MinFactor;
@ -73,12 +73,25 @@ public void OnPluginStart()
AutoExecConfig(true, "plugin.PlayerVisibility");
HookEvent("player_spawn", Event_Spawn, EventHookMode_Post);
HookEvent("player_death", Event_Death, EventHookMode_Post);
for(int client = 1; client <= MaxClients; client++)
{
if(IsClientInGame(client))
OnClientPutInServer(client);
}
g_hThinkTimer = CreateTimer(0.2, Timer_Think, _, TIMER_REPEAT);
}
public Action Timer_Think(Handle timer)
{
for(int client = 1; client <= MaxClients; client++)
{
if(IsClientInGame(client))
DoClientThink(client);
}
return Plugin_Continue;
}
public void OnAllPluginsLoaded()
@ -88,6 +101,8 @@ public void OnAllPluginsLoaded()
public void OnPluginEnd()
{
KillTimer(g_hThinkTimer);
for(int client = 1; client <= MaxClients; client++)
{
if(IsClientInGame(client))
@ -118,7 +133,6 @@ public void OnClientPutInServer(int client)
g_Client_Alpha[client] = 255;
g_Client_bEnabled[client] = true;
SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
DHookEntity(g_hAcceptInput, false, client);
}
@ -227,6 +241,15 @@ public void Event_Spawn(Event event, const char[] name, bool dontBroadcast)
CreateTimer(0.1, Timer_SpawnPost, client, TIMER_FLAG_NO_MAPCHANGE);
}
public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!client)
return;
g_Client_bEnabled[client] = false;
}
public Action Timer_SpawnPost(Handle timer, int client)
{
if(!IsClientInGame(client) || !IsPlayerAlive(client))
@ -252,7 +275,7 @@ public void ZR_OnClientHumanPost(int client, bool respawn, bool protect)
g_Client_bEnabled[client] = true;
}
public void OnPostThinkPost(int client)
public void DoClientThink(int client)
{
if(!g_Client_bEnabled[client])
return;