package tools.packet; import client.MapleCharacter; import client.MapleClient; import client.inventory.Item; import handling.InteractionOpcode; import handling.SendPacketOpcode; import org.apache.log4j.Logger; import server.MapleTrade; import server.ServerProperties; import tools.data.output.MaplePacketLittleEndianWriter; public class TradePacket { private static final Logger log = Logger.getLogger(TradePacket.class); public static byte[] getTradeInvite(MapleCharacter chr) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.交易邀请.getValue()); mplew.write(4); mplew.writeMapleAsciiString(chr.getName()); mplew.writeInt(0); return mplew.getPacket(); } public static byte[] getTradeMesoSet(byte number, int meso) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.设置金币.getValue()); mplew.write(number); mplew.writeLong(meso); return mplew.getPacket(); } public static byte[] getTradeItemAdd(byte number, Item item) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.设置物品.getValue()); mplew.write(number); mplew.write(item.getPosition()); PacketHelper.addItemInfo(mplew, item); return mplew.getPacket(); } public static byte[] getTradeStart(MapleClient c, MapleTrade trade, byte number) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.房间.getValue()); mplew.write(4); mplew.write(2); mplew.write(number); if (number == 1) { mplew.write(0); LoginPacket.addCharEntry(mplew, trade.getPartner().getChr()); mplew.writeMapleAsciiString(trade.getPartner().getChr().getName()); mplew.writeShort(trade.getPartner().getChr().getJob()); } mplew.write(number); LoginPacket.addCharEntry(mplew, c.getPlayer()); mplew.writeMapleAsciiString(c.getPlayer().getName()); mplew.writeShort(c.getPlayer().getJob()); mplew.write(0xFF); return mplew.getPacket(); } public static byte[] getTradeConfirmation() { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.确认交易.getValue()); return mplew.getPacket(); } public static byte[] TradeMessage(byte number, byte message) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.退出.getValue()); mplew.write(number); mplew.write(message); return mplew.getPacket(); } public static byte[] getTradeCancel(byte number, int message) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAYER_INTERACTION.getValue()); mplew.write(InteractionOpcode.退出.getValue()); mplew.write(number); mplew.write(message == 0 ? 2 : 9); return mplew.getPacket(); } }