Hi.
I have a problem with my plugin. When I kill a enemy I should get some XP, but I don't... When I kill someone I go from level 0 to level 10 instantly without recieving any XP at all...
PHP Code:
#define MAX_LEVEL 11
#define XP_BASE 60
#define XP_ADD_LEVEL 20
new p_xp[33], p_level[33]
new p_rank[33] = ""
new xplevel_base[11] = {0,150,300,600,1000,1500,2100,2800,3600,4500,5500}
new xplevel_lev[MAX_LEVEL] = 0
new xpgiven_lev[MAX_LEVEL] = 0
new xpgiven
PHP Code:
public client_putinserver(id) {
if(is_user_connected(id) {
p_level[id] = 0
p_xp[id] = 0
set_xp()
set_ranktitle(id)
displaylevel(id)
}
}
PHP Code:
public hook_death() {
new Killer = read_data(1)
new Victim = read_data(2)
new headshot = read_data(3)
new KillerName[32], VictimName[32]
if(is_user_connected(Killer) && is_user_connected(Victim)) {
get_user_name(Killer, KillerName, 31)
get_user_name(Victim, VictimName, 31)
if(!headshot) {
xpgiven = xpgiven_lev[p_level[Killer]]
p_xp[Killer] += xpgiven
client_print(Killer, print_chat, "[%s] You recieved %d XP for killing %s", MOD, xpgiven, VictimName)
} else {
xpgiven = xpgiven_lev[p_level[Killer]] + 50
p_xp[Killer] += xpgiven
client_print(Killer, print_chat, "[%s] You recieved %d XP for killing %s with a headshot", MOD, xpgiven, VictimName)
}
displaylevel(Killer)
}
return PLUGIN_CONTINUE
}
I think my problem is somewhere in this code... set_xp()
PHP Code:
public set_xp() {
for(new j = 0; j < MAX_LEVEL; ++j) {
if(j <= 10) {
xplevel_lev[j] = xplevel_base[j]
} else {
xpgiven_lev[j] = XP_BASE + (j * XP_ADD_LEVEL)
if(get_cvar_float("mp_xpmultiplier")) {
new Float:xpmultiplier = get_cvar_float("mp_xpmultiplier")
xplevel_lev[j] = floatround(xplevel_lev[j] * xpmultiplier)
}
}
}
}
PHP Code:
public displaylevel(id) {
if(!id || !is_user_connected(id))
return PLUGIN_CONTINUE
new xpstring[511] = ""
new bool:lvled = false
new name[32]
get_user_name(id, name, 31)
if (p_xp[id] < 0) {
p_xp[id] = 0
}
if((p_level[id] < (MAX_LEVEL-1)) && (p_xp[id] >= xplevel_lev[p_level[id]+1])) {
for (new i = (p_level[id]+1); i < MAX_LEVEL; i++) {
if (p_xp[id] >= xplevel_lev[i]) {
lvled = true
p_level[id] = i
}
}
}
set_ranktitle(id)
format(xpstring, 1023, "Rank: [%s] Level: [%d] XP: [%d]", p_rank[id], p_level[id], p_xp[id])
message_begin(MSG_ONE, gmsgStatusText, {0,0,0}, id)
write_byte(0)
write_string(xpstring)
message_end()
if(lvled) {
set_hudmessage(255, 255, 127, -1.0, 0.7, 1, 6.0, 3.0)
show_hudmessage(id, "Congratulations! You gained a level!")
client_print(0, print_chat, "[%s] Announcement: %s gained a level", MOD, name)
emit_sound(id,CHAN_AUTO, "plats/elevbell1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW)
}
return PLUGIN_CONTINUE
}
__________________