new const commands[][] = {
"killsound", "say /killsound", "say_team /killsound" /* Команды для доступа к меню. */
new const EVENT_SOUND[][] =
HEADSHOT_SOUND, FIRSTBLOOD_SOUND
new const KILLSTREAK_SOUND[][] =
"killstreak/doublekill.wav",
"killstreak/triplekill.wav",
"killstreak/multikill.wav",
"killstreak/megakill.wav",
"killstreak/ultrakill.wav",
"killstreak/monsterkill.wav",
"killstreak/killingspree.wav",
"killstreak/wickedsick.wav",
"killstreak/rampage.wav",
"killstreak/ludacrisskill.wav",
"killstreak/godlike.wav",
"killstreak/holyshit.wav"
const keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
enum _:Data {SOUND, MESSAGE}
new bool:g_FirstKill, bool:g_Switch[MAX_PLAYERS +1][Data]
precache_list(sound, EVENT_SOUND)
precache_list(sound, KILLSTREAK_SOUND)
register_plugin("Kill Streak", "1.0", "AcE, Vaqtincha")
register_menu("Menu", keys, "show_kill_streak_menu")
register_cmd_list(clcmd, commands, "kill_streak_menu")
register_event_ex("DeathMsg", "ExEventDeathMsg", RegisterEvent_Global, "1>0")
register_event_ex("HLTV", "ExEventStartRound", RegisterEvent_Global, "1=0", "2=0")
public client_putinserver(id)
arrayset(g_Switch[id], 0, Data)
g_Switch[id][SOUND] = true
g_Switch[id][MESSAGE] = true
public client_disconnected(id)
arrayset(g_Switch[id], 0, Data)
public ExEventStartRound() g_FirstKill = false
public kill_streak_menu(const id)
if (!is_user_connected(id))
static menu[MAX_MENU_LENGTH]
static const szSwitch[2][] = {{"\rВыкл"}, {"\yВкл"}}
formatex(menu, charsmax(menu), "\r[\yKill Streak\r] \wМеню^n\
\r1. \wЗвуки убийств: %s^n\
\r2. \wХуд сообщения: %s^n\
\r0. \wВыход", szSwitch[g_Switch[id][SOUND]], szSwitch[g_Switch[id][MESSAGE]]
show_menu(id, keys, menu, -1, "Menu")
public show_kill_streak_menu(const id, const key)
SendAudio(id, fmt("sound/%s", SWITCH_SOUND), PITCH_NORM)
case 0: g_Switch[id][SOUND] ^= 1
case 1: g_Switch[id][MESSAGE] ^= 1
return kill_streak_menu(id)
static killer, victim, bool:is_headshot
killer = read_data(1), victim = read_data(2)
if (!(0 < killer <= MaxClients) || killer == victim || !is_user_connected(victim) || !is_user_connected(killer))
if (get_user_team(killer) == get_user_team(victim))
if (!g_SyncHudMsg) g_SyncHudMsg = CreateHudSyncObj()
ClearSyncHud(killer, g_SyncHudMsg)
set_hudmessage(HUD_RGB, HUD_X_Y, 0, 0.0, HUD_MSG_TIME)
static Sound_Id, Float:Time, Float:LastKill[MAX_PLAYERS +1], KillStreak[MAX_PLAYERS +1]
static const KILLSTREAK_MESSAGE[][] =
"", "Double-Kill!", "Triple-Kill!", "Multi-Kill!", "Mega-Kill!",
"Ultra-Kill!", "Monster-Kill!", "Killing Spree!", "Wicked Sick!",
"Rampage!", "Ludacriss-Kill", "Godlike!", "Holy Shit!"
is_headshot = bool:(read_data(3) == HIT_HEAD)
if (KillStreak[killer] >= sizeof(KILLSTREAK_SOUND) || (Time - LastKill[killer]) > KILLS_COUNT_RESET_DELAY)
if (get_playersnum_ex(GetPlayers_ExcludeDead | GetPlayers_ExcludeHLTV) >= FB_MIN_PLAYERS)
if (g_Switch[killer][MESSAGE])
ShowSyncHudMsg(killer, g_SyncHudMsg, "First-Blood!")
if (g_Switch[killer][SOUND])
client_cmd(killer, "spk ^"%s^"", FIRSTBLOOD_SOUND)
if (g_Switch[killer][MESSAGE])
ShowSyncHudMsg(killer, g_SyncHudMsg, "Headshot!")
if (g_Switch[killer][SOUND])
client_cmd(killer, "spk ^"%s^"", HEADSHOT_SOUND)
if (g_Switch[killer][MESSAGE])
ShowSyncHudMsg(killer, g_SyncHudMsg, "Headshot!")
if (g_Switch[killer][SOUND])
client_cmd(killer, "spk ^"%s^"", HEADSHOT_SOUND)
Sound_Id = clamp(KillStreak[killer] -1, 0, charsmax(KILLSTREAK_SOUND))
if (g_Switch[killer][MESSAGE])
ShowSyncHudMsg(killer, g_SyncHudMsg, "%s", KILLSTREAK_MESSAGE[KillStreak[killer]])
if (g_Switch[killer][SOUND])
client_cmd(killer, "spk ^"%s^"", KILLSTREAK_SOUND[Sound_Id])
if (is_headshot) HsBlood(victim)
get_user_origin(client, iOrigin)
message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
write_byte(TE_BLOODSTREAM)
write_coord(iOrigin[2] +30)
write_coord(random_num(-20, 20))
write_coord(random_num(-20, 20))
write_coord(random_num(50, 300))
write_byte(random_num(100, 200))
message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
write_byte(TE_BLOODSTREAM)
write_coord(iOrigin[2] +10)
write_coord(random_num(-360, 360))
write_coord(random_num(-360, 360))
write_byte(random_num(50, 100))
stock SendAudio(client, audio[], pitch)
if (!mSendAudio) mSendAudio = get_user_msgid("SendAudio")
message_begin(client ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, mSendAudio, _, client)