tf2-scripts/friendly_fire_toggle.sp

103 lines
2.4 KiB
SourcePawn
Raw Permalink Normal View History

2023-07-30 02:15:56 -04:00
#include <sourcemod>
#include <tf2>
2023-08-08 00:06:20 -04:00
#define TOGGLE_TIME 612.0
#define MIN_FF_DURATION 30
#define MAX_FF_DURATION 270
2023-07-30 02:15:56 -04:00
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-08-08 00:06:20 -04:00
Handle timerToggle = 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-08-08 00:06:20 -04:00
StartToggleTimer();
2023-07-30 02:15:56 -04:00
}
public Action CmdToggleFriendlyFire(int client, int args)
{
if (CheckCommandAccess(client, "sm_friendlyfire", ADMFLAG_ROOT))
{
2023-08-08 00:06:20 -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-08-08 00:06:20 -04:00
StartToggleTimer();
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-08-08 00:06:20 -04:00
if (timerToggle != null)
2023-07-30 02:44:28 -04:00
{
2023-08-08 00:06:20 -04:00
KillTimer(timerToggle);
timerToggle = 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-08-08 00:06:20 -04:00
void StartToggleTimer()
2023-07-30 02:15:56 -04:00
{
if (!g_bPluginEnabled)
return;
2023-08-08 00:06:20 -04:00
if (timerToggle != null)
KillTimer(timerToggle);
2023-07-30 02:15:56 -04:00
2023-08-08 00:06:20 -04:00
timerToggle = CreateTimer(TOGGLE_TIME, ToggleFriendlyFire);
2023-07-30 02:15:56 -04:00
}
2023-08-08 00:06:20 -04:00
public Action ToggleFriendlyFire(Handle timer, any data)
2023-07-30 02:15:56 -04:00
{
2023-08-08 00:06:20 -04:00
g_bFriendlyFire = !g_bFriendlyFire;
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-08-08 00:06:20 -04:00
SetConVarInt(hCvar, g_bFriendlyFire ? 1 : 0);
2023-07-30 02:44:28 -04:00
2023-08-08 00:06:20 -04:00
PrintToChatAll("[DEBUG] Friendly Fire is now %s", g_bFriendlyFire ? "ON" : "OFF");
2023-07-30 02:44:28 -04:00
2023-08-08 00:06:20 -04:00
StartToggleTimer();
2023-07-30 02:15:56 -04:00
return Plugin_Continue;
}
public void OnPluginEnd()
{
2023-08-08 00:06:20 -04:00
if(timerToggle != null)
2023-07-30 02:15:56 -04:00
{
2023-08-08 00:06:20 -04:00
KillTimer(timerToggle);
2023-07-30 02:15:56 -04:00
}
}