/*
* Copyrights reserved for Author Raheem
* First Release Date: 25.7.2016
* Update 1.1 Date: 9.10.2016 [Fixed Damage calculate]
* Official site: ZPPV.boards.net
*/
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <levels>
new g_iDmg[32]
new g_iKills[32]
new iNum
new iPlayers[32]
new dBestDeffender
new iBestInfector
new dName[32]
new iName[32]
new best_deffender_xp
new best_infector_xp
public plugin_init()
{
register_plugin("Best Deffender & Infector", "1.1", "Raheem")
//Ham
RegisterHam(Ham_TakeDamage, "player", "hamTakeDamage")
//Event
register_event("DeathMsg", "EventDeathMsg", "a")
//cmds
register_clcmd("say tracker","best_now")
register_clcmd("say_team tracker","best_now")
register_clcmd("say /tracker","best_now")
register_clcmd("say_team /tracker","best_now")
//XP
best_deffender_xp = register_cvar("deffender_xp", "30") //How much XP will given to best deffender?
best_infector_xp = register_cvar("infector_xp", "30") //How much XP will given to best infector?
}
public client_disconnect(id)
{
arrayset(g_iDmg, 0, 32)
arrayset(g_iKills, 0, 32)
}
public hamTakeDamage(victim, inflictor, attacker, Float:damage, DamageBits)
{
if(is_user_connected(victim) && is_user_connected(attacker) && (cs_get_user_team(victim) != cs_get_user_team(attacker)) && (cs_get_user_team(attacker) == CS_TEAM_CT))
{
g_iDmg[attacker] += floatround(damage)
}
}
public EventDeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
if(is_user_connected(killer) && is_user_connected(victim) && (cs_get_user_team(killer) != cs_get_user_team(victim)) && (cs_get_user_team(killer) == CS_TEAM_T))
{
g_iKills[killer]++
}
}
public ze_roundend()
{
//Infector
iBestInfector = get_best_infector()
new iBug_Block = get_user_max_level(iBestInfector) - get_user_xp(iBestInfector)
if((get_user_xp(iBestInfector) < get_user_max_level(iBestInfector)) && (iBug_Block > get_pcvar_num(best_infector_xp)))
{
set_user_xp(iBestInfector, get_user_xp(iBestInfector) + get_pcvar_num(best_infector_xp))
}
get_user_name(iBestInfector, iName, charsmax(iName))
client_print_colors(0, "!tBest Infector: !g%s !y|| !tInfected: !g%i !y|| !tAwarded: !g+%i XP!y.", iName, g_iKills[iBestInfector], get_pcvar_num(best_infector_xp))
//Deffender
dBestDeffender = get_best_deffender()
new dBug_Block = get_user_max_level(dBestDeffender) - get_user_xp(dBestDeffender)
if((get_user_xp(dBestDeffender) < get_user_max_level(dBestDeffender)) && (dBug_Block > get_pcvar_num(best_deffender_xp)))
{
set_user_xp(dBestDeffender, get_user_xp(dBestDeffender) + get_pcvar_num(best_deffender_xp))
}
get_user_name(dBestDeffender, dName, charsmax(dName))
client_print_colors(0, "!tBest Deffender: !g%s !y|| !tDamage: !g%i !y|| !tAwarded: !g+%i XP!y.", dName, g_iDmg[dBestDeffender], get_pcvar_num(best_deffender_xp))
for( new i = 1; i <= get_maxplayers() ; i++ )
{
arrayset(g_iDmg, 0, 32)
arrayset(g_iKills, 0, 32)
}
}
get_best_deffender()
{
get_players(iPlayers, iNum, "ce", "CT")
SortCustom1D(iPlayers, iNum, "sort_best_deffender")
return iPlayers[0]
}
get_best_infector()
{
get_players(iPlayers, iNum, "ce", "TERRORIST")
SortCustom1D(iPlayers,iNum, "sort_best_infector")
return iPlayers[0]
}
public sort_best_deffender(id1, id2)
{
if(g_iDmg[id1] > g_iDmg[id2])
{
return -1;
}
else if(g_iDmg[id1] < g_iDmg[id2])
{
return 1;
}
else
{
return 0;
}
return 0;
}
public sort_best_infector(id1, id2)
{
if(g_iKills[id1] > g_iKills[id2])
{
return -1;
}
else if(g_iKills[id1] < g_iKills[id2])
{
return 1;
}
else
{
return 0;
}
return 0;
}
public best_now(id)
{
//Deffender
dBestDeffender = get_best_deffender()
get_user_name(dBestDeffender, dName, charsmax(dName))
//Infector
iBestInfector = get_best_infector()
get_user_name(iBestInfector, iName, charsmax(iName))
set_hudmessage(random(256), random(256), random(256), 0.10, 0.30, 2, 3.0, 5.0)
show_hudmessage(id, "Best Deffender: %s || Damage: %i^nBest Infector: %s || Infected: %i", dName, g_iDmg[dBestDeffender], iName, g_iKills[iBestInfector])
}
stock client_print_colors(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!y", "^x01"); // Default Color
replace_all(msg, 190, "!t", "^x03"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}