As it shows mine I'm living.
PHP Code:
#include <amxmodx>
#include <fvault>
#include <ColorChat>
new const g_vault_name[] = "EXP_MOD";
new const g_vault_lvl[] = "LVL_MOD";
new const LEVELS[7] = {
30, //lvl 0
80, //lvl 1
220, //lvl 2
370, //lvl 3
600, //lvl 4
1500, //lvl 5
5000 //lvl 6
}
new g_exp[33],g_lvl[33];
new XP_Kill,XP_Knife,XP_Hs,syncObj
public plugin_init()
{
register_plugin("XpMod", "1.0", "JustGo")
register_event("DeathMsg", "eDeath", "a")
XP_Kill=register_cvar("XP_per_kill", "2")
XP_Hs=register_cvar("XP_hs_bonus","3")
XP_Knife=register_cvar("XP_knife_bonus","3")
syncObj = CreateHudSyncObj()
}
public eDeath() //function name
{
// Create a variable to store the attacker's id
new attacker = read_data( 1 )
// We create the victim variable, so that this function can check
// if a player was killed
new iVictim = read_data( 2 )
// If a player was killed by a HeadShot, this will be used for the cvar Xp_Hs
new headshot = read_data( 3 )
if(attacker == iVictim)
{
return PLUGIN_HANDLED
}
//which weapon was used
new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
// used for the xp_hs cvar
// it checks if the victim was killed by a headshot
if(headshot)
{
g_exp[attacker] += get_pcvar_num(XP_Hs)
}
else if(weapon == CSW_KNIFE)
{
g_exp[attacker] += get_pcvar_num(XP_Knife)
}
else
{
g_exp[attacker] += get_pcvar_num(XP_Kill)
}
while(g_exp[attacker] >= LEVELS[g_lvl[attacker]])
{
g_lvl[attacker] += 1
ColorChat(attacker, NORMAL, "^4[Nex] ^4Congratulations! ^1You are level^3 %i ", g_lvl[attacker])
}
SaveExp(attacker)
return PLUGIN_HANDLED
}
public show(id)
{
set_hudmessage(0, 255, 0, -1.0, 0.9, 0, 6.0, 12.0)
ShowSyncHudMsg(id,syncObj, "[ Level: %i| Exp: %i/%i]",g_lvl[id],g_exp[id],LEVELS[g_lvl[id]])
}
public client_putinserver(plr)
{
if( !is_user_hltv(plr) && !is_user_bot(plr) )
{
LoadExp(plr);
}
set_task(1.0, "show", plr, _, _, "b")
}
public client_disconnect(plr)
{
if( g_exp[plr] > 0 )
{
SaveExp(plr);
g_exp[plr] = 0;
}
}
SaveExp(plr)
{
new authid[35];
get_user_authid(plr, authid, sizeof(authid) - 1);
new data2[16];
num_to_str(g_lvl[plr], data2, sizeof(data2) - 1);
fvault_set_data(g_vault_lvl, authid, data2);
new data[16];
num_to_str(g_exp[plr], data, sizeof(data) - 1);
fvault_set_data(g_vault_name, authid, data);
}
LoadExp(plr)
{
new authid[35];
get_user_authid(plr, authid, sizeof(authid) - 1);
new data2[16];
if( fvault_get_data(g_vault_lvl, authid, data2, sizeof(data2) - 1) )
{
g_lvl[plr] = str_to_num(data2);
}
else
{
g_lvl[plr] = 0;
}
new data[16];
if( fvault_get_data(g_vault_name, authid, data, sizeof(data) - 1) )
{
g_exp[plr] = str_to_num(data);
}
else
{
g_exp[plr] = 0;
}
}