package handling.cashshop.handler; import client.MapleCharacter; import client.MapleCharacterUtil; import client.MapleClient; import client.MapleQuestStatus; import client.inventory.Item; import client.inventory.MapleInventoryIdentifier; import client.inventory.MapleInventoryType; import client.inventory.MapleRing; import constants.GameConstants; import database.DatabaseConnection; import handling.cashshop.CashShopServer; import handling.channel.ChannelServer; import handling.login.LoginServer; import handling.world.CharacterTransfer; import handling.world.World; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import server.CashItem; import server.CashItemFactory; import server.CashItemInfo; import server.MapleInventoryManipulator; import server.MapleItemInformationProvider; import server.quest.MapleQuest; import tools.FileoutputUtil; import tools.Triple; import tools.data.LittleEndianAccessor; import tools.packet.CField; import tools.packet.CWvsContext; import tools.packet.CSPacket; public class CashShopOperation { public static void LeaveCS(final LittleEndianAccessor slea, final MapleClient c, final MapleCharacter chr) { CashShopServer.getPlayerStorage().deregisterPlayer(chr); c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION, c.getSessionIPAddress()); try { World.ChannelChange_Data(new CharacterTransfer(chr), chr.getId(), c.getChannel()); c.getSession().write(CField.getChannelChange(c, Integer.parseInt(ChannelServer.getInstance(c.getChannel()).getIP().split(":")[1]))); } finally { final String s = c.getSessionIPAddress(); LoginServer.addIPAuth(s.substring(s.indexOf('/') + 1, s.length())); chr.saveToDB(false, true); c.setPlayer(null); c.setReceiving(false); c.getSession().close(); } } public static void EnterCS(final CharacterTransfer transfer, final MapleClient c) { if (transfer == null) { c.getSession().close(); return; } MapleCharacter chr = MapleCharacter.ReconstructChr(transfer, c, false); c.setPlayer(chr); c.setAccID(chr.getAccountID()); if (!c.CheckIPAddress()) { // Remote hack c.getSession().close(); return; } final int state = c.getLoginState(); boolean allowLogin = false; if (state == MapleClient.LOGIN_SERVER_TRANSITION || state == MapleClient.CHANGE_CHANNEL) { if (!World.isCharacterListConnected(c.loadCharacterNames(c.getWorld()))) { allowLogin = true; } } if (!allowLogin) { c.setPlayer(null); c.getSession().close(); return; } c.updateLoginState(MapleClient.LOGIN_LOGGEDIN, c.getSessionIPAddress()); CashShopServer.getPlayerStorage().registerPlayer(chr); c.getSession().write(CSPacket.warpCS(c)); //c.getSession().write(CSPacket.Use_CS(false)); c.getSession().write(CSPacket.loadCategories()); c.getSession().write(CSPacket.CS_Picture_Item()); c.getSession().write(CSPacket.CS_Top_Items()); c.getSession().write(CSPacket.CS_Special_Item()); c.getSession().write(CSPacket.CS_Featured_Item()); c.getSession().write(CSPacket.showNXMapleTokens(c.getPlayer())); doCSPackets(c); //loadCashShop(c); // doCSPackets(c); } public static void loadCashShop(MapleClient c) { c.getSession().write(CSPacket.loadCategories()); String head = "E2 02"; c.getSession().write(CField.getPacketFromHexString(head + " 04 01 19 00 09 3D 00 10 30 3D 00 15 54 10 00 47 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 41 6C 6C 53 74 61 72 73 48 61 69 72 5F 32 30 31 33 30 34 32 34 2E 6A 70 67 E7 F1 FA 02 6D 95 4E 00 01 00 00 00 04 00 00 00 00 00 00 00 1E 00 00 00 B8 0B 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 B8 0B 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 01 01 01 00 01 02 00 00 00 26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 10 30 3D 00 15 54 10 00 47 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 41 6C 6C 53 74 61 72 73 48 61 69 72 5F 32 30 31 33 30 34 32 34 2E 6A 70 67 E8 F1 FA 02 6D 95 4E 00 01 00 00 00 04 00 00 00 00 00 00 00 1E 00 00 00 30 75 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 30 75 00 00 00 00 00 00 0B 00 00 00 1E 00 00 00 01 01 01 00 01 02 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 20 57 3D 00 A0 E1 0F 00 44 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 75 62 65 50 63 6B 67 73 5F 32 30 31 33 30 34 32 34 2E 6A 70 67 89 2C 9A 00 30 E6 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 21 00 00 00 F0 55 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 00 2C F1 B2 E7 CD 01 00 80 05 BB 46 E6 17 02 1C 3E 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 01 01 01 00 01 02 00 00 00 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 7C E1 F5 05 72 3D 4D 00 01 00 00 00 38 4A 00 00 B0 36 00 00 00 00 00 00 0A 00 00 00 1E 00 00 00 02 00 00 00 E9 2C 9A 00 80 3A 54 00 00 00 00 00 B8 0B 00 00 6C 07 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 02 00 00 00 00 09 3D 00 20 57 3D 00 A0 E1 0F 00 44 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 75 62 65 50 63 6B 67 73 5F 32 30 31 33 30 34 32 34 2E 6A 70 67 8C 2C 9A 00 32 E6 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 21 00 00 00 48 71 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 00 2C F1 B2 E7 CD 01 00 80 05 BB 46 E6 17 02 BC 4D 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 01 01 01 00 01 02 00 00 00 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 EA 2C 9A 00 75 3D 4D 00 01 00 00 00 A8 61 00 00 68 42 00 00 00 00 00 00 0A 00 00 00 1E 00 00 00 02 00 00 00 EB 2C 9A 00 81 3A 54 00 01 00 00 00 A0 0F 00 00 54 0B 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 02 00 00 00 00 09 3D 00 20 57 3D 00 A0 E1 0F 00 44 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 75 62 65 50 63 6B 67 73 5F 32 30 31 33 30 34 32 34 2E 6A 70 67 D4 2C 9A 00 2F E6 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 25 00 00 00 58 0F 02 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 00 2C F1 B2 E7 CD 01 00 80 05 BB 46 E6 17 02 A0 8C 00 00 00 00 00 00 01 00 00 00 07 00 00 00 01 01 01 00 01 02 00 00 00 A9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 A1 A3 98 00 70 3D 4D 00 00 00 00 00 A0 8C 00 00 A0 8C 00 00 00 00 00 00 23 00 00 00 07 00 00 00 02 00 00 00 7E E1 F5 05 F8 50 4D 00 01 00 00 00 B8 82 01 00 00 00 00 00 00 00 00 00 0A 00 00 00 07 00 00 00 02 00 00 00 00 09 3D 00 20 57 3D 00 A0 E1 0F 00 44 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 75 62 65 50 63 6B 67 73 5F 32 30 31 33 30 34 32 34 2E 6A 70 67 9E E1 F5 05 2D E6 8A 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 F4 1A 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 F4 1A 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 2A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 44 E1 F5 05 D0 46 4D 00 01 00 00 00 F4 1A 00 00 F4 1A 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 A9 E1 F5 05 9E 62 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 00 09 3D 00 30 7E 3D 00 B4 7C 10 00 46 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 70 65 74 70 61 63 6B 61 67 65 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 81 E2 F5 05 91 E7 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 88 5E 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 40 50 3D 41 30 CE 01 00 80 05 BB 46 E6 17 02 50 46 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 35 E2 F5 05 39 4C 4C 00 01 00 00 00 00 19 00 00 70 17 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 37 E2 F5 05 3A 4C 4C 00 01 00 00 00 00 19 00 00 70 17 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 39 E2 F5 05 3B 4C 4C 00 01 00 00 00 00 19 00 00 70 17 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 7D E2 F5 05 AB AE 4F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 5A 00 00 00 02 00 00 00 65 94 96 03 20 50 53 00 01 00 00 00 C4 09 00 00 00 00 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 00 09 3D 00 30 7E 3D 00 B4 7C 10 00 46 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 70 65 74 70 61 63 6B 61 67 65 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 82 E2 F5 05 92 E7 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 20 4E 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 40 50 3D 41 30 CE 01 00 80 05 BB 46 E6 17 02 BC 34 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 4A E1 F5 05 33 4C 4C 00 01 00 00 00 88 13 00 00 94 11 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 4D E1 F5 05 34 4C 4C 00 01 00 00 00 88 13 00 00 94 11 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 50 E1 F5 05 35 4C 4C 00 01 00 00 00 88 13 00 00 94 11 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 7D E2 F5 05 AB AE 4F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 5A 00 00 00 02 00 00 00 65 94 96 03 20 50 53 00 01 00 00 00 C4 09 00 00 00 00 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 A0 0D 95 03 20 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 09 00 00 00 60 09 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 80 07 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 0A 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 A4 0D 95 03 21 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 08 00 00 00 60 09 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 80 07 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 88 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 C4 0D 95 03 22 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 9A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 C6 0D 95 03 23 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 7C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 C8 0D 95 03 26 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 04 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 6B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 C9 0D 95 03 24 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 05 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 C6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 CA 0D 95 03 25 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 92 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 E0 0D 95 03 27 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 05 00 00 00 B8 0B 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 60 09 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 3D 0E 95 03 28 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 14 00 00 00 AC 0D 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 F0 0A 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 3F 0E 95 03 29 A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 18 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 40 A5 3D 00 EC 7B 10 00 4A 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 32 30 6F 66 66 5F 70 65 74 65 71 75 69 70 73 5F 32 30 31 33 30 34 31 37 2E 6A 70 67 80 E1 F5 05 2A A6 1B 00 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 08 07 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 F5 80 FE 3A CE 01 00 00 BE D2 FE 45 CE 01 A0 05 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 50 CC 3D 00 48 DF 0F 00 45 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 61 72 76 65 64 53 6C 6F 74 5F 32 30 31 33 30 34 30 33 2E 6A 70 67 71 E2 F5 05 F8 62 54 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 D8 0E 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 D8 0E 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 5B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 50 CC 3D 00 48 DF 0F 00 45 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 61 72 76 65 64 53 6C 6F 74 5F 32 30 31 33 30 34 30 33 2E 6A 70 67 72 E2 F5 05 64 3F 4D 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 60 09 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 60 09 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 50 CC 3D 00 48 DF 0F 00 45 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 61 72 76 65 64 53 6C 6F 74 5F 32 30 31 33 30 34 30 33 2E 6A 70 67 73 E2 F5 05 64 3F 4D 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 C0 5D 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 C0 5D 00 00 00 00 00 00 0B 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 50 CC 3D 00 48 DF 0F 00 45 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 61 72 76 65 64 53 6C 6F 74 5F 32 30 31 33 30 34 30 33 2E 6A 70 67 7E E2 F5 05 E6 62 54 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 8C 0A 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 8C 0A 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 3D 00 50 CC 3D 00 A0 E1 0F 00 45 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 61 72 76 65 64 53 6C 6F 74 5F 32 30 31 33 30 34 30 33 2E 6A 70 67 7F E2 F5 05 93 E7 8A 00 01 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 B8 3D 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 40 50 3D 41 30 CE 01 00 80 05 BB 46 E6 17 02 00 32 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 74 E2 F5 05 64 3F 4D 00 00 00 00 00 E0 2E 00 00 AC 26 00 00 00 00 00 00 05 00 00 00 5A 00 00 00 02 00 00 00 06 2D 9A 00 9C 62 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 71 E2 F5 05 F8 62 54 00 01 00 00 00 D8 0E 00 00 54 0B 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 00 09 3D 00 50 CC 3D 00 A0 E1 0F 00 45 00 68 74 74 70 3A 2F 2F 6E 78 63 61 63 68 65 2E 6E 65 78 6F 6E 2E 6E 65 74 2F 6D 61 70 6C 65 73 74 6F 72 79 2F 73 68 6F 70 2F 67 61 6D 65 2F 43 61 72 76 65 64 53 6C 6F 74 5F 32 30 31 33 30 34 30 33 2E 6A 70 67 80 E2 F5 05 94 E7 8A 00 01 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 98 6C 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 40 50 3D 41 30 CE 01 00 80 05 BB 46 E6 17 02 28 55 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 01 01 00 01 02 00 00 00 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 75 E2 F5 05 64 3F 4D 00 00 00 00 00 C0 5D 00 00 D4 49 00 00 00 00 00 00 0A 00 00 00 5A 00 00 00 02 00 00 00 06 2D 9A 00 9C 62 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 09 2D 9A 00 9D 62 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00 71 E2 F5 05 F8 62 54 00 01 00 00 00 D8 0E 00 00 54 0B 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 02 00 00 00")); c.getSession().write(CField.getPacketFromHexString(head + " 05 01 06 C0 C6 2D 00 D0 ED 2D 00 D4 B7 0F 00 00 00 D9 FE FD 02 A0 A6 4F 00 01 00 00 00 00 00 00 00 00 00 00 00 32 00 00 00 30 75 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 AE 0B 00 00 5A 00 00 00 23 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 26 03 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 D0 ED 2D 00 38 B8 0F 00 00 00 88 2C 9A 00 AC AE 4F 00 01 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 D0 84 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 3E 0D 00 00 5A 00 00 00 0B 00 00 00 1E 00 00 00 00 01 01 00 00 02 00 00 00 BC 02 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 D0 ED 2D 00 20 07 10 00 00 00 13 FE FD 02 F0 DA 52 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 F4 1A 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 A8 02 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 2B 03 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 D0 ED 2D 00 15 54 10 00 00 00 9C F1 FA 02 58 95 4E 00 01 00 00 00 00 00 00 00 00 00 00 00 32 00 00 00 E4 0C 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 40 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 18 07 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 D0 ED 2D 00 16 54 10 00 00 00 C9 F1 FA 02 35 9D 4E 00 01 00 00 00 00 00 00 00 00 00 00 00 32 00 00 00 E4 0C 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 40 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 70 04 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 D0 ED 2D 00 34 A2 10 00 00 00 42 77 FC 02 7A C0 4C 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0C 17 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 44 02 00 00 5A 00 00 00 01 00 00 00 07 00 00 00 00 01 01 00 00 02 00 00 00 89 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00")); c.getSession().write(CField.getPacketFromHexString(head + " 06 01 05 C0 C6 2D 00 E0 14 2E 00 15 54 10 00 00 00 9C F1 FA 02 58 95 4E 00 01 00 00 00 04 00 00 00 00 00 00 00 32 00 00 00 E4 0C 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 40 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 18 07 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 E0 14 2E 00 16 54 10 00 00 00 C9 F1 FA 02 35 9D 4E 00 01 00 00 00 04 00 00 00 00 00 00 00 32 00 00 00 E4 0C 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 40 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 70 04 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 E0 14 2E 00 C4 90 0F 00 00 00 BF C3 C9 01 84 E7 4C 00 01 00 00 00 00 00 00 00 00 00 00 00 0F 00 00 00 AC 26 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 AC 26 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 01 01 01 00 01 02 00 00 00 22 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 E0 14 2E 00 38 B8 0F 00 00 00 87 2C 9A 00 AC AE 4F 00 01 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 48 0D 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 4A 01 00 00 5A 00 00 00 01 00 00 00 1E 00 00 00 00 01 01 00 00 02 00 00 00 10 08 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 E0 14 2E 00 D4 B7 0F 00 00 00 D9 FE FD 02 A0 A6 4F 00 01 00 00 00 00 00 00 00 00 00 00 00 32 00 00 00 30 75 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 AE 0B 00 00 5A 00 00 00 23 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 26 03 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00")); c.getSession().write(CField.getPacketFromHexString(head + " 09 01 01 C0 C6 2D 00 00 63 2E 00 B0 08 10 00 00 00 18 E3 F5 05 A8 69 52 00 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 01 00 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 01 01 01 01 01 02 00 00 00 65 01 00 00 32 00 00 00 0A 00 31 4D 53 35 34 30 31 30 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00")); c.getSession().write(CField.getPacketFromHexString(head + " 08 01 05 C0 C6 2D 00 F0 3B 2E 00 C4 90 0F 00 00 00 BF C3 C9 01 84 E7 4C 00 01 00 00 00 04 00 00 00 00 00 00 00 0F 00 00 00 AC 26 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 AC 26 00 00 00 00 00 00 01 00 00 00 1E 00 00 00 01 01 01 00 01 02 00 00 00 22 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 F0 3B 2E 00 74 E0 0F 00 00 00 7C FE FD 02 81 3A 54 00 01 00 00 00 04 00 00 00 00 00 00 00 02 00 00 00 A0 0F 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 86 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 B9 01 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 F0 3B 2E 00 E8 07 10 00 00 00 40 FE FD 02 70 13 54 00 01 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 F4 01 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 28 00 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 8C 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 F0 3B 2E 00 10 E0 0F 00 00 00 3D FE FD 02 D0 FD 54 00 01 00 00 00 04 00 00 00 00 00 00 00 04 00 00 00 24 13 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 E0 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 78 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 C6 2D 00 F0 3B 2E 00 74 E0 0F 00 00 00 35 FE FD 02 80 3A 54 00 01 00 00 00 04 00 00 00 00 00 00 00 03 00 00 00 B8 0B 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 22 01 00 00 5A 00 00 00 01 00 00 00 5A 00 00 00 00 01 01 00 00 02 00 00 00 F3 01 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00")); } public static void CSUpdate(final MapleClient c) { doCSPackets(c); } private static boolean CouponCodeAttempt(final MapleClient c) { c.couponAttempt++; return c.couponAttempt > 5; } public static void CouponCode(final String code, final MapleClient c) { if (code.length() <= 0) { return; } Triple<Boolean, Integer, Integer> info = null; try { info = MapleCharacterUtil.getNXCodeInfo(code); } catch (SQLException e) { } if (info != null && info.left) { if (!CouponCodeAttempt(c)) { int type = info.mid, item = info.right; try { MapleCharacterUtil.setNXCodeUsed(c.getPlayer().getName(), code); } catch (SQLException e) { } /* * Explanation of type! * Basically, this makes coupon codes do * different things! * * Type 1: A-Cash, * Type 2: Maple Points * Type 3: Item.. use SN * Type 4: Mesos */ Map<Integer, Item> itemz = new HashMap<>(); int maplePoints = 0, mesos = 0; switch (type) { case 1: case 2: c.getPlayer().modifyCSPoints(type, item, false); maplePoints = item; break; case 3: CashItemInfo itez = CashItemFactory.getInstance().getItem(item); if (itez == null) { c.getSession().write(CSPacket.sendCSFail(0)); return; } byte slot = MapleInventoryManipulator.addId(c, itez.getId(), (short) 1, "", "Cash shop: coupon code" + " on " + FileoutputUtil.CurrentReadable_Date()); if (slot < 0) { c.getSession().write(CSPacket.sendCSFail(0)); return; } else { itemz.put(item, c.getPlayer().getInventory(GameConstants.getInventoryType(item)).getItem(slot)); } break; case 4: c.getPlayer().gainMeso(item, false); mesos = item; break; } c.getSession().write(CSPacket.showCouponRedeemedItem(itemz, mesos, maplePoints, c)); doCSPackets(c); } } else { if (CouponCodeAttempt(c) == true) { c.getSession().write(CSPacket.sendCSFail(48)); //A1, 9F } else { c.getSession().write(CSPacket.sendCSFail(info == null ? 14 : 17)); //A1, 9F } } } public static void BuyCashItem(final LittleEndianAccessor slea, final MapleClient c, final MapleCharacter chr) { final int action = slea.readByte(); // System.out.println("action " + action); if (action == 0) { slea.skip(2); CouponCode(slea.readMapleAsciiString(), c); } else if (action == 2) { slea.skip(1); int type = slea.readInt();//type int sn = slea.readInt(); // final CashItem item = CashItemFactory.getInstance().getMenuItem(sn); final CashItem item = CashItemFactory.getInstance().getAllItem(sn); final int toCharge = slea.readInt();//price if (item == null) { c.getSession().write(CSPacket.sendCSFail(0)); } chr.modifyCSPoints(type, -toCharge, true); Item itemz = chr.getCashInventory().toItem(item); if (itemz != null) { chr.getCashInventory().addToInventory(itemz); c.getSession().write(CSPacket.showBoughtCSItem(itemz, item.getSN(), c.getAccID())); } else { c.getSession().write(CSPacket.sendCSFail(0)); } } else if (action == 101) {//TODO BETTER idk what it is // System.out.println("action 101");//might be farm mesos? RITE NOW IS FREEH slea.skip(1); int type = slea.readInt();//type int sn = slea.readInt(); final CashItem item = CashItemFactory.getInstance().getAllItem(sn); if (item == null) { c.getSession().write(CSPacket.sendCSFail(0)); } // chr.modifyCSPoints(type, -toCharge, true); Item itemz = chr.getCashInventory().toItem(item); if (itemz != null) { chr.getCashInventory().addToInventory(itemz); c.getSession().write(CSPacket.showBoughtCSItem(itemz, item.getSN(), c.getAccID())); } else { c.getSession().write(CSPacket.sendCSFail(0)); } } else if (action == 3) { slea.skip(1); final int toCharge = slea.readInt(); final CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt()); if (item != null && chr.getCSPoints(toCharge) >= item.getPrice()) { if (!item.genderEquals(c.getPlayer().getGender())/* && c.getPlayer().getAndroid() == null*/) { c.getSession().write(CSPacket.sendCSFail(0xA7)); doCSPackets(c); return; } else if (item.getId() == 5211046 || item.getId() == 5211047 || item.getId() == 5211048 || item.getId() == 5050100 || item.getId() == 5051001) { c.getSession().write(CWvsContext.broadcastMsg(1, "You cannot purchase this item through cash shop.")); c.getSession().write(CWvsContext.enableActions()); doCSPackets(c); return; } else if (c.getPlayer().getCashInventory().getItemsSize() >= 100) { c.getSession().write(CSPacket.sendCSFail(0xB2)); doCSPackets(c); return; } for (int id : GameConstants.cashBlock) { if (item.getId() == id) { c.getSession().write(CWvsContext.broadcastMsg(1, "You cannot purchase this item through cash shop.")); c.getSession().write(CWvsContext.enableActions()); doCSPackets(c); return; } } chr.modifyCSPoints(toCharge, -item.getPrice(), false); Item itemz = chr.getCashInventory().toItem(item); if (itemz != null && itemz.getUniqueId() > 0 && itemz.getItemId() == item.getId() && itemz.getQuantity() == item.getCount()) { chr.getCashInventory().addToInventory(itemz); //c.getSession().write(CSPacket.confirmToCSInventory(itemz, c.getAccID(), item.getSN())); c.getSession().write(CSPacket.showBoughtCSItem(itemz, item.getSN(), c.getAccID())); } else { c.getSession().write(CSPacket.sendCSFail(0)); } } else { c.getSession().write(CSPacket.sendCSFail(0)); } } else if (action == 4 /*|| action == 34*/) { //gift, package slea.readMapleAsciiString(); // pic final CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt()); if (action == 4) { slea.skip(1); } String partnerName = slea.readMapleAsciiString(); String msg = slea.readMapleAsciiString(); if (item == null || c.getPlayer().getCSPoints(1) < item.getPrice() || msg.length() > 73 || msg.length() < 1) { //dont want packet editors gifting random stuff =P c.getSession().write(CSPacket.sendCSFail(0)); doCSPackets(c); return; } Triple<Integer, Integer, Integer> info = MapleCharacterUtil.getInfoByName(partnerName, c.getPlayer().getWorld()); if (info == null || info.getLeft().intValue() <= 0 || info.getLeft().intValue() == c.getPlayer().getId() || info.getMid().intValue() == c.getAccID()) { c.getSession().write(CSPacket.sendCSFail(0xA2)); //9E v75 doCSPackets(c); return; } else if (!item.genderEquals(info.getRight().intValue())) { c.getSession().write(CSPacket.sendCSFail(0xA3)); doCSPackets(c); return; } else { //get the packets for that c.getPlayer().getCashInventory().gift(info.getLeft().intValue(), c.getPlayer().getName(), msg, item.getSN(), MapleInventoryIdentifier.getInstance()); c.getPlayer().modifyCSPoints(1, -item.getPrice(), false); c.getSession().write(CSPacket.sendGift(item.getPrice(), item.getId(), item.getCount(), partnerName, action == 34)); } } else if (action == 5) { //was Wishlist - Now inc inv slot slea.skip(1); final int toCharge = slea.readInt(); final boolean coupon = slea.readByte() > 0; if (coupon) { final MapleInventoryType type = getInventoryType(slea.readInt()); if (chr.getCSPoints(toCharge) >= 6000 && chr.getInventory(type).getSlotLimit() < 89) { chr.modifyCSPoints(toCharge, -6000, false); chr.getInventory(type).addSlot((byte) 8); chr.dropMessage(1, "Slots has been increased to " + chr.getInventory(type).getSlotLimit()); c.getSession().write(CField.getCharInfo(chr)); } else { c.getSession().write(CSPacket.sendCSFail(0xA4)); } } else { final MapleInventoryType type = MapleInventoryType.getByType(slea.readByte()); if (chr.getCSPoints(toCharge) >= 4000 && chr.getInventory(type).getSlotLimit() < 93) { chr.modifyCSPoints(toCharge, -4000, false); chr.getInventory(type).addSlot((byte) 4); chr.dropMessage(1, "Slots has been increased to " + chr.getInventory(type).getSlotLimit()); c.getSession().write(CField.getCharInfo(chr)); } else { c.getSession().write(CSPacket.sendCSFail(0xA4)); } } // chr.clearWishlist(); // if (slea.available() < 40) { // c.getSession().write(CSPacket.sendCSFail(0)); // doCSPackets(c); // return; // } // int[] wishlist = new int[10]; // for (int i = 0; i < 10; i++) { // wishlist[i] = slea.readInt(); // } // chr.setWishlist(wishlist); // c.getSession().write(CSPacket.sendWishList(chr, true)); } else if (action == 6) { // Increase inv slea.skip(1); final int toCharge = slea.readInt(); final boolean coupon = slea.readByte() > 0; if (coupon) { final MapleInventoryType type = getInventoryType(slea.readInt()); if (chr.getCSPoints(toCharge) >= 6000 && chr.getInventory(type).getSlotLimit() < 89) { chr.modifyCSPoints(toCharge, -6000, false); chr.getInventory(type).addSlot((byte) 8); chr.dropMessage(1, "Slots has been increased to " + chr.getInventory(type).getSlotLimit()); c.getSession().write(CField.getCharInfo(chr)); } else { c.getSession().write(CSPacket.sendCSFail(0xA4)); } } else { final MapleInventoryType type = MapleInventoryType.getByType(slea.readByte()); if (chr.getCSPoints(toCharge) >= 4000 && chr.getInventory(type).getSlotLimit() < 93) { chr.modifyCSPoints(toCharge, -4000, false); chr.getInventory(type).addSlot((byte) 4); chr.dropMessage(1, "Slots has been increased to " + chr.getInventory(type).getSlotLimit()); c.getSession().write(CField.getCharInfo(chr)); } else { c.getSession().write(CSPacket.sendCSFail(0xA4)); } } } else if (action == 7) { // Increase slot space slea.skip(1); final int toCharge = slea.readInt(); final int coupon = slea.readByte() > 0 ? 2 : 1; if (chr.getCSPoints(toCharge) >= 4000 * coupon && chr.getStorage().getSlots() < (49 - (4 * coupon))) { chr.modifyCSPoints(toCharge, -4000 * coupon, false); chr.getStorage().increaseSlots((byte) (4 * coupon)); chr.getStorage().saveToDB(); chr.dropMessage(1, "Storage slots increased to: " + chr.getStorage().getSlots()); c.getSession().write(CField.getCharInfo(chr)); } else { c.getSession().write(CSPacket.sendCSFail(0xA4)); } } else if (action == 8) { //...10 = pendant slot expansion slea.skip(1); final int toCharge = slea.readInt(); CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt()); int slots = c.getCharacterSlots(); if (item == null || c.getPlayer().getCSPoints(toCharge) < item.getPrice() || slots > 15 || item.getId() != 5430000) { c.getSession().write(CSPacket.sendCSFail(0)); doCSPackets(c); return; } if (c.gainCharacterSlot()) { c.getPlayer().modifyCSPoints(toCharge, -item.getPrice(), false); chr.dropMessage(1, "Character slots increased to: " + (slots + 1)); } else { c.getSession().write(CSPacket.sendCSFail(0)); } } else if (action == 10) { //...10 = pendant slot expansion //Data: 00 01 00 00 00 DC FE FD 02 slea.readByte(); //Action is short? slea.readInt(); //always 1 - No Idea final int sn = slea.readInt(); CashItemInfo item = CashItemFactory.getInstance().getItem(sn); if (item == null || c.getPlayer().getCSPoints(1) < item.getPrice() || item.getId() / 10000 != 555) { c.getSession().write(CSPacket.sendCSFail(0)); doCSPackets(c); return; } MapleQuestStatus marr = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.PENDANT_SLOT)); if (marr != null && marr.getCustomData() != null && Long.parseLong(marr.getCustomData()) >= System.currentTimeMillis()) { c.getSession().write(CSPacket.sendCSFail(0)); } else { c.getPlayer().getQuestNAdd(MapleQuest.getInstance(GameConstants.PENDANT_SLOT)).setCustomData(String.valueOf(System.currentTimeMillis() + ((long) item.getPeriod() * 24 * 60 * 60000))); c.getPlayer().modifyCSPoints(1, -item.getPrice(), false); chr.dropMessage(1, "Additional pendant slot gained."); } } else if (action == 14) { //get item from csinventory //uniqueid, 00 01 01 00, type->position(short) Item item = c.getPlayer().getCashInventory().findByCashId((int) slea.readLong()); // Item item = MapleItemInformationProvider.getInstance().getEquipById(item); if (item != null && item.getQuantity() > 0 && MapleInventoryManipulator.checkSpace(c, item.getItemId(), item.getQuantity(), item.getOwner())) { Item item_ = item.copy(); short pos = MapleInventoryManipulator.addbyItem(c, item_, true); if (pos >= 0) { if (item_.getPet() != null) { item_.getPet().setInventoryPosition(pos); c.getPlayer().addPet(item_.getPet()); } c.getPlayer().getCashInventory().removeFromInventory(item); c.getSession().write(CSPacket.confirmFromCSInventory(item_, pos)); } else { c.getSession().write(CSPacket.sendCSFail(0xB1)); } } else { c.getSession().write(CSPacket.sendCSFail(0xB1)); } } else if (action == 15) { //put item in cash inventory // System.out.println("action 15"); int uniqueid = (int) slea.readLong(); MapleInventoryType type = MapleInventoryType.getByType(slea.readByte()); Item item = c.getPlayer().getInventory(type).findByUniqueId(uniqueid); if (item != null && item.getQuantity() > 0 && item.getUniqueId() > 0 && c.getPlayer().getCashInventory().getItemsSize() < 100) { Item item_ = item.copy(); MapleInventoryManipulator.removeFromSlot(c, type, item.getPosition(), item.getQuantity(), false); if (item_.getPet() != null) { c.getPlayer().removePetCS(item_.getPet()); } item_.setPosition((byte) 0); c.getPlayer().getCashInventory().addToInventory(item_); c.getSession().write(CSPacket.showBoughtCSItem(item, item.getUniqueId(), c.getAccID())); //warning: this d/cs // c.getSession().write(CSPacket.confirmToCSInventory(item, c.getAccID(), itemz.getSN())); } else { c.getSession().write(CSPacket.sendCSFail(0xB1)); } } else if ((action == 33) || (action == 39)) { // slea.skip(5); slea.readMapleAsciiString(); int toCharge = slea.readInt(); CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt()); // slea.skip(1); String partnerName = slea.readMapleAsciiString(); String msg = slea.readMapleAsciiString(); if ((item == null) || (!GameConstants.isEffectRing(item.getId())) || (c.getPlayer().getCSPoints(toCharge) < item.getPrice()) || (msg.length() > 73) || (msg.length() < 1)) { c.getSession().write(CSPacket.sendCSFail(0)); doCSPackets(c); return; } if (!item.genderEquals(c.getPlayer().getGender())) { // c.getSession().write(MTSCSPacket.sendCSFail(166)); doCSPackets(c); return; } if (c.getPlayer().getCashInventory().getItemsSize() >= 100) { // c.getSession().write(MTSCSPacket.sendCSFail(177)); doCSPackets(c); return; } Triple info = MapleCharacterUtil.getInfoByName(partnerName, c.getPlayer().getWorld()); if ((info == null) || (((Integer) info.getLeft()).intValue() <= 0) || (((Integer) info.getLeft()).intValue() == c.getPlayer().getId())) { // c.getSession().write(MTSCSPacket.sendCSFail(180)); doCSPackets(c); return; } if (((Integer) info.getMid()).intValue() == c.getAccID()) { // c.getSession().write(MTSCSPacket.sendCSFail(163)); doCSPackets(c); return; } if ((((Integer) info.getRight()).intValue() == c.getPlayer().getGender()) && (action == 30)) { // c.getSession().write(MTSCSPacket.sendCSFail(161)); doCSPackets(c); return; } int err = MapleRing.createRing(item.getId(), c.getPlayer(), partnerName, msg, ((Integer) info.getLeft()).intValue(), item.getSN()); if (err != 1) { // c.getSession().write(MTSCSPacket.sendCSFail(0)); doCSPackets(c); return; } // c.getPlayer().modifyCSPoints(toCharge, -amount, false); c.getPlayer().dropMessage(1, "Purchase successful."); /* Item itemz = chr.getCashInventory().toItem(item); if ((itemz != null) && (itemz.getUniqueId() > 0) && (itemz.getItemId() == item.getId()) && (itemz.getQuantity() == item.getCount())) { chr.getCashInventory().addToInventory(itemz); c.getSession().write(MTSCSPacket.showBoughtCSItem(itemz, item.getSN(), c.getAccID())); } else { c.getSession().write(MTSCSPacket.sendCSFail(0)); }*/ } else if (action == 34) {//was 33 - packages slea.skip(1); int unk = slea.readInt();//is1 final CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt()); final int toCharge = slea.readInt(); List<Integer> ccc = null; if (item != null) { ccc = CashItemFactory.getInstance().getPackageItems(item.getId()); } if (item == null || ccc == null || c.getPlayer().getCSPoints(toCharge) < item.getPrice()) { c.getSession().write(CSPacket.sendCSFail(0)); doCSPackets(c); return; } else if (!item.genderEquals(c.getPlayer().getGender())) { c.getSession().write(CSPacket.sendCSFail(0xA6)); doCSPackets(c); return; } else if (c.getPlayer().getCashInventory().getItemsSize() >= (100 - ccc.size())) { c.getSession().write(CSPacket.sendCSFail(0xB1)); doCSPackets(c); return; } Map<Integer, Item> ccz = new HashMap<>(); for (int i : ccc) { final CashItemInfo cii = CashItemFactory.getInstance().getSimpleItem(i); if (cii == null) { continue; } Item itemz = c.getPlayer().getCashInventory().toItem(cii); if (itemz == null || itemz.getUniqueId() <= 0) { continue; } for (int iz : GameConstants.cashBlock) { if (itemz.getItemId() == iz) { } } ccz.put(i, itemz); c.getPlayer().getCashInventory().addToInventory(itemz); } chr.modifyCSPoints(toCharge, -item.getPrice(), false); c.getSession().write(CSPacket.showBoughtCSPackage(ccz, c.getAccID())); } else if (action == 35 || action == 99) { //99 buy with mesos final CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt()); if (item == null || !MapleItemInformationProvider.getInstance().isQuestItem(item.getId())) { c.getSession().write(CSPacket.sendCSFail(0)); doCSPackets(c); return; } else if (c.getPlayer().getMeso() < item.getPrice()) { c.getSession().write(CSPacket.sendCSFail(0xB8)); doCSPackets(c); return; } else if (c.getPlayer().getInventory(GameConstants.getInventoryType(item.getId())).getNextFreeSlot() < 0) { c.getSession().write(CSPacket.sendCSFail(0xB1)); doCSPackets(c); return; } byte pos = MapleInventoryManipulator.addId(c, item.getId(), (short) item.getCount(), null, "Cash shop: quest item" + " on " + FileoutputUtil.CurrentReadable_Date()); if (pos < 0) { c.getSession().write(CSPacket.sendCSFail(0xB1)); doCSPackets(c); return; } chr.gainMeso(-item.getPrice(), false); c.getSession().write(CSPacket.showBoughtCSQuestItem(item.getPrice(), (short) item.getCount(), pos, item.getId())); } else if (action == 48) { c.getSession().write(CSPacket.updatePurchaseRecord()); } else if (action == 91) { // Open random box. final int uniqueid = (int) slea.readLong(); //c.getSession().write(CSPacket.sendRandomBox(uniqueid, new Item(1302000, (short) 1, (short) 1, (short) 0, 10), (short) 0)); //} else if (action == 99) { //buy with mesos // int sn = slea.readInt(); // int price = slea.readInt(); } else { System.out.println("New Action: " + action + " Remaining: " + slea.toString()); c.getSession().write(CSPacket.sendCSFail(0)); } doCSPackets(c); } public static void SwitchCategory(final LittleEndianAccessor slea, final MapleClient c) { int Scategory = slea.readByte(); // System.out.println("Scategory " + Scategory); if (Scategory == 103) { slea.skip(1); int itemSn = slea.readInt(); try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO `wishlist` VALUES (?, ?)")) { ps.setInt(1, c.getPlayer().getId()); ps.setInt(2, itemSn); ps.executeUpdate(); ps.close(); } catch (SQLException ex) { System.out.println("error"); } c.getSession().write(CSPacket.addFavorite(false, itemSn)); } else if (Scategory == 105) { int item = slea.readInt(); try { Connection con = DatabaseConnection.getConnection(); try (PreparedStatement ps = con.prepareStatement("UPDATE cashshop_items SET likes = likes+" + 1 + " WHERE sn = ?")) { ps.setInt(1, item); ps.executeUpdate(); } } catch (SQLException ex) { } c.getSession().write(CSPacket.Like(item)); } else if (Scategory == 109) { c.getSession().write(CSPacket.Favorite(c.getPlayer())); } else if (Scategory == 112) {//click on special item TODO //int C8 - C9 - CA } else if (Scategory == 113) {//buy from cart inventory TODO //byte buy = 1 or gift = 0 //byte amount //for each SN } else { int category = slea.readInt(); if (category == 4000000) { c.getSession().write(CSPacket.CS_Top_Items()); c.getSession().write(CSPacket.CS_Picture_Item()); } else if (category == 1060100) { c.getSession().write(CSPacket.showNXChar(category)); c.getSession().write(CSPacket.changeCategory(category)); } else { // System.err.println(category); c.getSession().write(CSPacket.changeCategory(category)); } } } private static MapleInventoryType getInventoryType(final int id) { switch (id) { case 50200093: return MapleInventoryType.EQUIP; case 50200094: return MapleInventoryType.USE; case 50200197: return MapleInventoryType.SETUP; case 50200095: return MapleInventoryType.ETC; default: return MapleInventoryType.UNDEFINED; } } public static void doCSPackets(MapleClient c) { c.getSession().write(CSPacket.getCSInventory(c)); c.getSession().write(CSPacket.doCSMagic()); c.getSession().write(CSPacket.getCSGifts(c)); c.getSession().write(CWvsContext.BuddylistPacket.updateBuddylist(c.getPlayer().getBuddylist().getBuddies())); c.getSession().write(CSPacket.showNXMapleTokens(c.getPlayer())); // c.getSession().write(CSPacket.sendWishList(c.getPlayer(), false)); c.getSession().write(CSPacket.showNXMapleTokens(c.getPlayer())); c.getSession().write(CSPacket.enableCSUse()); c.getPlayer().getCashInventory().checkExpire(c); } }