PHP Code:
/* KillStreak Advanced */
#include <amxmodx>
#include <amxmisc>
#include <csx>
#define PLUGIN "KillStreak Advanced"
#define VERSION "1.0"
#define AUTHOR "AUTHOR"
/*#define TASK_CLEAR_KILL 100*/
#define LEVELS 13
/*new kill[33][24];*/
new kills[33] = {0,...};
new deaths[33] = {0,...};
#define MAX_PLAYERS 32
#define KILL_TIME 5.0
new hsenable, knifeenable, firstbloodenable, nadecvar, suicidecvar, rnstartcvar, killstreaktype;
new firstblood;
new g_szSnds[][] =
{
"fuckers/doublekill.wav",
"fuckers/triplekill.wav"
}
new g_szMsgs[][] =
{
"made D O U B L E K I L L !!!",
"made T R I P L E K I L L !!!"
}
new g_iLvls[] = {2, 3};
new bool:g_bMultiKill[MAX_PLAYERS + 1];
new g_iKills[MAX_PLAYERS + 1];
new hsmessages[][] =
{
"%s removed %s head !!",
"%s had a superb aim with %s !",
"%s Made a superb headshot to %s!",
"%s down %s with a superb headshot !"
}
new hslist[][] =
{
"fuckers/headshot1",
"fuckers/headshot2"
}
new knmessages[][] =
{
"%s sliced and diced %s",
"%s pulled out knife and gutted %s",
"%s knifed %s"
}
new knlist[][] =
{
"fuckers/knife1",
"fuckers/knife2",
"fuckers/knife3"
}
new fbmessages[][] =
{
"%s : First Blood !",
"%s Drew First Blood !!!",
"%s First Shot on tha Mark !"
}
new fblist[][] =
{
"fuckers/firstblood1",
"fuckers/firstblood2",
"fuckers/firstblood3"
}
new nademessages[][] =
{
"%s got a big explosion for %s",
"%s made a precision throw to %s",
"%s is good grenadier ! i think he back from the war ..."
}
new suicidemess[][] =
{
"%s knows how the kill command works!",
"%s prefer to kill himself...rather than die on battle land"
}
new suicidelist[][] =
{
"fuckers/suicide1",
"fuckers/suicide2",
"fuckers/suicide3",
"fuckers/suicide4"
}
new levels[13] = {4, 5, 6, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25};
new sounds[13][] =
{
"fuckers/multikill",
"fuckers/ultrakill",
"fuckers/killingspree",
"fuckers/megakill",
"fuckers/holyshit",
"fuckers/ludicrouskill",
"fuckers/rampage",
"fuckers/dominating",
"fuckers/unstoppable",
"fuckers/monsterkill",
"fuckers/wickedsick",
"fuckers/godlike",
"fuckers/ownage"
}
new messages[13][] =
{
"%s: Multi Kill !",
"%s: Ultra Kill !",
"%s: Killing Spree !",
"%s: Mega Kill !",
"%s: Holy Shit !",
"%s: Ludicrous Kill !",
"%s: Rampage !",
"%s: Dominating !",
"%s: Unstoppable !",
"%s: M o n s t e R K i L L ! ! !",
"%s: W I C K E D S I C K ! ! !",
"%s: G O D L I K E ! ! !",
"%s IS OWNING ! ! !"
}
new preplist[][] =
{
"fuckers/prepare1",
"fuckers/prepare2",
"fuckers/prepare3"
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("ResetHUD", "reset_hud", "b");
register_event("HLTV","rnstart","a", "1=0", "2=0");
register_event("DeathMsg", "eventDeathMsg", "a", "1>0");
killstreaktype = register_cvar("fk_killstreak_advanced", "3");
hsenable = register_cvar("fk_killstreak_hs","1");
knifeenable = register_cvar("fk_killstreak_knife","1");
firstbloodenable = register_cvar("fk_firstblood","1");
nadecvar = register_cvar("fk_nade_events","1");
suicidecvar = register_cvar("fk_suicide_events","1");
rnstartcvar = register_cvar("fk_roundcout_sounds","1");
}
public eventDeathMsg()
{
new iKiller = read_data(1);
if (iKiller == read_data(2))
{
g_iKills[iKiller] = 0;
return;
}
g_iKills[iKiller] += 1;
for (new i = 0; i < sizeof(g_szSnds); i++)
{
if (g_bMultiKill[iKiller] && g_iKills[iKiller] == g_iLvls[i])
{
new name[32];
get_user_name(iKiller, name, 31);
client_cmd(iKiller, "spk %s", g_szSnds[i]);
client_print(iKiller, print_chat, "%s %s", name, g_szMsgs[i]);
}
}
g_bMultiKill[iKiller] = true;
set_task(KILL_TIME, "taskEndMultiKills", iKiller);
}
public taskEndMultiKills(id)
{
g_iKills[id] = 0;
g_bMultiKill[id] = false;
}
public client_death(killer,victim,weapon,hitplace,TK)
{
if(!killer || !victim)
return;
static kname[32], vname[32];
get_user_name(killer,kname,31);
get_user_name(victim,vname,31);
if(hitplace == HIT_HEAD && get_pcvar_num(hsenable) == 1 )
{
set_hudmessage(0, 0, 255, -1.0, 0.20, 0, 6.0, 6.0);
show_hudmessage(0, hsmessages[random(sizeof hsmessages)], kname, vname);
client_cmd(0,"spk %s",hslist[random(sizeof hslist)]);
}
if(weapon == CSW_KNIFE && get_pcvar_num(knifeenable) == 1 )
{
set_hudmessage(255, 0, 255, -1.0, 0.20, 0, 6.0, 6.0);
show_hudmessage(0, knmessages[random(sizeof knmessages)], kname, vname);
client_cmd(0,"spk %s",knlist[random(sizeof knlist)]);
}
if(firstblood && killer != victim && get_pcvar_num(firstbloodenable) ==1)
{
firstblood = 0;
set_hudmessage(255, 0, 255, -1.0, 0.20, 0, 6.0, 6.0);
show_hudmessage(0, fbmessages[random(sizeof fbmessages)], kname);
client_cmd(0,"spk %s",fblist[random(sizeof fblist)]);
}
if(weapon == CSW_HEGRENADE && get_pcvar_num(nadecvar) == 1)
{
set_hudmessage(255, 0, 255, -1.0, 0.20, 0, 6.0, 6.0);
show_hudmessage(0,nademessages[random(sizeof nademessages)],kname,vname);
client_cmd(0,"spk FuCkErS/grenade");
}
if(killer == victim && get_pcvar_num(suicidecvar) ==1)
{
set_hudmessage(255, 0, 255, -1.0, 0.20, 0, 6.0, 6.0);
show_hudmessage(0,suicidemess[random(sizeof suicidemess)], vname);
client_cmd(0,"spk %s",suicidelist[random(sizeof suicidelist)]);
}
kills[killer] += 1;
kills[victim] = 0;
deaths[killer] = 0;
deaths[victim] += 1;
for (new i = 0; i < LEVELS; i++)
{
if (kills[killer] == levels[i])
{
announce(killer, i);
return;
}
}
}
announce(killer, level)
{
static name[33];
new r = random(256);
new g = random(256);
new b = random(256);
get_user_name(killer, name, 32);
set_hudmessage(r,g,b, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2);
if( (get_pcvar_num(killstreaktype) <= 0 ) || get_pcvar_num(killstreaktype) > 3)
return 0;
switch(get_pcvar_num(killstreaktype))
{
case 1:
{
show_hudmessage(0, messages[level], name);
return 0;
}
case 2:
{
client_cmd(0, "spk %s", sounds[level]);
return 0;
}
case 3:
{
show_hudmessage(0, messages[level], name);
client_cmd(0, "spk %s", sounds[level]);
return 0;
}
}
return 0;
}
public reset_hud(id)
{
firstblood = 1;
if (is_mode_set(16))
if (kills[id] > levels[0])
client_print(id, print_chat, "* You are on a killstreak with %d kills.", kills[id]);
else if (deaths[id] > 1)
client_print(id, print_chat, "* Take care, you are on a deathstreak with %d deaths in a row.", deaths[id]);
}
public rnstart(id)
{
if(get_pcvar_num(rnstartcvar) == 1)
{
firstblood = 1;
set_hudmessage(255, 0, 255, -1.0, 0.20, 0, 6.0, 6.0);
show_hudmessage(0, "Prepare To Fight!");
client_cmd(0,"spk %s",preplist[random(sizeof preplist)]);
}
}
public client_connect(id)
{
kills[id] = 0;
deaths[id] = 0;
}
is_mode_set(bits)
{
new mode[9];
get_cvar_string("fk_killstreak_advanced", mode, 8);
return read_flags(mode) & bits;
}
public plugin_precache()
{
precache_sound("fuckers/multikill.wav");
precache_sound("fuckers/ultrakill.wav");
precache_sound("fuckers/killingspree.wav");
precache_sound("fuckers/megakill.wav");
precache_sound("fuckers/holyshit.wav");
precache_sound("fuckers/ludicrouskill.wav");
precache_sound("fuckers/rampage.wav");
precache_sound("fuckers/dominating.wav");
precache_sound("fuckers/unstoppable.wav");
precache_sound("fuckers/monsterkill.wav");
precache_sound("fuckers/wickedsick.wav");
precache_sound("fuckers/godlike.wav");
precache_sound("fuckers/headshot1.wav");
precache_sound("fuckers/headshot2.wav");
precache_sound("fuckers/knife1.wav");
precache_sound("fuckers/knife2.wav");
precache_sound("fuckers/firstblood1.wav");
precache_sound("fuckers/firstblood2.wav");
precache_sound("fuckers/firstblood3.wav");
precache_sound("fuckers/prepare1.wav");
precache_sound("fuckers/prepare2.wav");
precache_sound("fuckers/prepare3.wav");
precache_sound("fuckers/grenade.wav");
precache_sound("fuckers/suicide1.wav");
precache_sound("fuckers/suicide2.wav");
precache_sound("fuckers/suicide3.wav");
precache_sound("fuckers/suicide4.wav");
precache_sound("fuckers/doublekill.wav");
precache_sound("fuckers/triplekill.wav");
}
when someone do double kill or triple kill to be displayed in chat with his team color