#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#define MAX_PLAYERS 32
#define SCVAR get_pcvar_string
#define CVAR(%0) get_pcvar_num(g_iCvar[%0])
#define FCVAR(%0) get_pcvar_float(g_iCvar[%0])
#define FIRSTBLOOD 0
#define DOUBLEKILL 1
#define TRIPLE_KILL 2
#define KILLING_SPREE 3
#define DOMINATING 4
#define UNSTOPPABLE 5
#define ULTRA_KILL 6
#define EAGLE_EYE 7
#define OWNAGE 8
#define LUDICROUS_KILL 9
#define HEAD_HUNTER 10
#define WHICKED_SICK 11
#define MONSTER_KILL 12
#define HOLY_SHIT 13
#define GODLIKE 14
#define GRENADE 15
#define KNIFE 16
#define TEAMKILL 17
#define HEADSHOT 18
enum _:TOTAL_CVARS {CVAR_POS,CVAR_RGB};
new bool:g_iKillFirst = true;
new g_iK0, g_iK1, g_iK2, g_iK3, g_iK4, g_iK5, g_iK6, g_iK7, g_iK8, g_iK9, g_iK10, g_iK11, g_iK12, g_iK13, g_iK14, g_iK15, g_iK16, g_iK17, g_iK18;
new g_iKm, g_iKs, g_iKO;
new g_iCvar[TOTAL_CVARS], g_HudColor[3], Float:g_HudPos[2], g_szKillSound[19][324], g_iKillSound[MAX_PLAYERS + 1], g_iMaxPlayers, g_msgHudSync;
public plugin_init()
{
register_plugin("Kill Manager Sound", "1.3", "ShaTalKiN");
RegisterHam(Ham_Killed, "player", "Hamn_Killed", 1);
register_event("HLTV", "EventStartRound", "a", "1=0", "2=0");
register_event("TextMsg", "EventReStartRound", "a", "2&#Game_C", "2&#Game_w");
register_event("DeathMsg", "OnDeath", "a");
register_event("DeathMsg", "OnDeathHeadShot", "a", "3=1");
register_event("DeathMsg", "OnDeathKnife", "a", "4&kni");
g_iMaxPlayers = get_maxplayers();
g_msgHudSync = CreateHudSyncObj();
KsM_Register_Cvars();
register_dictionary("kmansound.txt");
new configsDir[64];
get_configsdir(configsDir, 63);
server_cmd("exec %s/kmansound/kmansound.cfg", configsDir);
set_task(1.0, "LoadSettings");
}
#pragma semicolon 1
public Hamn_Killed(iVictim, iAttacker)
{
new szName[32], szTarget[32];
get_user_name(iAttacker, szName, 32), get_user_name(iVictim, szTarget, 32);
if(get_user_team(iAttacker) == 1 && get_user_team(iVictim) == 2 || get_user_team(iAttacker) == 2 && get_user_team(iVictim) == 1)
{
g_iKillSound[iAttacker]++;
g_iKillSound[iVictim] = 0;
if(g_iKillFirst && g_iKillSound[iAttacker] == get_pcvar_num(g_iK0))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_FIRSTBLOOD", szTarget);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[FIRSTBLOOD]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[FIRSTBLOOD]);
g_iKillFirst = false;
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK1))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_DOUBLEKILL", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[DOUBLEKILL]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[DOUBLEKILL]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK2))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_TRIPLE_KILL", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[TRIPLE_KILL]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[TRIPLE_KILL]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK3))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_KILLING_SPREE", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[KILLING_SPREE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[KILLING_SPREE]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK4))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_DOMINATING", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[DOMINATING]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[DOMINATING]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK5))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_UNSTOPPABLE", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[UNSTOPPABLE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[UNSTOPPABLE]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK6))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_ULTRA_KILL", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[ULTRA_KILL]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[ULTRA_KILL]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK7))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_EAGLE_EYE", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[EAGLE_EYE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[EAGLE_EYE]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK8))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_OWNAGE", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[OWNAGE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[OWNAGE]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK9))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_LUDICROUS_KILL", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[LUDICROUS_KILL]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[LUDICROUS_KILL]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK10))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_HEAD_HUNTER", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[HEAD_HUNTER]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[HEAD_HUNTER]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK11))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_WHICKED_SICK", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[WHICKED_SICK]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[WHICKED_SICK]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK12))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_MONSTER_KILL", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[MONSTER_KILL]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[MONSTER_KILL]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK13))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_HOLY_SHIT", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[HOLY_SHIT]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[HOLY_SHIT]);
}
if(g_iKillSound[iAttacker] == get_pcvar_num(g_iK14))
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_GODLIKE", szName);
if(get_pcvar_num(g_iKs)) client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[GODLIKE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[GODLIKE]);
}
}
if(get_pcvar_num(g_iK17))
{
if(get_user_team(iAttacker) == 1 && get_user_team(iVictim) == 1 || get_user_team(iAttacker) == 2 && get_user_team(iVictim) == 2)
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_TEAMKILL", szName, szTarget);
client_cmd(iAttacker, "spk kmansound/%s.wav", g_szKillSound[TEAMKILL]);
g_iKillSound[iAttacker]--;
}
}
}
public OnDeath()
{
new szName[32], szTarget[32], iWeapon;
new id = read_data(1);
new ids = read_data(2);
get_user_attacker(ids, iWeapon), get_user_name(id, szName, 32), get_user_name(ids, szTarget, 32);
if(get_pcvar_num(g_iK15))
{
if(get_user_team(id) == 1 && get_user_team(ids) == 2 || get_user_team(id) == 2 && get_user_team(ids) == 1)
{
if(!g_iKillFirst)
{
if(iWeapon == CSW_HEGRENADE)
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_GRENADE", szName, szTarget);
if(get_pcvar_num(g_iKs)) client_cmd(id, "spk kmansound/%s.wav", g_szKillSound[GRENADE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[GRENADE]);
}
}
}
}
}
public OnDeathKnife()
{
new id = read_data(1);
new ids = read_data(2);
new szName[32], szTarget[32];
get_user_name(id, szName, 32), get_user_name(ids, szTarget, 32);
if(get_pcvar_num(g_iK16))
{
if(get_user_team(id) == 1 && get_user_team(ids) == 2 || get_user_team(id) == 2 && get_user_team(ids) == 1)
{
if(!g_iKillFirst)
{
set_hudmessage(g_HudColor[0], g_HudColor[1], g_HudColor[2], g_HudPos[0], g_HudPos[1], 0, 6.0, 5.0);
if(get_pcvar_num(g_iKm)) ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "KMANS_KILL_KNIFE", szName, szTarget);
if(get_pcvar_num(g_iKs)) client_cmd(id, "spk kmansound/%s.wav", g_szKillSound[KNIFE]);
else if(!get_pcvar_num(g_iKs)) client_cmd(0, "spk kmansound/%s.wav", g_szKillSound[KNIFE]);
}
}
}
return PLUGIN_CONTINUE;
}
public OnDeathHeadShot()
{
new id = read_data(1);
new ids = read_data(2);
if(get_pcvar_num(g_iK18)) if(get_user_team(id) == 1 && get_user_team(ids) == 2 || get_user_team(id) == 2 && get_user_team(ids) == 1) client_cmd(id, "spk kmansound/%s.wav", g_szKillSound[HEADSHOT]);
return PLUGIN_CONTINUE;
}
public EventStartRound(id)
{
if(get_pcvar_num(g_iKO)) for(new i = 1; i <= g_iMaxPlayers; i++) g_iKillSound[i] = 0;
g_iKillFirst = true;
}
public EventReStartRound(id)
{
for(new i = 1; i <= g_iMaxPlayers; i++) g_iKillSound[i] = 0;
g_iKillFirst = true;
}
public client_putinserver(id) g_iKillSound[id] = 0;
public client_disconnect(id) g_iKillSound[id] = 0;
public plugin_precache()
{
new szCfgDir[64], szCfgFile[128];
get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
formatex(szCfgFile, charsmax(szCfgFile), "%s/kmansound/kmansound.ini", szCfgDir);
switch(file_exists(szCfgFile))
{
case 0: log_to_file("%s/kmansound/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
case 1: killsound_read_file(szCfgFile);
}
}
killsound_read_file(szCfgFile[])
{
new szBuffer[128], iLine, iLen, i;
while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
{
if(!iLen || iLen > 16 || szBuffer[0] == ';') continue;
copy(g_szKillSound[i], charsmax(g_szKillSound[]), szBuffer);
formatex(szBuffer, charsmax(szBuffer), "sound/kmansound/%s.wav", g_szKillSound[i]);
engfunc(EngFunc_PrecacheGeneric, szBuffer);
if(++i >= sizeof(g_szKillSound)) break;
}
}
public LoadSettings()
{
new cvar[16], i, temp[3][10];
SCVAR(g_iCvar[CVAR_RGB], cvar, charsmax(cvar));
parse(cvar, temp[0], 3, temp[1], 3, temp[2], 3);
for (i = 0; i < 3; i++) g_HudColor[i] = str_to_num(temp[i]);
SCVAR(g_iCvar[CVAR_POS], cvar, charsmax(cvar));
parse(cvar, temp[0], 9, temp[1], 9);
for (i = 0; i < 2; i++) g_HudPos[i] = floatstr(temp[i]);
}
public KsM_Register_Cvars()
{
g_iKm = register_cvar("ks_message", "1");
g_iKO = register_cvar("ks_resetkill_rnd", "1");
g_iKs = register_cvar("ks_playsound_id", "0");
g_iK0 = register_cvar("ks_firstblood", "0");
g_iK1 = register_cvar("ks_doublekill", "1");
g_iK2 = register_cvar("ks_triplekill", "2");
g_iK3 = register_cvar("ks_killingspree", "3");
g_iK4 = register_cvar("ks_dominating", "4");
g_iK5 = register_cvar("ks_unstapoble", "5");
g_iK6 = register_cvar("ks_ultrakill", "6");
g_iK7 = register_cvar("ks_eagle_eye", "7");
g_iK8 = register_cvar("ks_ownage", "8");
g_iK9 = register_cvar("ks_ludicrouskill", "9");
g_iK10 = register_cvar("ks_headhunter", "10");
g_iK11 = register_cvar("ks_wickedsick", "11");
g_iK12 = register_cvar("ks_monsterkill", "12");
g_iK13 = register_cvar("ks_holyshit", "13");
g_iK14 = register_cvar("ks_godlike", "14");
g_iK15 = register_cvar("ks_grenade", "1");
g_iK16 = register_cvar("ks_knife", "1");
g_iK17 = register_cvar("ks_teamkill", "1");
g_iK18 = register_cvar("ks_headshot", "1");
g_iCvar[CVAR_POS] = register_cvar("ks_message_pos", "-1.0 0.27");
g_iCvar[CVAR_RGB] = register_cvar("ks_message_rgb", "250 250 250");
}