@Override public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { List<Pair<MapleStat, Integer>> statupdate = new ArrayList<Pair<MapleStat, Integer>>(2); c.getSession().write(MaplePacketCreator.updatePlayerStats(statupdate, true)); slea.readInt(); // whatever int update = slea.readInt(); if (c.getPlayer().getRemainingAp() > 0) { switch (update) { case 64: // str if (c.getPlayer().getStr() >= 32767) { return; } c.getPlayer().setStr(c.getPlayer().getStr() + 1); statupdate.add(new Pair<MapleStat, Integer>(MapleStat.STR, c.getPlayer().getStr())); break; case 128: // dex if (c.getPlayer().getDex() >= 32767) { return; } c.getPlayer().setDex(c.getPlayer().getDex() + 1); statupdate.add(new Pair<MapleStat, Integer>(MapleStat.DEX, c.getPlayer().getDex())); break; case 256: // int if (c.getPlayer().getInt() >= 32767) { return; } c.getPlayer().setInt(c.getPlayer().getInt() + 1); statupdate.add(new Pair<MapleStat, Integer>(MapleStat.INT, c.getPlayer().getInt())); break; case 512: // luk if (c.getPlayer().getLuk() >= 32767) { return; } c.getPlayer().setLuk(c.getPlayer().getLuk() + 1); statupdate.add(new Pair<MapleStat, Integer>(MapleStat.LUK, c.getPlayer().getLuk())); break; case 2048: // hp case 8192: // mp c.showMessage("You cannot add Ap to HP or MP in NinjaMS. :)"); return; default: c.getSession() .write( MaplePacketCreator.updatePlayerStats(MaplePacketCreator.EMPTY_STATUPDATE, true)); return; } c.getPlayer().setRemainingAp(c.getPlayer().getRemainingAp() - 1); statupdate.add( new Pair<MapleStat, Integer>(MapleStat.AVAILABLEAP, c.getPlayer().getRemainingAp())); c.getSession().write(MaplePacketCreator.updatePlayerStats(statupdate, true)); } else { // AutobanManager.getInstance().addPoints(c, 334, 120000, "Trying to distribute AP to " + // update + " that are not availables"); // log.info("[h4x] Player {} is distributing ap to {} without having any", // c.getPlayer().getName(), Integer.valueOf(update)); } }
@Override public void execute(MapleClient c, MessageCallback mc, String[] splitted) throws Exception, IllegalCommandSyntaxException { MapleCharacter player = c.getPlayer(); if (splitted[0].equals("@dojob")) { NPCScriptManager npc = NPCScriptManager.getInstance(); npc.start(c, 9001001); } else if (splitted[0].equals("@spinel")) { NPCScriptManager npc = NPCScriptManager.getInstance(); npc.start(c, 9000020); } else if (splitted[0].equals("@str") || splitted[0].equals("@int") || splitted[0].equals("@luk") || splitted[0].equals("@dex")) { int amount = Integer.parseInt(splitted[1]); boolean str = splitted[0].equals("@str"); boolean Int = splitted[0].equals("@int"); boolean luk = splitted[0].equals("@luk"); boolean dex = splitted[0].equals("@dex"); if (amount > 0 && amount <= player.getRemainingAp() && amount <= 32763 || amount < 0 && amount >= -32763 && Math.abs(amount) + player.getRemainingAp() <= 32767) { if (str && amount + player.getStr() <= 32767 && amount + player.getStr() >= 4) { player.setStr(player.getStr() + amount); player.updateSingleStat(MapleStat.STR, player.getStr()); player.setRemainingAp(player.getRemainingAp() - amount); player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp()); } else if (Int && amount + player.getInt() <= 32767 && amount + player.getInt() >= 4) { player.setInt(player.getInt() + amount); player.updateSingleStat(MapleStat.INT, player.getInt()); player.setRemainingAp(player.getRemainingAp() - amount); player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp()); } else if (luk && amount + player.getLuk() <= 32767 && amount + player.getLuk() >= 4) { player.setLuk(player.getLuk() + amount); player.updateSingleStat(MapleStat.LUK, player.getLuk()); player.setRemainingAp(player.getRemainingAp() - amount); player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp()); } else if (dex && amount + player.getDex() <= 32767 && amount + player.getDex() >= 4) { player.setDex(player.getDex() + amount); player.updateSingleStat(MapleStat.DEX, player.getDex()); player.setRemainingAp(player.getRemainingAp() - amount); player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp()); } else { mc.dropMessage( "Please make sure the stat you are trying to raise is not over 32,767 or under 4."); } } else { mc.dropMessage( "Please make sure your AP is not over 32,767 and you have enough to distribute."); } } else if (splitted[0].equals("@emo")) { player.setHp(0); player.updateSingleStat(MapleStat.HP, 0); } else if (splitted[0].equals("@expfix")) { player.setExp(0); player.updateSingleStat(MapleStat.EXP, player.getExp()); mc.dropMessage("Your exp has been fixed~!"); } else if (splitted[0].equals("@myap")) { mc.dropMessage( "You currently have " + c.getPlayer().getStr() + " STR, " + c.getPlayer().getDex() + " DEX, " + c.getPlayer().getLuk() + " LUK, " + c.getPlayer().getInt() + " INT."); mc.dropMessage("You currently have " + c.getPlayer().getRemainingAp() + " Ability Points."); } else if (splitted[0].equals("@commands")) { mc.dropMessage("The player Commands are:"); mc.dropMessage( "@str, @int, @dex, @achievements, @luk, @save, @dojob, @expfix, @myap, @emo, @rebirth, @apreset, @dispose, @goto"); } else if (splitted[0].equals("@rebirth")) { if (player.getLevel() >= 200) { int totalrebirth = c.getPlayer().getReborns() + 1; mc.dropMessage("You have been reborned. For a total of " + totalrebirth + " times."); player.doReborn(); } else { mc.dropMessage("You are not level 200 yet!"); } } else if (splitted[0].equals("@save")) { if (!player.getCheatTracker().Spam(60000, 0)) { // 1 minute player.saveToDB(true); mc.dropMessage("Character information saved."); } else { mc.dropMessage("You cannot save more than once every minute."); } } else if (splitted[0].equalsIgnoreCase("@achievements")) { mc.dropMessage("Your finished achievements:"); for (Integer i : c.getPlayer().getFinishedAchievements()) { mc.dropMessage( MapleAchievements.getInstance().getById(i).getName() + " - " + MapleAchievements.getInstance().getById(i).getReward() + " NX."); } } else if (splitted[0].equals("@dispose")) { NPCScriptManager.getInstance().dispose(c); c.getSession().write(MaplePacketCreator.enableActions()); mc.dropMessage("Done."); } else if (splitted[0].equals("@apreset")) { if (player.getMeso() >= 5000000) { int str = c.getPlayer().getStr(); int dex = c.getPlayer().getDex(); int int_ = c.getPlayer().getInt(); int luk = c.getPlayer().getLuk(); int newap = c.getPlayer().getRemainingAp() + (str - 4) + (dex - 4) + (int_ - 4) + (luk - 4); c.getPlayer().setStr(4); c.getPlayer().setDex(4); c.getPlayer().setInt(4); c.getPlayer().setLuk(4); c.getPlayer().setRemainingAp(newap); List<Pair<MapleStat, Integer>> stats = new ArrayList<Pair<MapleStat, Integer>>(); stats.add(new Pair<MapleStat, Integer>(MapleStat.STR, Integer.valueOf(str))); stats.add(new Pair<MapleStat, Integer>(MapleStat.DEX, Integer.valueOf(dex))); stats.add(new Pair<MapleStat, Integer>(MapleStat.INT, Integer.valueOf(int_))); stats.add(new Pair<MapleStat, Integer>(MapleStat.LUK, Integer.valueOf(luk))); stats.add(new Pair<MapleStat, Integer>(MapleStat.AVAILABLEAP, Integer.valueOf(newap))); c.getSession().write(MaplePacketCreator.updatePlayerStats(stats)); mc.dropMessage("Your ap has been reseted. Please CC or Relogin to apply the changes"); } else { mc.dropMessage("Not enough mesos. You need 5mill to apreset"); } } else if (splitted[0].equals("@goto")) { ChannelServer cserv = c.getChannelServer(); HashMap<String, Integer> maps = new HashMap<String, Integer>(); maps.put("henesys", 100000000); maps.put("ellinia", 101000000); maps.put("perion", 102000000); maps.put("kerning", 103000000); maps.put("lith", 104000000); maps.put("sleepywood", 105040300); maps.put("florina", 110000000); maps.put("orbis", 200000000); maps.put("happy", 209000000); maps.put("elnath", 211000000); maps.put("ludi", 220000000); maps.put("omega", 221000000); maps.put("korean", 222000000); maps.put("aqua", 230000000); maps.put("leafre", 240000000); maps.put("mulung", 250000000); maps.put("herb", 251000000); maps.put("nlc", 600000000); maps.put("shrine", 800000000); maps.put("showa", 801000000); maps.put("fm", 910000000); if (maps.containsKey(splitted[1])) { player.changeMap( cserv.getMapFactory().getMap(maps.get(splitted[1])), cserv.getMapFactory().getMap(maps.get(splitted[1])).getPortal(0)); } else { mc.dropMessage( "No map enetered do @goto <henesys|ellinia|perion|kerning|lith|sleepywood|florina|orbis|happy|elnath|ludi|omega|korean|aqua|leafre|mulung|herb|nlc|shrine|showa|fm>"); } } }