Napisałem plugin naliczający XP, lecz coś nie nalicza tego EXP'a
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fun>
#include <cstrike>
#define PLUGIN "Deathrun XP Mod"
#define VERSION "1.0"
#define AUTHOR "Dakashi"
new PlayerXP[33], PlayerLevel[33]
new XP_Kill, XP_Knife, XP_Hs, SaveXP
new g_vault
new bool:gHp[33]
new gCostHp
new const LEVELS[11] =
{
0,
2,
10,
25,
50,
75,
100,
130,
160,
200,
250
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "eDeath", "a")
register_event("CurWeapon", "CurWeapon", "be", "1=1")
register_event("HLTV", "NewRound", "a", "1=0", "2=0")
SaveXP = register_cvar("dr_savexp", "1")
XP_Hs = register_cvar("dr_headshot_kill", "2")
XP_Kill = register_cvar("dr_normal_kill", "1")
XP_Knife = register_cvar("dr_knife_kill", "1")
gCostHp = register_cvar("dr_cost_hp", "5000")
g_vault = nvault_open("drxp")
register_clcmd("say /lvl", "ShowXP")
register_clcmd("say_team /lvl", "ShowXP")
register_clcmd("say /sklep", "shop")
register_clcmd("say_team /sklep", "shop")
}
public eDeath()
{
new attacker = read_data( 1 )
new headshot = read_data( 3 )
new clip, ammo, weapon = get_user_weapon(clip, ammo)
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
if(headshot)
{
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
}
if(weapon == CSW_KNIFE)
{
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
}
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_chat, "[XPMOD]Gratulacje! Zdobyles poziom %i", PlayerLevel[attacker])
PlayerLevel[attacker] += 1
}
ShowXP(attacker)
SaveData(attacker)
return PLUGIN_CONTINUE
}
public ShowXP(id)
{
set_hudmessage(0, 120, 100, 0.5, 0.5, 0, 6.0, 15.0)
show_hudmessage(id, "LVL: %i, EXP: %i", PlayerLevel[id], PlayerXP[id])
}
public client_connect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
LoadData(id)
}
gHp[id] = false;
}
public client_disconnect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
SaveData(id)
}
PlayerLevel[id] = 0
PlayerXP[id] = 0
}
public SaveData(id)
{
new AuthID[35]
get_user_authid(id, AuthID, 34)
new vaultkey[64], vaultdata[256]
format(vaultkey, 63, "%s-MOD", AuthID)
format(vaultdata, 255, "#%i#%i#", PlayerXP[id], PlayerLevel[id])
nvault_set(g_vault, vaultkey, vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new AuthID[35]
get_user_authid(id, AuthID, 34)
new vaultkey[64], vaultdata[256]
format(vaultkey, 63, "%s-MOD", AuthID)
format(vaultdata, 255, "#%i#%i#", PlayerXP[id], PlayerLevel[id])
nvault_get(g_vault, vaultkey, vaultdata, 255)
replace_all(vaultdata, 255, "#", " ")
new playerlevel[32], playerxp[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
}
public set_gravity(id)
{
new Float:grav = 1.0
if(PlayerLevel[id] != 0)
{
grav-=PlayerLevel[id]*2
}
set_user_gravity(id, grav)
}
public set_speed(id)
{
new Float:speed = 250.0
if(PlayerLevel[id] != 0)
{
speed+=PlayerLevel[id]*2
}
set_user_maxspeed(id, speed)
}
public CurWeapon(id)
{
if(PlayerLevel[id] != 0)
{
set_gravity(id)
set_speed(id)
}
}
public NewRound(id)
{
gHp[id] = false
}
public shop(id)
{
new gShop = menu_create("Deathrun Shop:", "ShopHandler")
menu_additem(gShop, "\yHP +30", "1", 0)
menu_additem(gShop, "\y2", "2", 0)
menu_additem(gShop, "\y3", "3", 0)
menu_setprop(gShop, MPROP_EXIT, MEXIT_ALL)
menu_display(id, gShop, 0)
return PLUGIN_CONTINUE
}
public ShopHandler(id, gShop, item)
{
new szCommand[8], szName[64];
new acces, callback
menu_item_getinfo(gShop, item, acces, szCommand, 7, szName, 63, callback)
new i = str_to_num(szCommand)
switch(i)
{
case 1:
{
new gMoney = cs_get_user_money(id)
new szHealth = get_user_health(id)
if(!is_user_alive(id) || gHp[id] || gMoney < get_pcvar_num(gCostHp))
{
client_print(id, print_chat, "[DR SKLEP]Nie mozesz kupic HP")
}
else
{
cs_set_user_money(id, gMoney - get_pcvar_num(gCostHp))
set_user_health(id, szHealth + 30)
client_print(id, print_chat, "[DR SKLEP]Kupiles HP!")
gHp[id] = true
}
}
case 2:
{
}
case 3:
{
}
}
}