Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <vault>
new PlayerXP[33]
new msgtext
public plugin_init()
{
register_plugin("Xp_Mod", "1.0", "Fire")
register_cvar("sv_xpmod", "1")
register_event("DeathMsg", "DeathMsg", "a")
register_cvar("XP_per_kill", "20")
register_cvar("SaveXP","1") // added SaveXP cvar
msgtext = get_user_msgid("StatusText")
}
public SaveXP(id)
{
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
format(vaultkey,63,"ANIMAL-%s-xp",authid);
format(vaultdata,63,"%d",PlayerXP[id]);
set_vaultdata(vaultkey,vaultdata);
}
public LoadXP(id)
{
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
format(vaultkey,63,"ANIMAL-%s-xp",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerXP[id] = str_to_num(vaultdata);
}
public client_connect(id)
{
if(get_cvar_num("SaveXP") == 1) {
LoadXP(id)
client_print(id, print_chat, "[Xp_Mod] XP Loaded!")
client_print(id, print_chat, "[Xp_Mod] You Have %d XP",PlayerXP[id]) // changed %s (string) to %d (data, works for integers) and added parameter to display the experience
}
}
public client_disconnect(id)
{
if(get_cvar_num("SaveXP") == 1) {
SaveXP(id)
}
}
public DeathMsg()
{
if(get_cvar_num("sv_xpmod") == 0) {
return // removed PLUGIN_HANDLED so I'm not forced to return a value later
}
new attacker = read_data(1)
PlayerXP[attacker] += get_cvar_num("XP_per_kill")
if(get_cvar_num("SaveXP") == 1) {
SaveXP(attacker)
}
ShowHUD(attacker)
// removed strange extra code
}
// in below function: indented and removed un-needed "return" at bottom
public ShowHUD(id)
{
new HUD[51]
format(HUD, 50, "XP: %i", PlayerXP[id])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
}