diff --git a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminLevel.java b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminLevel.java index a213c9f012..04a59d6064 100644 --- a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminLevel.java +++ b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminLevel.java @@ -62,6 +62,7 @@ public class AdminLevel implements IAdminCommandHandler } else if (actualCommand.equalsIgnoreCase("admin_set_level")) { + final int maxLevel = ExperienceData.getInstance().getMaxLevel(); try { if (!(targetChar instanceof L2PcInstance)) @@ -72,29 +73,23 @@ public class AdminLevel implements IAdminCommandHandler final L2PcInstance targetPlayer = (L2PcInstance) targetChar; final byte lvl = Byte.parseByte(val); - if ((lvl >= 1) && (lvl <= ExperienceData.getInstance().getMaxLevel())) + if ((lvl >= 1) && (lvl <= maxLevel)) { - final long pXp = targetPlayer.getExp(); - final long tXp = ExperienceData.getInstance().getExpForLevel(lvl); - - if (pXp > tXp) - { - targetPlayer.removeExpAndSp(pXp - tXp, 0); - } - else if (pXp < tXp) - { - targetPlayer.addExpAndSp(tXp - pXp, 0); - } + targetPlayer.setExp(ExperienceData.getInstance().getExpForLevel(lvl)); + targetPlayer.getStat().setLevel(lvl); + targetPlayer.setCurrentHpMp(targetPlayer.getMaxHp(), targetPlayer.getMaxMp()); + targetPlayer.setCurrentCp(targetPlayer.getMaxCp()); + targetPlayer.broadcastUserInfo(); } else { - activeChar.sendMessage("You must specify level between 1 and " + ExperienceData.getInstance().getMaxLevel() + "."); + activeChar.sendMessage("You must specify level between 1 and " + maxLevel + "."); return false; } } catch (NumberFormatException e) { - activeChar.sendMessage("You must specify level between 1 and " + ExperienceData.getInstance().getMaxLevel() + "."); + activeChar.sendMessage("You must specify level between 1 and " + maxLevel + "."); return false; } }