package handling.cashshop.handler;
import client.MapleCharacter;
import client.MapleCharacterUtil;
import client.MapleClient;
import client.MapleQuestStatus;
import client.inventory.Item;
import client.inventory.MapleInventory;
import client.inventory.MapleInventoryIdentifier;
import client.inventory.MapleInventoryType;
import client.inventory.MapleRing;
import constants.GameConstants;
import constants.ItemConstants;
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.CashShop;
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.CSPacket;
import tools.packet.CWvsContext;
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(true);
}
}
public static void EnterCS(final CharacterTransfer transfer, final MapleClient c) {
if (transfer == null) {
c.getSession().close(true);
return;
}
MapleCharacter chr = MapleCharacter.ReconstructChr(transfer, c, false);
c.setPlayer(chr);
c.setAccID(chr.getAccountID());
if (!c.CheckIPAddress()) { // Remote hack
c.getSession().close(true);
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(true);
return;
}
c.updateLoginState(MapleClient.LOGIN_LOGGEDIN, c.getSessionIPAddress());
CashShopServer.getPlayerStorage().registerPlayer(chr);
c.getSession().write(CSPacket.warpCS(c));
c.getSession().write(CSPacket.warpCSInfo(c));
c.getSession().write(CSPacket.disableCS());
// 0x159
c.getSession().write(CSPacket.CashUse(10500002, 0x32, 0xD2, 20130320, 20130326));
c.getSession().write(CSPacket.CashUse2(0x3));
c.getSession().write(CSPacket.getCSInventory(c));
c.getSession().write(CSPacket.CashUse3());
//c.getSession().write(CSPacket.CS_Picture_Item()); // Updated - Need to check if nothing changed
//c.getSession().write(CSPacket.CS_Top_Items()); // Updated to v146.1
//c.getSession().write(CSPacket.CS_Special_Item()); // Updated to v146.1
//c.getSession().write(CSPacket.CS_Featured_Item()); // Updated to v146.
c.getSession().write(CSPacket.doCSMagic());
c.getSession().write(CSPacket.getCSGifts(c));
c.getSession().write(CSPacket.showCSAccount(c));
c.getSession().write(CSPacket.sendWishList(c.getPlayer(), false));
c.getSession().write(CSPacket.CashUse4());
c.getSession().write(CSPacket.showNXMapleTokens(c.getPlayer()));
c.getSession().write(CSPacket.showNXMapleTokens(c.getPlayer()));
}
public static void loadCashShop(MapleClient c) {
c.getSession().write(CSPacket.loadCategories(c));
String head = "E2 02";
c.getSession().write(CField.getPacketFromHexString(head + " 04 01 09 00 09 3D 00 40 A5 3D 00 38 6D 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 1B E5 F5 05 30 71 54 00 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 B8 0B 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 40 36 59 61 3A CF 01 00 00 A0 83 2A 3B CF 01 84 03 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 05 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 E4 DE 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 0F E4 F5 05 E2 E7 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 40 38 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 2A 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 10 E4 F5 05 79 3D 4D 00 01 00 00 00 40 38 00 00 30 2A 00 00 00 00 00 00 0C 00 00 00 5A 00 00 00 02 00 00 00 BC E1 F5 05 FF 61 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 40 A5 3D 00 E4 DE 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 13 E4 F5 05 E4 E7 8A 00 01 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 20 67 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 58 4D 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 14 E4 F5 05 7A 3D 4D 00 01 00 00 00 20 67 00 00 58 4D 00 00 00 00 00 00 0C 00 00 00 5A 00 00 00 02 00 00 00 BC E1 F5 05 FF 61 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 40 A5 3D 00 E4 DE 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 0A E4 F5 05 79 3D 4D 00 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 E0 2E 00 00 00 80 22 D6 94 EF C4 01 00 80 05 BB 46 E6 17 02 00 40 36 59 61 3A CF 01 80 69 07 83 2A 3B CF 01 10 27 00 00 00 00 00 00 0B 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 10 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 E4 DE 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 73 E2 F5 05 64 3F 4D 00 01 00 00 00 00 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 00 01 00 01 00 00 00 01 00 02 00 00 00 0F 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 A0 E1 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 7F E2 F5 05 93 E7 8A 00 01 00 00 00 03 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 00 01 00 01 00 00 00 01 00 02 00 00 00 09 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 40 A5 3D 00 A0 E1 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 80 E2 F5 05 94 E7 8A 00 01 00 00 00 03 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 00 01 00 01 00 00 00 01 00 02 00 00 00 11 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 00 09 3D 00 40 A5 3D 00 48 DF 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 71 E2 F5 05 F8 62 54 00 01 00 00 00 00 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 00 01 00 01 00 00 00 01 00 02 00 00 00 18 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 48 DF 0F 00 55 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 73 70 6F 74 6C 69 67 68 74 2F 32 38 36 2F 30 30 45 53 33 2D 64 62 33 63 63 36 64 38 2D 32 36 31 62 2D 34 35 36 30 2D 38 33 31 33 2D 62 30 36 61 66 62 66 30 66 34 39 34 2E 6A 70 67 7E E2 F5 05 E6 62 54 00 01 00 00 00 00 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 00 01 00 01 00 00 00 01 00 02 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"));
c.getSession().write(CField.getPacketFromHexString(head + " 05 01 04 C0 C6 2D 00 D0 ED 2D 00 48 DF 0F 00 00 00 71 E2 F5 05 F8 62 54 00 01 00 00 00 00 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 00 01 00 01 00 00 00 01 00 02 00 00 00 18 00 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 D0 ED 2D 00 48 DF 0F 00 00 00 7E E2 F5 05 E6 62 54 00 01 00 00 00 00 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 00 01 00 01 00 00 00 01 00 02 00 00 00 07 00 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 D0 ED 2D 00 D4 B7 0F 00 00 00 DA FE FD 02 A0 A6 4F 00 01 00 00 00 00 00 00 00 00 00 00 00 32 00 00 00 10 27 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 10 27 00 00 00 00 00 00 0B 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 23 02 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 D0 ED 2D 00 7C 6A 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 48 0D 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 23 08 00 00 00 00 00 00 00 00 00 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 E4 0C 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 11 07 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 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 E4 0C 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 77 04 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 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 00 01 00 01 00 00 00 01 00 02 00 00 00 24 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 7C 6A 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 48 0D 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 23 08 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 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 30 75 00 00 00 00 00 00 23 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 DA 02 00 00 00 00 00 00 00 00 00 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 00 01 00 01 00 00 00 01 00 02 00 00 00 24 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 A0 0F 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 B8 01 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 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 F4 01 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 8E 00 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 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 24 13 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 77 00 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 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 B8 0B 00 00 00 00 00 00 01 00 00 00 5A 00 00 00 01 00 01 00 01 00 00 00 01 00 02 00 00 00 F2 01 00 00 00 00 00 00 00 00 00 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: 樂豆點數
* Type 2: 楓葉點數
* Type 3: 普通物品(SN)
* Type 4: 楓幣
*/
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();
int sn = slea.readInt();
final CashItem item = CashItemFactory.getInstance().getAllItem(sn);
final int toCharge = slea.readInt();
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) { // 購買道具
final int toCharge = slea.readByte() + 1;
slea.skip(1);
slea.skip(1);
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, "目前無法購買本道具。"));
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, "目前無法購買本道具。"));
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*/) {
} else if (action == 5) { // 購物車
chr.clearWishlist();
if (slea.available() < 48) {
c.getSession().write(CSPacket.sendCSFail(0));
doCSPackets(c);
return;
}
int[] wishlist = new int[12];
for (int i = 0; i < 12; i++) {
wishlist[i] = slea.readInt();
}
chr.setWishlist(wishlist);
c.getSession().write(CSPacket.sendWishList(chr, true));
} else if (action == 6) { // 擴充道具欄位
final int toCharge = slea.readByte() + 1;
final boolean coupon = slea.readByte() > 0;
if (coupon) {
final MapleInventoryType type = getInventoryType(slea.readInt());
if ((type == MapleInventoryType.SETUP ? chr.getCSPoints(toCharge) >= 150 : chr.getCSPoints(toCharge) >= 180) && chr.getInventory(type).getSlotLimit() < 89) {
chr.modifyCSPoints(toCharge, type == MapleInventoryType.SETUP ? -150 : -180, false);
chr.getInventory(type).addSlot((byte) 8);
chr.dropMessage(1, "道具欄位擴充至 " + chr.getInventory(type).getSlotLimit() + " 格。");
} else {
c.getSession().write(CSPacket.sendCSFail(0xA4));
}
} else {
final MapleInventoryType type = MapleInventoryType.getByType(slea.readByte());
if (chr.getCSPoints(toCharge) >= 100 && chr.getInventory(type).getSlotLimit() < 93) {
chr.modifyCSPoints(toCharge, -100, false);
chr.getInventory(type).addSlot((byte) 4);
chr.dropMessage(1, "道具欄位擴充至 " + chr.getInventory(type).getSlotLimit() + " 格。");
} else {
c.getSession().write(CSPacket.sendCSFail(0xA4));
}
}
} else if (action == 7) { // 擴充倉庫欄位
final int toCharge = slea.readByte() + 1;
final int coupon = slea.readByte() > 0 ? 2 : 1;
if ((coupon == 1 ? chr.getCSPoints(toCharge) >= 100 : chr.getCSPoints(toCharge) >= 180) && chr.getStorage().getSlots() < (49 - (4 * coupon))) {
chr.modifyCSPoints(toCharge, coupon == 1 ? -100 : -180, false);
chr.getStorage().increaseSlots((byte) (4 * coupon));
chr.getStorage().saveToDB();
chr.dropMessage(1, "道具欄位擴充至 " + chr.getStorage().getSlots() + " 格。");
} else {
c.getSession().write(CSPacket.sendCSFail(0xA4));
}
} else if (action == 8) { // 擴充角色欄位
final int toCharge = slea.readByte() + 1;
CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt());
int slots = c.getCharacterSlots();
if (item == null || c.getPlayer().getCSPoints(toCharge) < item.getPrice() || slots >= 30 || 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, "角色欄位擴充至 " + (slots + 1) + " 格。");
} else {
c.getSession().write(CSPacket.sendCSFail(0));
}
} else if (action == 10) { // 擴充墜飾欄位
final int toCharge = slea.readByte() + 1;
final int sn = slea.readInt();
CashItemInfo item = CashItemFactory.getInstance().getItem(sn);
if (item == null || c.getPlayer().getCSPoints(toCharge) < item.getPrice() || item.getId() / 10000 != 555) {
c.getSession().write(CSPacket.sendCSFail(0));
doCSPackets(c);
return;
}
MapleQuestStatus marr = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.墜飾欄));
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.墜飾欄)).setCustomData(String.valueOf(System.currentTimeMillis() + ((long) item.getPeriod() * 24 * 60 * 60000)));
c.getPlayer().modifyCSPoints(toCharge, -item.getPrice(), false);
chr.dropMessage(1, "墜飾欄位擴充成功。");
}
} else if (action == 14) { // 購物商城→道具欄位
Item item = c.getPlayer().getCashInventory().findByCashId((int) slea.readLong());
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) { // 道具欄位→購物商城
Item item1;
int sn;
CashShop cs = chr.getCashInventory();
int cashId = (int) slea.readLong();
byte type = slea.readByte();
MapleInventory mi = chr.getInventory(MapleInventoryType.getByType(type));
item1 = mi.findByUniqueId(cashId);
if (item1 == null) {
c.getSession().write(CSPacket.showNXMapleTokens(chr));
return;
}
if (cs.getItemsSize() < 100) {
sn = CashItemFactory.getInstance().getItemSN(item1.getItemId());
cs.addToInventory(item1);
mi.removeSlot(item1.getPosition());
c.getSession().write(CSPacket.confirmToCSInventory(item1, c.getAccID(), sn));
} else {
chr.dropMessage(1, "移動失敗。");
}
} else if (action == 34 || action == 40) { // 好友戒指
slea.readMapleAsciiString();
final int toCharge = slea.readByte() + 1;
final CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt());
slea.readInt();
final String partnerName = slea.readMapleAsciiString();
final String msg = slea.readMapleAsciiString();
if (item == null || !ItemConstants.類型.特效戒指(item.getId()) || c.getPlayer().getCSPoints(toCharge) < item.getPrice() || msg.getBytes().length > 73 || msg.getBytes().length < 1) {
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) {
c.getSession().write(CSPacket.sendCSFail(0xB1));
doCSPackets(c);
return;
}
Triple<Integer, Integer, Integer> info = MapleCharacterUtil.getInfoByName(partnerName, c.getPlayer().getWorld());
if (info == null || info.getLeft() <= 0 || info.getLeft() == c.getPlayer().getId()) {
c.getSession().write(CSPacket.sendCSFail(0xB4));
doCSPackets(c);
return;
} else if (info.getMid() == c.getAccID()) {
c.getSession().write(CSPacket.sendCSFail(0xA3));
doCSPackets(c);
return;
} else {
if (info.getRight() == c.getPlayer().getGender() && action == 30) {
c.getSession().write(CSPacket.sendCSFail(0xA1));
doCSPackets(c);
return;
}
int err = MapleRing.createRing(item.getId(), c.getPlayer(), partnerName, msg, info.getLeft().intValue(), item.getSN());
if (err != 1) {
c.getSession().write(CSPacket.sendCSFail(0));
doCSPackets(c);
return;
}
c.getPlayer().modifyCSPoints(toCharge, -item.getPrice(), false);
}
} else if (action == 35) { // 購買套組
final int toCharge = slea.readByte() + 1;
final CashItemInfo item = CashItemFactory.getInstance().getItem(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 == 37 || action == 99) { // 購買任務道具
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 == 49) {
// c.getSession().write(CSPacket.updatePurchaseRecord());
} else if (action == 58) { //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 == 63) { // 商城隨機箱開啟
} 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 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();
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 {
System.out.println("未知操作碼: " + action + " Remaining: " + slea.toString());
c.getSession().write(CSPacket.sendCSFail(0));
}
doCSPackets(c);
}
public static void sendCSgift(final LittleEndianAccessor slea, final MapleClient c) {
String secondPassword = slea.readMapleAsciiString();
final CashItemInfo item = CashItemFactory.getInstance().getItem(slea.readInt());
String partnerName = slea.readMapleAsciiString();
String msg = slea.readMapleAsciiString();
// if (!secondPassword.equals(c.getSecondPassword())) {
// c.getPlayer().dropMessage(1, "第二組密碼錯誤,請重新輸入。");
// doCSPackets(c);
// return;
// }
if (item == null || c.getPlayer().getCSPoints(1) < item.getPrice() || msg.getBytes().length > 73 || msg.getBytes().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() <= 0 || info.getLeft() == c.getPlayer().getId() || info.getMid() == c.getAccID()) {
c.getSession().write(CSPacket.sendCSFail(0xA2));
doCSPackets(c);
return;
} else if (!item.genderEquals(info.getRight())) {
c.getSession().write(CSPacket.sendCSFail(0xA3));
doCSPackets(c);
return;
} else {
c.getPlayer().getCashInventory().gift(info.getLeft(), 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, true));
}
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(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 140500002:
return MapleInventoryType.EQUIP;
case 140500003:
return MapleInventoryType.USE;
case 140500005:
return MapleInventoryType.SETUP;
case 140500004:
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.getCSInventory(c));
c.getSession().write(CSPacket.disableCS());
//c.getSession().write(CSPacket.enableCSUse());
//c.getPlayer().getCashInventory().checkExpire(c);
}
}