#pragma semicolon 1
#pragma newdecls required
#include <sdktools_sound>
#include <sdktools_stringtables>
static const char g_szSound[][] =
{
"sound/kosmicheskiy/c4_explode/3.mp3",
"sound/kosmicheskiy/c4_explode/4.mp3"
};
Handle
hTimer;
float
fTimer;
int
iPos;
public Plugin myinfo =
{
name = "C4 10 seconds",
version = "1.1.0 (rewritten by Grey83)",
description = "Воспроизведение музыки за 10 секунд до взрыва бомбы",
author = "Ало, Ва-Вадик?",
url = "https://vk.com/kopojlebckuu_7pelllhuk"
}
public void OnPluginStart()
{
ConVar cvar = FindConVar("mp_c4timer");
if(!cvar) SetFailState("Can't find convar 'mp_c4timer'!");
cvar.AddChangeHook(CVarChange);
CVarChange(cvar, "", "");
HookEvent("bomb_planted", Event_BombPlanted, EventHookMode_Pre);
HookEvent("round_start", Event_End, EventHookMode_PostNoCopy);
HookEvent("round_end", Event_End, EventHookMode_PostNoCopy);
}
public void CVarChange(ConVar cvar, const char[] oldValue, const char[] newValue)
{
fTimer = cvar.FloatValue - 10;
}
public void OnMapStart()
{
hTimer = null;
for(int i; i < sizeof(g_szSound); i++)
{
AddFileToDownloadsTable(g_szSound[i]);
PrecacheSound(g_szSound[i][6]);
}
}
public void Event_BombPlanted(Event event, const char[] name, bool dontBroadcast)
{
if(fTimer >= 0.0) hTimer = CreateTimer(fTimer, Timer_Countdown, _, TIMER_FLAG_NO_MAPCHANGE);
}
public Action Timer_Countdown(Handle timer)
{
hTimer = null;
int i;
while((i = GetRandomInt(0, sizeof(g_szSound)-1)) == iPos) {}
iPos = i;
EmitSoundToAll(g_szSound[i][6]);
return Plugin_Stop;
}
public void Event_End(Event event, const char[] name, bool dontBroadcast)
{
if (hTimer) CloseHandle(hTimer);
}