Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static boolean xp_take(Player p, int var) {
- int exp = 0;
- if ((exp = getTotalExperience(p)) < var) return false;
- setTotalExperience(p, exp - var);
- return true;
- }
- private static int getExpAtLevel(int level) {
- return level <= 15 ? 2 * level + 7 : level <= 30 ? 5 * level - 38 : 9 * level - 158;
- }
- private static int getExpAtLevel(Player player) {
- return getExpAtLevel(player.getLevel());
- }
- private static void setTotalExperience(Player player, int exp) {
- player.setExp(0);
- player.setLevel(0);
- player.setTotalExperience(0);
- int amount = exp;
- while (amount > 0) {
- int expToLevel = getExpAtLevel(player);
- amount -= expToLevel;
- if (amount >= 0) player.giveExp(expToLevel);
- else {
- amount += expToLevel;
- player.giveExp(amount);
- amount = 0;
- }
- }
- }
- private static int getTotalExperience(Player player) {
- int exp = Math.round(getExpAtLevel(player) * player.getExp());
- int currentLevel = player.getLevel();
- while (currentLevel > 0) {
- currentLevel--;
- exp += getExpAtLevel(currentLevel);
- }
- if (exp < 0) exp = Integer.MAX_VALUE;
- return exp;
- }
Advertisement
Add Comment
Please, Sign In to add comment