package tools.packet;
import client.MapleCharacter;
import client.MapleClient;
import client.MapleStat;
import client.inventory.Equip;
import client.inventory.Item;
import client.inventory.MapleInventoryType;
import constants.GameConstants;
import constants.ItemConstants;
import handling.CashShopOpcode;
import handling.SendPacketOpcode;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import server.cashshop.CashItemFactory;
import server.cashshop.CashItemInfo;
import server.cashshop.CashShop;
import tools.FileoutputUtil;
import tools.HexTool;
import tools.Pair;
import tools.data.output.MaplePacketLittleEndianWriter;
public class MTSCSPacket {
/**
* 进入商城发角色信息
* @param c
* @return
*/
public static byte[] warpchartoCS(MapleClient c) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_CHAR.getValue());
PacketHelper.addCharacterInfo(mplew, c.getPlayer());
// mplew.write(1); // 0 = beta or someshit lol
mplew.writeMapleAsciiString(c.getAccountName());
mplew.writeShort(2); // wishlist i think.. o.o
mplew.writeInt(10000001);
mplew.writeInt(10000002);
// 4* 上面个数个字节
// 特别推荐 貌似会自动填充到对应的类别里面
Map<Integer,CashItemInfo> cashinfo = CashItemFactory.getInstance().getItemStats();
int size = 0;
for (Map.Entry csInfo : cashinfo.entrySet()) {
if ((int)csInfo.getKey() <= 80000000) {
size++;
}
}
mplew.writeShort(size);
FileoutputUtil.log("商城道具个数:"+size);
for (Map.Entry csInfo : cashinfo.entrySet()) {
CashItemInfo stats = (CashItemInfo)csInfo.getValue();
if ((int)csInfo.getKey() > 80000000) // 剩下金币包需要处理
continue;
mplew.writeInt((int)csInfo.getKey()); // sn
mplew.writeInt(stats.getId()); // itemID
mplew.writeInt(stats.getCount()); // 多少个
mplew.writeInt(stats.getPrice());
mplew.writeInt(stats.getPrice()); // 打折后价格
mplew.writeInt(stats.getPeriod()); // 可用天数
mplew.writeInt(2);
mplew.writeInt(8);
mplew.write(0);
mplew.writeInt(getTime());
mplew.write(1); // 0则不能购买
mplew.writeInt(getTime()+86400);
mplew.write(0);
mplew.writeInt(0);
mplew.writeInt(0);
}
// 下面是960个字节 囧 30个道具?
//int[] itemz = new int[]{10000281, 10000282, 10000283, 10000284, 10000285};
// CashItemFactory cashinfo = CashItemFactory.getInstance();
// int writeByte = 8;
// mplew.writeInt(0xE);
// mplew.writeInt(0xE);
// int i=0;
// for (i=0;i<15;i++) {
// mplew.writeInt(10000001+i);
// writeByte += 4;
// }
// i=0;
// for (i=0;i<5;i++) {
// mplew.writeInt(20900012);
// mplew.writeInt(1);
// mplew.writeInt(1);
// writeByte += 12;
// }
// if (writeByte < 960) {
// mplew.writeZero(960-writeByte);
// }
// 1-推荐;2-装备;3-消耗;5-其它;6-宠物
for (byte i = 1; i <= 8; i++) {
for (byte j = 0; j <= 1; j++) {
mplew.writeInt(30100004); // best items, these are just first id's in Commodity
mplew.writeInt(i);
mplew.writeInt(j);
mplew.writeInt(30000000);
mplew.writeInt(i);
mplew.writeInt(j);
mplew.writeInt(50200009);
mplew.writeInt(i);
mplew.writeInt(j);
mplew.writeInt(50000017);
mplew.writeInt(i);
mplew.writeInt(j);
mplew.writeInt(50000015);
mplew.writeInt(i);
mplew.writeInt(j);
}
}
// FileoutputUtil.log("写入字节数:"+writeByte);
// 商城礼包
mplew.writeShort(5); // Stock
mplew.writeInt(-1); // 1 = Sold Out, 2 = Not Sold
mplew.writeInt(20900028);
mplew.writeInt(0); // 1 = Sold Out, 2 = Not Sold
mplew.writeInt(20900027);
mplew.writeInt(2); // 1 = Sold Out, 2 = Not Sold
mplew.writeInt(20900026);
mplew.writeInt(4); // 1 = Sold Out, 2 = Not Sold
mplew.writeInt(20900026);
mplew.writeInt(5); // 1 = Sold Out, 2 = Not Sold
mplew.writeInt(20900026);
return mplew.getPacket();
}
public static byte[] playCashSong(int itemid, String name) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CASH_SONG.getValue());
mplew.writeInt(itemid);
mplew.writeMapleAsciiString(name);
return mplew.getPacket();
}
public static byte[] addCharBox(MapleCharacter c, int itemId) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.UPDATE_CHAR_BOX.getValue());
mplew.writeInt(c.getId());
mplew.writeInt(itemId);
return mplew.getPacket();
}
public static byte[] removeCharBox(MapleCharacter c) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.UPDATE_CHAR_BOX.getValue());
mplew.writeInt(c.getId());
mplew.writeInt(0);
return mplew.getPacket();
}
public static byte[] useCharm(byte charmsleft, byte daysleft) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.SHOW_SPECIAL_EFFECT.getValue());
mplew.write(0x9);
mplew.write(1);
mplew.write(charmsleft);
mplew.write(daysleft);
return mplew.getPacket();
}
public static byte[] useWheel(byte charmsleft) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.SHOW_SPECIAL_EFFECT.getValue());
mplew.write(0x18);
mplew.writeLong(charmsleft);
return mplew.getPacket();
}
public static byte[] useAlienSocket(boolean start) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.ALIEN_SOCKET_CREATOR.getValue());
mplew.write(start ? 0 : 2);
return mplew.getPacket();
}
public static byte[] sendHammerData(boolean start, int hammered) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.VICIOUS_HAMMER.getValue());
mplew.write(start ? 59 : 67);//0x57
mplew.writeInt(0);
if (start) {
mplew.writeInt(hammered);
}
return mplew.getPacket();
}
public static byte[] sendHammerData(int type, int value) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.VICIOUS_HAMMER.getValue());
mplew.write(type);
mplew.writeInt(value);
return mplew.getPacket();
}
public static byte[] changePetFlag(int uniqueId, boolean added, int flagAdded) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.PET_FLAG_CHANGE.getValue());
mplew.writeLong(uniqueId);
mplew.write(added ? 1 : 0);
mplew.writeShort(flagAdded);
return mplew.getPacket();
}
public static byte[] changePetName(MapleCharacter chr, String newname, int slot) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.PET_NAMECHANGE.getValue());
mplew.writeInt(chr.getId());
mplew.write(0);
mplew.writeMapleAsciiString(newname);
mplew.writeInt(slot);
return mplew.getPacket();
}
public static byte[] showNotes(ResultSet notes, int count) throws SQLException {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.SHOW_NOTES.getValue());
mplew.write(3);
mplew.write(count);
for (int i = 0; i < count; i++) {
mplew.writeInt(notes.getInt("id"));
mplew.writeMapleAsciiString(notes.getString("from"));
mplew.writeMapleAsciiString(notes.getString("message"));
mplew.writeLong(PacketHelper.getKoreanTimestamp(notes.getLong("timestamp")));
mplew.write(notes.getInt("gift"));
notes.next();
}
return mplew.getPacket();
}
public static byte[] useChalkboard(int charid, String msg) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CHALKBOARD.getValue());
mplew.writeInt(charid);
if ((msg == null) || (msg.length() <= 0)) {
mplew.write(0);
} else {
mplew.write(1);
mplew.writeMapleAsciiString(msg);
}
return mplew.getPacket();
}
/**
* 刷新传送石头信息
* @param chr
* @param vip
* @param delete
* @return
*/
public static byte[] getTrockRefresh(MapleCharacter chr, byte vip, boolean delete) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.TROCK_LOCATIONS.getValue());
mplew.write(2);
int[] map = chr.getRegRocks();
for (int i = 0; i < 5; i++) {
mplew.writeInt(map[i]);
}
return mplew.getPacket();
}
/**
* 错误信息
* 0xA-不能登录的地图
* 0x5-未知原因,请求失败
* 0x9-你现在位置的地图?
* 0x6/7-现在找不到%s玩家的位置,不能做瞬间移动
* 0x8-不能移动到您指定的位置
* @param op
* @return
*/
public static byte[] getTrockMessage(byte op) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.TROCK_LOCATIONS.getValue());
mplew.write(op);
return mplew.getPacket();
}
public static byte[] 测试封包(String test) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(HexTool.getByteArrayFromHexString(test));
return mplew.getPacket();
}
public static byte[] enableCSUse(int type) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_USE.getValue());
mplew.write(type);
mplew.writeInt(0);
return mplew.getPacket();
}
/**
* 更新玩家点卷信息
* @param chr
* @return
*/
public static byte[] 刷新点券信息(MapleCharacter chr) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_UPDATE.getValue());
mplew.writeInt(chr.getCSPoints(1));
mplew.writeInt(chr.getCSPoints(2));
return mplew.getPacket();
}
public static byte[] updataMeso(MapleCharacter chr) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_UPDATE_MESO.getValue());
mplew.writeLong(MapleStat.金币.getValue());
mplew.writeLong(chr.getMeso());
return mplew.getPacket();
}
/**
* 商城道具栏信息
* @param c
* @return
*/
public static byte[] 商城道具栏信息(MapleClient c) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
//mplew.write(CashShopOpcode.加载道具栏.getValue());
mplew.write(0x1D);
CashShop mci = c.getPlayer().getCashInventory();
// int size = 0;
FileoutputUtil.log("商城保管箱道具个数:"+mci.getItemsSize());
mplew.writeShort(mci.getItemsSize());
for (Item itemz : mci.getInventory()) {
mplew.writeLong(itemz.getUniqueId() > 0 ? itemz.getUniqueId() : 0L);
mplew.writeInt(c.getAccID());
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeInt(itemz.getItemId());
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeShort(itemz.getQuantity());
mplew.writeAsciiString(itemz.getGiftFrom(), 13);
PacketHelper.addExpirationTime(mplew, itemz.getExpiration());
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeShort(0);
// addCashItemInfo(mplew, itemz, c.getAccID(), 0);
// if (ItemConstants.isPet(itemz.getItemId())) {
// size++;
// }
}
mplew.writeShort(0); // 104 * size 应该是宠物的结构体
mplew.writeShort(0);
// mplew.writeInt(size);
// if (mci.getInventory().size() > 0) {
// for (Item itemz : mci.getInventory()) {
// if (ItemConstants.isPet(itemz.getItemId())) {
// PacketHelper.addItemInfo(mplew, itemz);
// }
// }
// }
// mplew.writeShort(c.getPlayer().getStorage().getSlots());
// mplew.writeShort(c.getAccCharSlots());
// mplew.writeShort(0);
// //mplew.writeShort(3);
// mplew.writeShort(c.getAccCharSlots());
return mplew.getPacket();
}
/**
* 商城礼物信息
* @param c
* @param gifts
* @return
*/
public static byte[] 商城礼物信息(MapleClient c, List<Pair<Item, String>> gifts) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.加载礼物.getValue());
mplew.writeShort(0); // 53*size
mplew.writeShort(0); // 104*size
mplew.writeShort(0);
/*
mplew.writeShort(gifts.size());
for (Pair gift : gifts) {
mplew.writeLong(((Item) gift.getLeft()).getUniqueId());
mplew.writeInt(((Item) gift.getLeft()).getItemId());
mplew.writeAsciiString(((Item) gift.getLeft()).getGiftFrom(), 13);
mplew.writeAsciiString((String) gift.getRight(), 73);
}*/
return mplew.getPacket();
}
public static byte[] 商城购物车(MapleCharacter chr, boolean update) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(update ? CashShopOpcode.更新购物车.getValue() : 0x4C);
int[] list = chr.getWishlist();
for (int i = 0; i < 10; i++) {
mplew.writeInt(list[i] != -1 ? list[i] : 0);
}
return mplew.getPacket();
}
/**
* 购买商城道具
* @param item
* @param sn
* @param accid
* @return
*/
public static byte[] 购买商城道具(Item item, int sn, int accid) { //
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(0x23);
// 53个字节
mplew.writeLong(item.getUniqueId() > 0 ? item.getUniqueId() : 0L);
mplew.writeInt(accid);
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeInt(item.getItemId());
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeShort(item.getQuantity()); // 26
mplew.writeAsciiString(item.getGiftFrom(), 13); // 39
PacketHelper.addExpirationTime(mplew, item.getExpiration()); // 47
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01")); // 51
mplew.writeShort(0); // 53
return mplew.getPacket();
}
/**
* 商城送礼
* @param itemid
* @param quantity
* @param receiver
* @return
*/
public static byte[] 商城送礼(int itemid, int quantity, String receiver) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.商城送礼.getValue());
mplew.writeMapleAsciiString(receiver);
mplew.writeInt(itemid);
mplew.writeShort(quantity);
return mplew.getPacket();
}
/**
* 扩充道具栏
* @param inv
* @param slots
* @return
*/
public static byte[] 扩充道具栏(int inv, int slots) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.扩充道具栏成功.getValue());
mplew.write(inv);
mplew.writeShort(slots);
return mplew.getPacket();
}
/**
* 扩充仓库
* @param slots
* @return
*/
public static byte[] 扩充仓库(int slots) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.扩充仓库.getValue());
mplew.writeShort(slots);
return mplew.getPacket();
}
public static byte[] 商城到背包(Item item) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(0x30);
FileoutputUtil.log("道具位置:"+item.getPosition());
mplew.writeShort(item.getPosition());
// PacketHelper.addItemInfo(mplew, item);
// 这里比较奇怪了,理论上应该和普通的背包道具是一样的哈
mplew.write(item.getType());
mplew.writeInt(item.getItemId());
boolean hasUniqueId = (item.getUniqueId() > 0) && (!ItemConstants.is结婚戒指(item.getItemId())) && (item.getItemId() / 10000 != 166);
mplew.write(hasUniqueId ? 1 : 0);
if (hasUniqueId) {
mplew.writeLong(item.getUniqueId());
}
if (item.getPet() != null) {
PacketHelper.addPetItemInfo(mplew, item, item.getPet());
} else {
PacketHelper.addExpirationTime(mplew, item.getExpiration());
if (item.getType() == 1) { // 装备
Equip equip = (Equip) item;
mplew.write(equip.getUpgradeSlots());
mplew.write(equip.getLevel());
mplew.writeShort(equip.getStr());
mplew.writeShort(equip.getDex());
mplew.writeShort(equip.getInt());
mplew.writeShort(equip.getLuk());
mplew.writeShort(equip.getHp());
mplew.writeShort(equip.getMp());
mplew.writeShort(equip.getWatk());
mplew.writeShort(equip.getMatk());
mplew.writeShort(equip.getWdef());
mplew.writeShort(equip.getMdef());
mplew.writeShort(equip.getAcc());
mplew.writeShort(equip.getAvoid());
mplew.writeShort(equip.getHands());
mplew.writeShort(equip.getSpeed());
mplew.writeShort(equip.getJump());
mplew.writeMapleAsciiString(equip.getOwner());
} else { // 非装备
mplew.writeShort(item.getQuantity());
mplew.writeMapleAsciiString(item.getOwner());
}
}
return mplew.getPacket();
}
/**
* CCashShop::OnCashItemResMoveStoLDone
* @param item
* @param accId
* @param sn
* @return
*/
public static byte[] 背包到商城(Item item, int accId, int sn) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(0x32);
// addCashItemInfo(mplew, item, accId, sn);
// @TODO 还是继续用addCashItemInfo
mplew.writeLong(item.getUniqueId() > 0 ? item.getUniqueId() : 0L);
mplew.writeInt(accId);
mplew.writeShort(0);
mplew.writeShort(0);
mplew.writeInt(item.getItemId());
mplew.writeShort(0);
mplew.writeShort(0);
mplew.writeShort(item.getQuantity());
mplew.writeAsciiString(item.getGiftFrom(), 13);
PacketHelper.addExpirationTime(mplew, item.getExpiration());
mplew.writeShort(0);
mplew.writeShort(0);
mplew.writeShort(0);
return mplew.getPacket();
}
public static byte[] 商城删除道具(int uniqueid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.删除道具.getValue());
mplew.writeLong(uniqueid);
return mplew.getPacket();
}
public static byte[] cashItemExpired(int uniqueid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.道具到期.getValue());
mplew.writeLong(uniqueid);
return mplew.getPacket();
}
public static byte[] 商城换购道具(int uniqueId, int Money) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.换购道具.getValue());
mplew.writeLong(uniqueId);
mplew.writeLong(Money);
return mplew.getPacket();
}
public static byte[] 商城购买礼包(Map<Integer, Item> packageItems, int accId) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.购买礼包.getValue());
mplew.write(packageItems.size());
int size = 0;
for (Map.Entry sn : packageItems.entrySet()) {
addCashItemInfo(mplew, (Item) sn.getValue(), accId, ((Integer) sn.getKey()));
if ((ItemConstants.isPet(((Item) sn.getValue()).getItemId())) || (ItemConstants.getInventoryType(((Item) sn.getValue()).getItemId()) == MapleInventoryType.EQUIP)) {
size++;
}
}
mplew.writeInt(size);
if (packageItems.size() > 0) {
for (Item itemz : packageItems.values()) {
if ((ItemConstants.isPet(itemz.getItemId())) || (ItemConstants.getInventoryType(itemz.getItemId()) == MapleInventoryType.EQUIP)) {
PacketHelper.addItemInfo(mplew, itemz);
}
}
}
mplew.writeShort(0);
return mplew.getPacket();
}
public static byte[] 商城送礼包(int itemId, int quantity, String receiver) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.商城送礼包.getValue());
mplew.writeMapleAsciiString(receiver);
mplew.writeInt(itemId);
mplew.writeInt(quantity);
return mplew.getPacket();
}
public static byte[] 商城购买任务道具(int price, short quantity, byte position, int itemid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.购买任务道具.getValue());
mplew.writeInt(price);
mplew.writeShort(quantity);
mplew.writeShort((short) position);
mplew.writeInt(itemid);
return mplew.getPacket();
}
/**
* 商城道具信息
* @param mplew
* @param item
* @param accId
* @param sn
*/
public static void addCashItemInfo(MaplePacketLittleEndianWriter mplew, Item item, int accId, int sn) {
PacketHelper.addItemInfo(mplew,item);
/*
// 53个字节
mplew.writeLong(item.getUniqueId() > 0 ? item.getUniqueId() : 0L);
mplew.writeInt(accId);
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeInt(item.getItemId());
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeShort(item.getQuantity());
mplew.writeAsciiString(item.getGiftFrom(), 13);
PacketHelper.addExpirationTime(mplew, item.getExpiration());
mplew.write(HexTool.getByteArrayFromHexString("01 01 01 01"));
mplew.writeShort(0);
*/
}
public static byte[] 商城错误提示(int err) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.错误提示.getValue());
mplew.write(err);
return mplew.getPacket();
}
public static byte[] showCouponRedeemedItem(int itemid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.writeShort(CashShopOpcode.领奖卡提示.getValue());
mplew.writeInt(0);
mplew.writeInt(1);
mplew.writeShort(1);
mplew.writeShort(26);
mplew.writeInt(itemid);
mplew.writeInt(0);
return mplew.getPacket();
}
public static byte[] showCouponRedeemedItem(Map<Integer, Item> items, int mesos, int maplePoints, MapleClient c) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.领奖卡提示.getValue());
mplew.write(items.size());
for (Map.Entry item : items.entrySet()) {
addCashItemInfo(mplew, (Item) item.getValue(), c.getAccID(), ((Integer) item.getKey()));
}
mplew.writeInt(maplePoints);
mplew.writeInt(0);
mplew.writeInt(mesos);
return mplew.getPacket();
}
public static byte[] redeemResponse() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.注册商城.getValue());
mplew.writeInt(0);
mplew.writeInt(1);
return mplew.getPacket();
}
public static byte[] 商城打开箱子(Item item, Long uniqueId) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_OPERATION.getValue());
mplew.write(CashShopOpcode.打开箱子.getValue());
mplew.writeLong(uniqueId);
mplew.writeInt(0);
PacketHelper.addItemInfo(mplew, item);
mplew.writeInt(item.getPosition());
mplew.writeShort(0);
return mplew.getPacket();
}
public static byte[] 商城提示(int 消费, int 达到, int mode) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_MSG.getValue());
mplew.write(CashShopOpcode.商城提示.getValue());
mplew.writeInt(消费);
mplew.writeInt(达到);
mplew.write(mode);
return mplew.getPacket();
}
public static byte[] 热点推荐(MapleCharacter chr) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_HOT.getValue());
int[] hotSn = {20400253, 20500121, 20600140, 20000348};
mplew.writeInt(hotSn.length);
for (int i = 0; i < hotSn.length; i++) {
mplew.writeInt(hotSn[i]);
}
return mplew.getPacket();
}
public static byte[] 每日特卖() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.CS_DAILY.getValue());
mplew.writeInt(getTime());
mplew.writeLong(0L);
return mplew.getPacket();
}
public static int getTime() {
String time = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).replace("-", "");
return Integer.valueOf(time);
}
public static byte[] showXmasSurprise(int idFirst, Item item, int accid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.XMAS_SURPRISE.getValue());
mplew.write(230);
mplew.writeLong(idFirst);
mplew.writeInt(0);
addCashItemInfo(mplew, item, accid, 0);
mplew.writeInt(item.getItemId());
mplew.write(1);
mplew.write(1);
return mplew.getPacket();
}
public static byte[] getBoosterFamiliar(int cid, int familiar, int id) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BOOSTER_FAMILIAR.getValue());
mplew.writeInt(cid);
mplew.writeInt(familiar);
mplew.writeLong(id);
mplew.write(0);
return mplew.getPacket();
}
public static byte[] getBoosterPack(int f1, int f2, int f3) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BOOSTER_PACK.getValue());
mplew.write(215);
mplew.writeInt(f1);
mplew.writeInt(f2);
mplew.writeInt(f3);
return mplew.getPacket();
}
public static byte[] getBoosterPackClick() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BOOSTER_PACK.getValue());
mplew.write(213);
return mplew.getPacket();
}
public static byte[] getBoosterPackReveal() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BOOSTER_PACK.getValue());
mplew.write(214);
return mplew.getPacket();
}
/**
* 使用金币包失败
* @return
*/
public static byte[] sendMesobagFailed() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.MESOBAG_FAILURE.getValue());
return mplew.getPacket();
}
/**
* 使用金币包成功
* @param mesos
* @return
*/
public static byte[] sendMesobagSuccess(int mesos) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.MESOBAG_SUCCESS.getValue());
mplew.writeInt(mesos);
return mplew.getPacket();
}
}