do you have extra xp by level cvar enabled?
I can confirm that you LOSE xp for making kills and I can see where this is coming from, I just got to find the actual line in the code...
If YOU as level 2 kill a player at lets say level 30 you get lets say 150xp
If they kill you they lose around 150xp
Basically the function is written as (30-2)x=xp so when it goes (2-30)x=xp you go negative...
To fix the problem open Engine_XPGold and change the contents of GiveKillXPCreds to:
GiveKillXPCreds(client,playerkilled,bool:headshot,bool:melee)
{
//PrintToChatAll("1");
new race=War3_GetRace(client);
if(race>0){
new killerlevel=War3_GetLevel(client,War3_GetRace(client));
new victimlevel=War3_GetLevel(playerkilled,War3_GetRace(playerkilled));
new leveldiff;
leveldiff=victimlevel-killerlevel;
//check for negitive and assign to 0 so no bonus is awarded
if(leveldiff<0)
{
leveldiff=0;
}
new killxp=W3GetKillXP(client,leveldiff);
new addxp=killxp;
if(headshot) addxp+=((killxp*GetConVarInt(HeadshotXPCvar))/100);
if(melee) addxp+=((killxp*GetConVarInt(MeleeXPCvar))/100);
new String:killaward[64];
Format(killaward,sizeof(killaward),"%T","a kill",client);
W3GiveXPGold(client,XPAwardByKill,addxp,W3GetKillGold(),killaward);
}
}
The above will ensure that no xp is ever removed and that if you kill a player lower level than yourself you get no bonus. In theory you could make your own function here to reward some functional less xp without going negative if you wanted some addational customization.