2023-07-30 02:15:56 -04:00
|
|
|
#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"
|
|
|
|
};
|
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
Handle timerToggleFFOn = null;
|
|
|
|
Handle timerToggleFFOff = null;
|
2023-07-30 02:15:56 -04:00
|
|
|
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.");
|
2023-07-30 02:44:28 -04:00
|
|
|
StartFFOnTimer();
|
2023-07-30 02:15:56 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
public Action CmdToggleFriendlyFire(int client, int args)
|
|
|
|
{
|
|
|
|
if (CheckCommandAccess(client, "sm_friendlyfire", ADMFLAG_ROOT))
|
|
|
|
{
|
2023-07-30 02:24:22 -04:00
|
|
|
g_bPluginEnabled = !g_bPluginEnabled;
|
2023-07-30 02:15:56 -04:00
|
|
|
|
|
|
|
if (g_bPluginEnabled)
|
|
|
|
{
|
|
|
|
PrintToChat(client, "Friendly Fire script has been enabled!");
|
2023-07-30 02:44:28 -04:00
|
|
|
StartFFOnTimer();
|
2023-07-30 02:15:56 -04:00
|
|
|
}
|
|
|
|
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!");
|
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
if (timerToggleFFOn != null)
|
2023-07-30 02:15:56 -04:00
|
|
|
{
|
2023-07-30 02:44:28 -04:00
|
|
|
KillTimer(timerToggleFFOn);
|
|
|
|
timerToggleFFOn = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (timerToggleFFOff != null)
|
|
|
|
{
|
|
|
|
KillTimer(timerToggleFFOff);
|
|
|
|
timerToggleFFOff = null;
|
2023-07-30 02:15:56 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PrintToChat(client, "You do not have permission to use this command.");
|
|
|
|
}
|
|
|
|
return Plugin_Handled;
|
|
|
|
}
|
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
void StartFFOnTimer()
|
2023-07-30 02:15:56 -04:00
|
|
|
{
|
|
|
|
if (!g_bPluginEnabled)
|
|
|
|
return;
|
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
if (timerToggleFFOn != null)
|
|
|
|
KillTimer(timerToggleFFOn);
|
2023-07-30 02:15:56 -04:00
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
float randomTimeToTurnOn = GetRandomFloat(60.0, 600.0); // Between 1 and 10 minutes
|
|
|
|
timerToggleFFOn = CreateTimer(randomTimeToTurnOn, TurnOnFriendlyFire);
|
2023-07-30 02:15:56 -04:00
|
|
|
}
|
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
public Action TurnOnFriendlyFire(Handle timer, any data)
|
2023-07-30 02:15:56 -04:00
|
|
|
{
|
2023-07-30 02:44:28 -04:00
|
|
|
g_bFriendlyFire = true;
|
2023-07-30 02:15:56 -04:00
|
|
|
|
|
|
|
Handle hCvar = FindConVar("mp_friendlyfire");
|
|
|
|
if(hCvar == INVALID_HANDLE)
|
|
|
|
{
|
|
|
|
SetFailState("Failed to find 'mp_friendlyfire' cvar!");
|
|
|
|
}
|
2023-07-30 02:44:28 -04:00
|
|
|
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);
|
2023-07-30 02:15:56 -04:00
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
PrintToChatAll("[DEBUG] Friendly Fire is now OFF");
|
2023-07-30 02:15:56 -04:00
|
|
|
|
2023-07-30 02:44:28 -04:00
|
|
|
StartFFOnTimer();
|
2023-07-30 02:15:56 -04:00
|
|
|
|
|
|
|
return Plugin_Continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void OnPluginEnd()
|
|
|
|
{
|
2023-07-30 02:44:28 -04:00
|
|
|
if(timerToggleFFOn != null)
|
|
|
|
{
|
|
|
|
KillTimer(timerToggleFFOn);
|
|
|
|
}
|
|
|
|
if(timerToggleFFOff != null)
|
2023-07-30 02:15:56 -04:00
|
|
|
{
|
2023-07-30 02:44:28 -04:00
|
|
|
KillTimer(timerToggleFFOff);
|
2023-07-30 02:15:56 -04:00
|
|
|
}
|
|
|
|
}
|