KnifeMadness: Fix random trigger timer shenanigans.

This commit is contained in:
zaCade 2019-02-24 12:24:03 +01:00
parent 7316892835
commit f420fda320

View File

@ -33,9 +33,10 @@ public void OnPluginStart()
{ {
g_hCVar_Delay = CreateConVar("sm_knife_madness_kill_delay", "3", "Delay before ZMs die after being knifed by a human.", 0, true, 0.0); g_hCVar_Delay = CreateConVar("sm_knife_madness_kill_delay", "3", "Delay before ZMs die after being knifed by a human.", 0, true, 0.0);
HookEvent("player_spawn", OnClientSpawn); HookEvent("player_spawn", OnClientSpawn);
HookEvent("player_hurt", OnClientHurt); HookEvent("player_hurt", OnClientHurt);
HookEvent("round_start", OnRoundStart); HookEvent("round_start", OnRoundStart);
HookEvent("round_end", OnRoundEnd);
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
@ -85,25 +86,21 @@ public void OnClientHurt(Event hEvent, const char[] sEvent, bool bDontBroadcast)
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{ {
ResetTriggers(); g_hTriggerTimer = CreateTimer(GetRandomFloat(12.0, 50.0), SpecialTrigger, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
}
if (g_hTriggerTimer != INVALID_HANDLE) //----------------------------------------------------------------------------------------------------
{ // Purpose:
PrintToChatAll("trigger active, needs kill"); //----------------------------------------------------------------------------------------------------
KillTimer(g_hTriggerTimer); public void OnRoundEnd(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{
if (g_hTriggerTimer != INVALID_HANDLE && CloseHandle(g_hTriggerTimer))
g_hTriggerTimer = INVALID_HANDLE; g_hTriggerTimer = INVALID_HANDLE;
}
if (g_hTriggerResetTimer != INVALID_HANDLE) if (g_hTriggerResetTimer != INVALID_HANDLE && CloseHandle(g_hTriggerResetTimer))
{
PrintToChatAll("reset active, needs kill");
KillTimer(g_hTriggerResetTimer);
g_hTriggerResetTimer = INVALID_HANDLE; g_hTriggerResetTimer = INVALID_HANDLE;
}
float fRandomInterval = GetRandomFloat(12.0, 50.0); ResetTriggers();
g_hTriggerTimer = CreateTimer(fRandomInterval, SpecialTrigger, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
g_hTriggerResetTimer = CreateTimer(fRandomInterval + 10.0, ResetTriggerTimer, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
@ -111,6 +108,9 @@ public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
public Action SpecialTrigger(Handle timer) public Action SpecialTrigger(Handle timer)
{ {
g_hTriggerTimer = CreateTimer(GetRandomFloat(15.0, 45.0), SpecialTrigger, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
EmitGameSoundToAll("Bot.Stuck1");
int iRandom = GetRandomInt(0, 8); int iRandom = GetRandomInt(0, 8);
if (iRandom == 0) if (iRandom == 0)
{ {
@ -218,12 +218,8 @@ public Action SpecialTrigger(Handle timer)
} }
} }
} }
EmitGameSoundToAll("Bot.Stuck1");
g_hTriggerTimer = INVALID_HANDLE;
float fRandomInterval = GetRandomFloat(11.0, 60.0); g_hTriggerResetTimer = CreateTimer(10.0, ResetTriggerTimer, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
g_hTriggerTimer = CreateTimer(fRandomInterval, SpecialTrigger);
g_hTriggerResetTimer = CreateTimer(fRandomInterval + 10.0, ResetTriggerTimer);
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
@ -232,8 +228,9 @@ public Action SpecialTrigger(Handle timer)
public Action ResetTriggerTimer(Handle timer) public Action ResetTriggerTimer(Handle timer)
{ {
g_hTriggerResetTimer = INVALID_HANDLE; g_hTriggerResetTimer = INVALID_HANDLE;
ResetTriggers();
EmitGameSoundToAll("Bot.Stuck2"); EmitGameSoundToAll("Bot.Stuck2");
ResetTriggers();
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
@ -241,7 +238,6 @@ public Action ResetTriggerTimer(Handle timer)
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
public void ResetTriggers() public void ResetTriggers()
{ {
ServerCommand("sv_gravity 800");
for (int client = 1; client <= MaxClients; client++) for (int client = 1; client <= MaxClients; client++)
{ {
if (IsValidClient(client, false) && IsPlayerAlive(client)) if (IsValidClient(client, false) && IsPlayerAlive(client))
@ -254,10 +250,12 @@ public void ResetTriggers()
GivePlayerItem(client, "weapon_knife"); GivePlayerItem(client, "weapon_knife");
} }
} }
ServerCommand("sm plugins unload disabled/autobhop"); ServerCommand("sm plugins unload disabled/autobhop");
ServerCommand("sv_friction 4");
ServerCommand("sv_accelerate 5"); ServerCommand("sv_accelerate 5");
ServerCommand("sv_airaccelerate 10"); ServerCommand("sv_airaccelerate 10");
ServerCommand("sv_friction 4");
ServerCommand("sv_gravity 800");
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------