#include <sourcemod>
#include <cstrike>
new Handle:hTimer[MAXPLAYERS + 1] = INVALID_HANDLE;
new Count[MAXPLAYERS + 1] = 0;
new String:Num[][] = {"10", "20", "30", "40", "50"};
public OnPluginStart()
{
HookEvent("player_team", Event_OnPlayerTeam);
HookEvent("player_death", Event_OnPlayerDeath);
}
public Event_OnPlayerTeam(Handle:event, const String:name[], bool:silent)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (client > 0)
{
new team = GetEventInt(event, "team");
if (team > 1)
{
CreateTimer(0.5, Timer, client, TIMER_FLAG_NO_MAPCHANGE);
}
else
{
if (GetEventInt(event, "oldteam") > 0)
{
TimerKill(client);
}
}
}
}
public Event_OnPlayerDeath(Handle:event, const String:name[], bool:silent)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (client > 0)
{
if (GetClientTeam(client) > 1)
{
hTimer[client] = CreateTimer(1.0, CallBackTimer, client, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
Count[client] = 0;
}
}
}
public Action:Timer(Handle:timer, any:client)
{
if (IsClientInGame(client) && GetClientTeam(client) > 1 && !IsPlayerAlive(client))
{
CS_RespawnPlayer(client);
}
}
public Action:CallBackTimer(Handle:timer, any:client)
{
if (GetClientTeam(client) < 2 || IsPlayerAlive(client))
{
TimerKill(client);
}
else
{
Count[client]++;
for (new i = 0; i < 5; i++)
{
if (Count[client] == StringToInt(Num[i]))
{
PrintCenterText(client, "Возрождение через: %d", Count[client]);
break;
}
}
if (Count[client] >= 60)
{
TimerKill(client);
CS_RespawnPlayer(client);
}
}
}
stock TimerKill(client)
{
if (hTimer[client] != INVALID_HANDLE)
{
KillTimer(hTimer[client]);
hTimer[client] = INVALID_HANDLE;
}
}