As requested, re worked the entire system to make it return values.

example:
Player:onGainExperience(target, exp)
return exp * 2
end
That would now return twice as much exp as before.
If you want a player to not recevie any exp you can do that by: return 0
Same goes for Player:onLoseExperience(exp) if you return 0, then the player will not lose exp at all on death.
You can also manipulate the exp loss by example: return exp * 0.5, now the player would lose just 50% of the normal loss uppon death.
You can also use constants instead of returning the exp like:
Player:onGainExperience(target, exp)
return 1000
end
Now the player would gain each time he would receive exp exactly 1000 regardless of what he kills.