package tools.packet; import client.MapleCharacter; import handling.SendPacketOpcode; import java.util.List; import server.MapleCarnivalParty; import tools.data.MaplePacketLittleEndianWriter; public class MonsterCarnivalPacket { public static byte[] startMonsterCarnival(final MapleCharacter chr, final int enemyavailable, final int enemytotal) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_START.getValue()); final MapleCarnivalParty friendly = chr.getCarnivalParty(); mplew.write(friendly.getTeam()); mplew.writeInt(chr.getAvailableCP()); mplew.writeInt(chr.getTotalCP()); mplew.writeInt(friendly.getAvailableCP()); mplew.writeInt(friendly.getTotalCP()); return mplew.getPacket(); } public static byte[] playerDiedMessage(String name, int lostCP, int team) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_DIED.getValue()); mplew.write(team); mplew.writeMapleAsciiString(name); mplew.write(lostCP); return mplew.getPacket(); } public static byte[] playerLeaveMessage(boolean leader, String name, int team) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_LEAVE.getValue()); mplew.write(leader ? 7 : 0); mplew.write(team); // 0: Maple Red, 1: Maple Blue mplew.writeMapleAsciiString(name); return mplew.getPacket(); } public static byte[] CPUpdate(boolean party, int curCP, int totalCP, int team) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_OBTAINED_CP.getValue()); mplew.writeInt(curCP); mplew.writeInt(totalCP); return mplew.getPacket(); } public static byte[] showMCStats(int left, int right) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_STATS.getValue()); mplew.writeInt(left); mplew.writeInt(right); return mplew.getPacket(); } public static byte[] playerSummoned(String name, int tab, int number) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_SUMMON.getValue()); mplew.write(tab); mplew.write(number); mplew.writeMapleAsciiString(name); return mplew.getPacket(); } public static byte[] showMCResult(int mode) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_RESULT.getValue()); mplew.write(mode); return mplew.getPacket(); } public static byte[] showMCRanking(List<MapleCharacter> players) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_RANKING.getValue()); mplew.writeShort(players.size()); for (MapleCharacter i : players) { mplew.writeInt(i.getId()); mplew.writeMapleAsciiString(i.getName()); mplew.writeInt(10); // points mplew.write(0); // team } return mplew.getPacket(); } /** * 怪物擂臺賽訊息 * * Possible values for <code>message</code>:<br> * 1: You don't have enough CP to continue. * 2: You can no longer summon the Monster. * 3: You can no longer summon the being. * 4: This being is already summoned. * 5: This request has failed due to an unknown error. * * @param message Displays a message inside Carnival PQ * @return * */ public static byte[] CPQMessage(byte message) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendPacketOpcode.MONSTER_CARNIVAL_MESSAGE.getValue()); mplew.write(message); return mplew.getPacket(); } }