now disables properly and added semi support for specs

This commit is contained in:
christian 2021-04-12 21:02:40 +02:00
parent a988847775
commit 2fde5f3061

View File

@ -42,7 +42,7 @@ public void OnPluginStart()
g_hCVar_HideEnabled.AddChangeHook(OnConVarChanged);
RegAdminCmd("sm_hide", Command_Hide, ADMFLAG_RCON);
RegConsoleCmd("sm_hide", Command_Hide, "Hiding humans away");
for(int client = 1; client <= MaxClients; client++)
{
@ -91,9 +91,6 @@ public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] n
//----------------------------------------------------------------------------------------------------
public void OnClientPutInServer(int client)
{
if(!g_bHideEnabled)
return;
SDKHook(client, SDKHook_SetTransmit, Hook_SetTransmit);
}
@ -139,13 +136,20 @@ public Action Command_Hide(int client, int args)
GetCmdArg(1, sArgs, sizeof(sArgs));
iDistance = StringToInt(sArgs);
}
if (IsPlayerAlive(client) && ZR_IsClientZombie(client))
{
ReplyToCommand(client, "You are a zombie and therefore need to see the humans.");
return Plugin_Handled;
}
if((iDistance == 0) || (iDistance < g_hCVar_HideMinimumDistance.IntValue) || (iDistance > g_hCVar_HideMaximumDistance.IntValue))
{
ReplyToCommand(client, "[Hide] Wrong input! Allowed range: %d-%d", g_hCVar_HideMinimumDistance.IntValue, g_hCVar_HideMaximumDistance.IntValue);
return Plugin_Handled;
}
if (!IsPlayerAlive(client))
ReplyToCommand(client, "[Hide] All Humans are now hidden.");
else
ReplyToCommand(client, "[Hide] Humans within range %d are now hidden.", iDistance);
g_iHideDistance[client] = iDistance * iDistance;
return Plugin_Handled;
@ -161,12 +165,30 @@ public Action UpdateHide(Handle timer)
for(int client = 1; client <= MaxClients; client++)
{
if(!IsClientInGame(client))
continue;
if(!g_iHideDistance[client])
{
for(int target = 1; target <= MaxClients; target++)
{
if(target != client && IsClientInGame(target) && IsPlayerAlive(target) && ZR_IsClientHuman(target))
g_bHidePlayers[client][target] = false;
}
continue;
if(!IsClientInGame(client) || !IsPlayerAlive(client) || !ZR_IsClientHuman(client))
}
if (!IsPlayerAlive(client))
{
for(int target = 1; target <= MaxClients; target++)
{
if(target != client && IsClientInGame(target) && IsPlayerAlive(target) && ZR_IsClientHuman(target))
{
g_bHidePlayers[client][target] = true
}
}
continue;
}
if (!ZR_IsClientHuman(client))
continue;
float fOriginClient[3];
float fOriginTarget[3];