package tools.packet; import handling.SendPacketOpcode; import org.apache.log4j.Logger; import server.ServerProperties; import tools.MaplePacketCreator; import tools.data.output.MaplePacketLittleEndianWriter; public class UIPacket { private static final Logger log = Logger.getLogger(UIPacket.class); public static byte[] EarnTitleMsg(String msg) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.EARN_TITLE_MSG.getValue()); mplew.writeMapleAsciiString(msg); return mplew.getPacket(); } public static byte[] getTopMsg(String msg) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.TOP_MSG.getValue()); mplew.writeMapleAsciiString(msg); return mplew.getPacket(); } public static byte[] getMidMsg(String msg, boolean keep, int index) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.MID_MSG.getValue()); mplew.write(index); mplew.writeMapleAsciiString(msg); mplew.write(keep ? 0 : 1); return mplew.getPacket(); } public static byte[] clearMidMsg() { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.CLEAR_MID_MSG.getValue()); return mplew.getPacket(); } public static byte[] MapEff(String path) { return MaplePacketCreator.showEffect(path); } public static byte[] MapNameDisplay(int mapid) { return MaplePacketCreator.environmentChange("maplemap/enter/" + mapid, 4); } public static byte[] TutInstructionalBalloon(String data) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.SHOW_SPECIAL_EFFECT.getValue()); mplew.write(0x17); mplew.writeMapleAsciiString(data); // mplew.writeInt(1); return mplew.getPacket(); } public static byte[] ShowWZEffect(String data) { return ShowWZEffect(0x17, data); } public static byte[] ShowWZEffect(int type, String data) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.SHOW_SPECIAL_EFFECT.getValue()); mplew.write(type); mplew.writeMapleAsciiString(data); return mplew.getPacket(); } public static byte[] playMovie(String data, boolean show) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.PLAY_MOVIE.getValue()); mplew.writeMapleAsciiString(data); mplew.write(show ? 1 : 0); return mplew.getPacket(); } public static byte[] summonHelper(boolean summon) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.SUMMON_HINT.getValue()); mplew.write(summon ? 1 : 0); return mplew.getPacket(); } public static byte[] summonMessage(int type) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.SUMMON_HINT_MSG.getValue()); mplew.write(1); mplew.writeInt(type); mplew.writeInt(7000); return mplew.getPacket(); } public static byte[] summonMessage(String message) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.SUMMON_HINT_MSG.getValue()); mplew.write(0); mplew.writeMapleAsciiString(message); mplew.writeInt(200); mplew.writeInt(10000); return mplew.getPacket(); } public static byte[] IntroLock(boolean enable) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.INTRO_LOCK.getValue()); mplew.write(enable ? 1 : 0); return mplew.getPacket(); } public static byte[] getDirectionStatus(boolean enable) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_STATUS.getValue()); mplew.write(enable ? 1 : 0); return mplew.getPacket(); } public static byte[] getDirectionInfo(int type, int value) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(type); mplew.writeInt(value); return mplew.getPacket(); } public static byte[] getDirectionInfo(String data, int value, int x, int y, int pro) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(2); mplew.writeMapleAsciiString(data); mplew.writeInt(value); mplew.writeInt(x); mplew.writeInt(y); mplew.writeShort(pro); mplew.writeInt(0); return mplew.getPacket(); } public static byte[] getDirectionInfo(String data, int value, int x, int y, int a, int b) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(2); mplew.writeMapleAsciiString(data); mplew.writeInt(value); mplew.writeInt(x); mplew.writeInt(y); mplew.write(a); if (a > 0) { mplew.writeInt(0); } mplew.write(b); if (b > 1) { mplew.writeInt(0); } return mplew.getPacket(); } public static byte[] getDirectionEffect(String data, int value, int x, int y) { return getDirectionEffect(data, value, x, y, 0); } public static byte[] getDirectionEffect(String data, int value, int x, int y, int npc) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(2); mplew.writeMapleAsciiString(data); mplew.writeInt(value); mplew.writeInt(x); mplew.writeInt(y); mplew.write(1); mplew.writeInt(0); mplew.write(1); mplew.writeInt(npc); mplew.write(npc == 0 ? 1 : 0); mplew.write(0); return mplew.getPacket(); } public static byte[] getDirectionInfoNew(byte x, int value, int a, int b) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(5); mplew.write(x); mplew.writeInt(value); // if (x == 0) { mplew.writeInt(a); mplew.writeInt(b); // } return mplew.getPacket(); } public static byte[] getDirectionInfoNew(byte x, int value) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(5); mplew.write(x); mplew.writeInt(value); return mplew.getPacket(); } public static byte[] getDirectionInfoNew2(byte x, int value) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(5); mplew.write(x); mplew.writeInt(value); return mplew.getPacket(); } public static byte[] getDirectionEffect1(String data, int value, int x, int y, int npc) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(2); mplew.writeAsciiString(data); mplew.writeInt(value); mplew.writeInt(x); mplew.writeInt(y); mplew.write(1); mplew.writeInt(npc); mplew.write(0); // Added for BeastTamer return mplew.getPacket(); } public static byte[] get剧情弹幕(String data, int value, int s, boolean mode) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(8); mplew.writeShort(value); for (int i = 0; i < s; i++) { mplew.writeShort(2573); } mplew.writeAsciiString(data); mplew.write(mode ? 1 : 0); return mplew.getPacket(); } public static byte[] getHidePlayer(String data, int value, int s, boolean mode) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(2); mplew.writeAsciiString(data); return mplew.getPacket(); } public static byte[] getDIRECTION_INFO(String data, int value, int s) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_INFO.getValue()); mplew.write(6); mplew.writeMapleAsciiString(data); mplew.writeInt(value); mplew.writeInt(0); mplew.writeInt(s); mplew.writeShort(0); return mplew.getPacket(); } public static byte[] IntroEnableUI(int enable) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.INTRO_ENABLE_UI.getValue()); mplew.write(enable > 0 ? 1 : 0); if (enable > 0) { mplew.writeShort(enable); mplew.write(0);//119+ } else { mplew.write(enable < 0 ? 1 : 0); } return mplew.getPacket(); } public static byte[] IntroDisableUI(boolean enable) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.INTRO_DISABLE_UI.getValue()); mplew.write(enable ? 1 : 0); return mplew.getPacket(); } public static byte[] fishingUpdate(byte type, int id) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.FISHING_BOARD_UPDATE.getValue()); mplew.write(type); mplew.writeInt(id); return mplew.getPacket(); } public static byte[] fishingCaught(int chrid) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.FISHING_CAUGHT.getValue()); mplew.writeInt(chrid); return mplew.getPacket(); } public static byte[] getDirectionFacialExpression(int expression, int duration) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.DIRECTION_FACIAL_EXPRESSION.getValue()); mplew.writeInt(expression); mplew.writeInt(duration); mplew.write(0); /* Facial Expressions: * 0 - Normal * 1 - F1 * 2 - F2 * 3 - F3 * 4 - F4 * 5 - F5 * 6 - F6 * 7 - F7 * 8 - Vomit * 9 - Panic * 10 - Sweetness * 11 - Kiss * 12 - Wink * 13 - Ouch! * 14 - Goo goo eyes * 15 - Blaze * 16 - Star * 17 - Love * 18 - Ghost * 19 - Constant Sigh * 20 - Sleepy * 21 - Flaming hot * 22 - Bleh * 23 - No Face */ return mplew.getPacket(); } public static byte[] openUIOption(int type, int npc) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(10); mplew.write(SendPacketOpcode.OPEN_UI_OPTION.getValue()); mplew.writeInt(type); mplew.writeInt(npc); return mplew.getPacket(); } public static byte[] openMap() { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.write(SendPacketOpcode.OPEN_MAP.getValue()); mplew.writeInt(0); return mplew.getPacket(); } public static byte[] openUI(int type) { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); mplew.write(SendPacketOpcode.OPEN_UI.getValue()); mplew.writeInt(type); return mplew.getPacket(); } }