#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
bool locktime;
Handle TankSpawn = null;
public void OnPluginStart()
{
HookEvent("tank_killed", Event_TankKilled, EventHookMode_Pre);
HookEvent("create_panic_event", Event_CreatePanicEvent, EventHookMode_Post);
HookEvent("round_start", EventRoundStart, EventHookMode_Post);
}
public void EventRoundStart(Event event, const char[] name, bool dontBroadcast)
{
locktime = true;
}
public void Event_TankKilled(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("attacker"));
{
char id_player[32];
GetClientName(client, id_player, sizeof(id_player));
{
locktime = false;
int anyclient = GetAnyClient();
if(anyclient == -1)return;
{
L4D_CheatCommand(anyclient, "z_spawn", "mob auto");
L4D_CheatCommand(anyclient, "director_force_panic_event", "");
PrintToChat(anyclient, "\x04%s \x03убил персонажа \x04Танк, \x03тем самым вызвал \x04паническую волну!", id_player);
}
}
}
}
public void Event_CreatePanicEvent(Event event, const char[] name, bool dontBroadcast)
{
if(locktime)return;
{
if (TankSpawn != null)
{
delete(TankSpawn);
TankSpawn = null;
}
TankSpawn = CreateTimer(15.0, l4d_spawntank, _);
locktime = true;
}
}
public Action l4d_spawntank(Handle timer)
{
int anyclient = GetAnyClient();
if(anyclient == -1)return Plugin_Continue;
{
L4D_CheatCommand(anyclient, "z_spawn", "tank auto");
PrintToChat(anyclient, "\x03 За истребление \x04паническую волны, \x03появился новый \x04Танк.");
}
TankSpawn = null;
return Plugin_Stop;
}
stock int GetAnyClient()
{
int i;
for (i = 1; i <= GetMaxClients(); i++)
{
if (IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
return i;
}
return 0;
}
stock void L4D_CheatCommand(int client, char [] command, char arguments[]="")
{
if (client)
{
int userflags = GetUserFlagBits(client);
SetUserFlagBits(client, ADMFLAG_ROOT);
int flags = GetCommandFlags(command);
SetCommandFlags(command, flags & ~FCVAR_CHEAT);
FakeClientCommand(client, "%s %s", command, arguments);
SetCommandFlags(command, flags);
SetUserFlagBits(client, userflags);
}
}