package tools.packet; import client.MapleCharacter; import handling.SendPacketOpcode; import handling.world.WorldGuildService; import handling.world.guild.MapleGuild; import handling.world.messenger.MessengerRankingWorker; import org.apache.log4j.Logger; import server.ServerProperties; import tools.DateUtil; import tools.data.output.MaplePacketLittleEndianWriter; public class MessengerPacket { private static final Logger log = Logger.getLogger(MessengerPacket.class); public static byte[] addMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(0); mplew.write(position); PacketHelper.addCharLook(mplew, chr, true, chr.isZeroSecondLook()); mplew.writeMapleAsciiString(from); mplew.write(channel); mplew.write(position); mplew.writeInt(chr.getJob()); return mplew.getPacket(); } public static byte[] joinMessenger(int position) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(1); mplew.write(position); return mplew.getPacket(); } public static byte[] removeMessengerPlayer(int position) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(2); mplew.write(position); return mplew.getPacket(); } public static byte[] messengerInvite(String from, int messengerId, int channel) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(3); mplew.writeMapleAsciiString(from); mplew.write(channel); mplew.writeInt(messengerId); mplew.write(0); return mplew.getPacket(); } public static byte[] messengerChat(String text, String postxt) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(6); mplew.writeMapleAsciiString(text); if (postxt.length() > 0) { mplew.writeMapleAsciiString(postxt); } return mplew.getPacket(); } public static byte[] updateMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(7); mplew.write(position); PacketHelper.addCharLook(mplew, chr, true, chr.isZeroSecondLook()); return mplew.getPacket(); } public static byte[] giveLoveResponse(int mode, String charname, String targetname) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(10); mplew.write(mode); mplew.writeMapleAsciiString(charname); mplew.writeMapleAsciiString(targetname); return mplew.getPacket(); } public static byte[] messengerPlayerInfo(MapleCharacter chr) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(11); mplew.writeMapleAsciiString(chr.getName()); mplew.write(chr.getLevel()); mplew.writeInt(chr.getJob()); mplew.writeInt(chr.getFame()); mplew.writeInt(chr.getLove()); if (chr.getGuildId() <= 0) { mplew.writeMapleAsciiString("-"); mplew.writeMapleAsciiString(""); } else { MapleGuild guild = WorldGuildService.getInstance().getGuild(chr.getGuildId()); if (guild != null) { mplew.writeMapleAsciiString(guild.getName()); mplew.writeMapleAsciiString(""); } else { mplew.writeMapleAsciiString("-"); mplew.writeMapleAsciiString(""); } } mplew.write(0); return mplew.getPacket(); } public static byte[] messengerWhisper(String namefrom, String chatText) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(14); mplew.writeMapleAsciiString(namefrom); mplew.writeMapleAsciiString(chatText); return mplew.getPacket(); } public static byte[] messengerNote(String text, int mode, int mode2) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MESSENGER.getValue()); mplew.write(mode); mplew.writeMapleAsciiString(text); mplew.write(mode2); return mplew.getPacket(); } public static byte[] updateLove(int love) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.LOVE_OPERATION.getValue()); mplew.write(0); mplew.writeInt(love); mplew.writeLong(DateUtil.getFileTimestamp(System.currentTimeMillis())); mplew.writeInt(3); return mplew.getPacket(); } public static byte[] showLoveRank(int mode) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.LOVE_OPERATION.getValue()); mplew.write(mode); MessengerRankingWorker rank = MessengerRankingWorker.getInstance(); for (int i = 0; i < 2; i++) { MapleCharacter player = rank.getRankingPlayer(i); mplew.write(player != null ? 1 : 0); if (player != null) { mplew.writeInt(player.getId()); mplew.writeInt(player.getLove()); mplew.writeLong(DateUtil.getFileTimestamp(rank.getLastUpdateTime(i))); mplew.writeMapleAsciiString(player.getName()); PacketHelper.addCharLook(mplew, player, false, false); } } return mplew.getPacket(); } public static byte[] Runemessenger(int type, String mesg) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.TOP_MSG_WHITE.getValue()); mplew.writeInt(type);//字体 mplew.writeInt(0x11);//字号 mplew.writeLong(0); mplew.writeMapleAsciiString(mesg); return mplew.getPacket(); } }