tf2-scripts/friendly_fire_toggle.sp

138 lines
3.3 KiB
SourcePawn

#include <sourcemod>
#include <tf2>
public Plugin myinfo =
{
name = "Toggle Friendly Fire",
author = "Retard",
description = "Toggles Friendly Fire On/Off at random moments.",
version = "1.0",
url = "https://deadzone.lol"
};
Handle timerToggleFFOn = null;
Handle timerToggleFFOff = null;
bool g_bFriendlyFire = false;
bool g_bPluginEnabled = true;
public void OnPluginStart()
{
RegConsoleCmd("sm_friendlyfire", CmdToggleFriendlyFire, "Toggle the Friendly Fire script. Admins with 'z' flag only.");
StartFFOnTimer();
}
public Action CmdToggleFriendlyFire(int client, int args)
{
if (CheckCommandAccess(client, "sm_friendlyfire", ADMFLAG_ROOT))
{
g_bPluginEnabled = !g_bPluginEnabled;
if (g_bPluginEnabled)
{
PrintToChat(client, "Friendly Fire script has been enabled!");
StartFFOnTimer();
}
else
{
if (g_bFriendlyFire)
{
Handle hCvar = FindConVar("mp_friendlyfire");
if (hCvar != INVALID_HANDLE)
{
SetConVarInt(hCvar, 0);
}
g_bFriendlyFire = false;
PrintToChatAll("[DEBUG] Friendly Fire is now OFF");
}
PrintToChat(client, "Friendly Fire script has been disabled!");
if (timerToggleFFOn != null)
{
KillTimer(timerToggleFFOn);
timerToggleFFOn = null;
}
if (timerToggleFFOff != null)
{
KillTimer(timerToggleFFOff);
timerToggleFFOff = null;
}
}
}
else
{
PrintToChat(client, "You do not have permission to use this command.");
}
return Plugin_Handled;
}
void StartFFOnTimer()
{
if (!g_bPluginEnabled)
return;
if (timerToggleFFOn != null)
KillTimer(timerToggleFFOn);
float randomTimeToTurnOn = GetRandomFloat(60.0, 600.0); // Between 1 and 10 minutes
timerToggleFFOn = CreateTimer(randomTimeToTurnOn, TurnOnFriendlyFire);
}
public Action TurnOnFriendlyFire(Handle timer, any data)
{
g_bFriendlyFire = true;
Handle hCvar = FindConVar("mp_friendlyfire");
if(hCvar == INVALID_HANDLE)
{
SetFailState("Failed to find 'mp_friendlyfire' cvar!");
}
SetConVarInt(hCvar, 1);
PrintToChatAll("[DEBUG] Friendly Fire is now ON");
StartFFOffTimer();
return Plugin_Continue;
}
void StartFFOffTimer()
{
if (timerToggleFFOff != null)
KillTimer(timerToggleFFOff);
float randomTimeToTurnOff = GetRandomFloat(30.0, 150.0); // Between 30 seconds and 2.5 minutes
timerToggleFFOff = CreateTimer(randomTimeToTurnOff, TurnOffFriendlyFire);
}
public Action TurnOffFriendlyFire(Handle timer, any data)
{
g_bFriendlyFire = false;
Handle hCvar = FindConVar("mp_friendlyfire");
if(hCvar == INVALID_HANDLE)
{
SetFailState("Failed to find 'mp_friendlyfire' cvar!");
}
SetConVarInt(hCvar, 0);
PrintToChatAll("[DEBUG] Friendly Fire is now OFF");
StartFFOnTimer();
return Plugin_Continue;
}
public void OnPluginEnd()
{
if(timerToggleFFOn != null)
{
KillTimer(timerToggleFFOn);
}
if(timerToggleFFOff != null)
{
KillTimer(timerToggleFFOff);
}
}