#pragma once #include #include #include // packet types, matching sw's strings enum { // (send_eSUB_)?CMD_* ids crawled with find-client-packets.bash PACKET_EVENT_SPAWN_BOX = 0x3111, PACKET_EVENT_SCENE_DIRECTING = 0x3311, PACKET_MONSTER_CLIENT_SPAWN = 0x7111, PACKET_MAZE_ENTER_PARTY_RES = 0x4811, PACKET_LOGIN_REQ = 0x0102, PACKET_SERVER_LIST_REQ = 0x0302, PACKET_SERVER_CONNECT_REQ = 0x0502, PACKET_MOBILE_AUTH = 0x3302, PACKET_ENTER_WAIT_CANCEL = 0x3502, PACKET_CHARACTER_LIST_REQ = 0x1103, PACKET_CREATE_CHARACTER_REQ = 0x0103, PACKET_DELETE_CHARACTER_REQ = 0x0203, PACKET_SELECT_CHARACTER_REQ = 0x1303, PACKET_CHARACTER_CHANGE_SLOT = 0x0603, PACKET_CHARACTER_INFO_REQ = 0x3103, PACKET_ITEM_INVEN_INFO = 0x0108, // freezes PACKET_ITEM_BANK_INFO = 0x1008, PACKET_ITEM_MOVE = 0x0208, PACKET_ITEM_COMBINE = 0x0308, PACKET_ITEM_DIVIDE = 0x0408, PACKET_ITEM_BREAK = 0x0508, PACKET_ITEM_USE = 0x1108, PACKET_ITEM_USE_SELECT = 0x6708, PACKET_ITEM_MOVE_MONEY = 0x2408, PACKET_ITEM_ADD_SLOT = 0x0f08, PACKET_ITEM_LINE_UP = 0x2508, PACKET_WORLD_DISTRICT_TRANSPORT_REQ = 0x4004, PACKET_MAZE_CREATE_REQ = 0x4104, PACKET_COMPLETE_MAZE_REQ = 0x2211, PACKET_COMPLETE_MAZE_START_GAME = 0x2511, PACKET_EXIT_MAZE_REQ = 0x2311, PACKET_MAZE_SWITCH_NPC_CLICK_REQ = 0x7c11, PACKET_MAZE_LUA_FUNCTION_REQ = 0x7e11, PACKET_OPERATION_END_REQ = 0x6211, PACKET_MAZE_INTERACTION_CLICK_REQ = 0x7711, PACKET_MAZE_INTERACTION_MOTION = 0x7911, PACKET_QUEST_MOVE_CHECK_REQ = 0x6511, PACKET_CHECK_EVENT_SPAWN_BOX_REQ = 0x3511, PACKET_MAZE_SECTOR_ERROR_FIX = 0x0311, PACKET_PARTY_INVITE = 0x0112, PACKET_PARTY_ACCEPT = 0x0212, PACKET_PARTY_CHANGE_MASTER = 0x0312, PACKET_PARTY_KICK_OUT = 0x0412, PACKET_PARTY_LEAVE = 0x0512, PACKET_SHOP_BUY = 0x0109, PACKET_SHOP_SELL = 0x0209, PACKET_SHOP_REPURCHASER_LIST = 0x0309, PACKET_SHOP_REPURCHASER = 0x0409, PACKET_SHOP_CASH_LOAD = 0x2009, PACKET_SHOP_CASH_BUY = 0x2109, PACKET_SHOP_CASH_SET = 0x2309, PACKET_SHOP_CASH_SET_DEL = 0x2409, PACKET_SHOP_CASH_GIFT = 0x2509, PACKET_TRADE_REQ = 0x2a00, PACKET_TRADE_ACCEPT = 0x2a00, PACKET_TRADE_UPDATE_ITEM = 0x2a00, PACKET_TRADE_UPDATE_MONEY = 0x2a00, PACKET_TRADE_CHECK = 0x2a00, PACKET_TRADE_CONFIRM = 0x2a00, PACKET_TRADE_CANCEL = 0x2a00, PACKET_PRIVATE_SHOP_START = 0x2a00, PACKET_PRIVATE_SHOP_STATE = 0x2a00, PACKET_PRIVATE_SHOP_ITEM = 0x2a00, PACKET_PRIVATE_SHOP_SELECT = 0x2a00, PACKET_OPTION_UPDATE = 0x0201, PACKET_LOGIN_OPTION_UPDATE = 0x3202, PACKET_CHAT_NORMAL = 0x0107, PACKET_CHAT_WHISPER = 0x0207, PACKET_CHAT_TRADE = 0x0307, PACKET_CHAT_GM_COMMAND = 0x0607, PACKET_ITEM_UPGRADE = 0x0218, PACKET_ITEM_RESTORE = 0x2218, PACKET_ITEM_UNSEAL = 0x2418, PACKET_ITEM_USE_EFFECT = 0x2618, PACKET_ITEM_EXCHANGE = 0x0318, PACKET_ITEM_DISASSEMBLE = 0x0418, PACKET_DROP_PICK_UP = 0x0214, PACKET_ITEM_REPAIR = 0x0818, PACKET_ITEM_REPAIR_NPC = 0x0918, PACKET_ITEM_REPAIR_EQUIP = 0x1018, PACKET_ITEM_REPAIR_ALL = 0x1118, PACKET_ITEM_RENOVATE = 0x2718, PACKET_ITEM_REFINE = 0x2918, PACKET_ITEM_EVOLUTION = 0x1318, PACKET_ITEM_AKASHIC_MAKE_EX = 0x2518, PACKET_ITEM_AKASHIC_DISASSEMBLE = 0x1518, PACKET_ITEM_AKASHIC_COMPOSE = 0x1718, PACKET_ITEM_AKASHIC_COMPOSE_EX = 0x3318, PACKET_ITEM_DISASSEMBLE_EX = 0x1818, PACKET_QUEST_ACCEPT = 0x0315, PACKET_QUEST_EPISODE_COMPLETE = 0x0515, PACKET_QUEST_GIVE_UP = 0x0615, PACKET_QUEST_EVENT_UPDATE = 0x0815, PACKET_QUEST_HELPER = 0x0915, PACKET_QUEST_FAIL = 0x1115, PACKET_DAILY_MISSION_ACCEPT = 0x0224, PACKET_DAILY_MISSION_HELPER = 0x0424, PACKET_WEEKLY_MISSION_REWARD = 0x0332, PACKET_WEEKLY_MISSION_REWARD_WEEK = 0x0432, PACKET_CHARACTER_LOAD_TITLE = 0x2303, PACKET_CHARACTER_GET_REWARD_SHARE_POINT = 0x6303, PACKET_CHARACTER_UPDATE_TITLE = 0x2503, PACKET_CHARACTER_FAVORITE_TITLE = 0x2a03, PACKET_FRIEND_INVITE = 0x1119, PACKET_FRIEND_INVITE_ACCEPT = 0x1319, PACKET_FRIEND_DELETE = 0x1519, PACKET_FRIEND_BLOCK_ADD = 0x2119, PACKET_FRIEND_BLOCK_DEL = 0x2219, PACKET_FRIEND_RECOMMAND_LIST = 0x5119, PACKET_FRIEND_INFO = 0x3219, PACKET_POST_SEND_LIST = 0x1020, PACKET_POST_RECV_LIST = 0x0220, PACKET_POST_SAVE_LIST = 0x0120, PACKET_POST_READ = 0x0420, PACKET_POST_ACCOUNT_READ = 0x1620, PACKET_POST_SEND = 0x0320, PACKET_POST_RECEIPT = 0x0520, PACKET_POST_ACCOUNT_RECEIPT = 0x1720, PACKET_POST_SENDBACK = 0x0820, PACKET_POST_SEND_DEL = 0x0620, PACKET_POST_RECV_DEL = 0x0720, PACKET_POST_SAVE = 0x1820, PACKET_POST_LIST_REFRESH = 0x1920, PACKET_POST_RECEIPT_ALL = 0x2120, PACKET_ENTER_SERVER_REQ = 0x1302, PACKET_ENTER_GAMESERVER_REQ = 0x2103, PACKET_ITEM_UPDATE_QUICKSLOT_CARD = 0x2708, PACKET_ITEM_UPDATE_QUICKSLOT_ITEM = 0x2808, PACKET_ITEM_MAZE_REWARD_ITEM = 0x4708, PACKET_ITEM_APPEARANCE_EQUIP = 0x5208, PACKET_ITEM_NAME_CHANGE = 0x5208, PACKET_ITEM_UPDATE_CASH = 0x5308, PACKET_ITEM_MAKE = 0x0118, PACKET_ITEM_SOCKET_EQUIP = 0x0518, PACKET_ITEM_SOCKET_ACTIVE = 0x0618, PACKET_ITEM_SOCKET_DETACH = 0x0718, PACKET_ITEM_BROACH_EQUIP = 0x2018, PACKET_ITEM_BROACH_ACTIVE = 0x2118, PACKET_ITEM_BROACH_COMPOSE = 0x2318, PACKET_ITEM_BROACH_REMOVE = 0x2818, PACKET_ITEM_SOCKET_EXCHANGE = 0x3018, PACKET_ITEM_SOCKET_UPGRADE = 0x3118, PACKET_ITEM_SOCKET_EXTRACT = 0x3218, PACKET_ITEM_TITLE_CHANGE = 0x3718, PACKET_ITEM_DYE = 0x3618, PACKET_MODE_MAZE_MATCHING_ENTER = 0x0133, PACKET_MODE_MAZE_MATCHING_EXIT = 0x0333, PACKET_SOULMETRY_COMPLETE = 0x0521, PACKET_VACCUM_CLICK_START = 0x0125, PACKET_VACCUM_CLICK_CANCEL = 0x0225, PACKET_LEAGUE_CREATE = 0x0122, PACKET_LEAGUE_DELETE = 0x0222, PACKET_LEAGUE_LIST = 0x0322, PACKET_LEAGUE_INVITE = 0x1322, PACKET_LEAGUE_INVITE_ACCEPT = 0x1422, PACKET_LEAGUE_INVITE_REJECT = 0x1522, PACKET_LEAGUE_WITHDRAW = 0x0922, PACKET_LEAGUE_KICK = 0x0f22, PACKET_LEAGUE_APPLICANT = 0x0522, PACKET_LEAGUE_APPLICANT_ACCEPT = 0x1822, PACKET_LEAGUE_APPLICANT_REJECT = 0x1922, PACKET_LEAGUE_DELEGATE = 0x0a22, PACKET_LEAGUE_BOARD = 0x0822, PACKET_LEAGUE_SEARCH = 0x2022, PACKET_LEAGUE_OVERLAP_NAME = 0x2122, PACKET_LEAGUE_INFO = 0x0722, PACKET_LEAGUE_AUTH_CHANGE = 0x3222, PACKET_LEAGUE_NOTICE_CHANGE = 0x2922, PACKET_LEAGUE_POSITION_NAME_CHANGE = 0x3322, PACKET_LEAGUE_CARD_CHANGE = 0x3122, PACKET_LEAGUE_SKILL_LEARN = 0x5322, PACKET_LEAGUE_INVENTORY_MOVE = 0x5422, PACKET_LEAGUE_NAME_CHANGE = 0x3022, PACKET_LEAGUE_INVENTORY_INFO = 0x5622, PACKET_LEAGUE_MEMBER_POSITION_CHANGE = 0x3922, PACKET_LEAGUE_OPEN_OR_NOT = 0x4622, PACKET_LEAGUE_RECRUIT_NOTICE = 0x4722, PACKET_CHARATER_CHANGE_SERVER = 0x6003, PACKET_CHARACTER_UPDATE_SPECIAL_OPTION_LIST = 0x4703, PACKET_CHARACTER_CHECK_ENTER_MAZE = 0x4003, PACKET_CHARACTER_PROFILE_PHOTO_FAVORITE = 0x0b03, PACKET_CHARACTER_PROFILE_PHOTO_CAHNGE = 0x0c03, PACKET_ACHIEVE_REWARD = 0x7403, PACKET_DO_GESTURE = 0x0123, PACKET_GESTURE_SLOT_UPDATE = 0x0323, PACKET_OTHER_CHARACTER_INFO = 0x7503, PACKET_CHARACTER_COMMUNITY = 0x7703, PACKET_PARTY_CANCEL = 0x0812, PACKET_PARTY_UPDATE_INFO = 0x0912, PACKET_PARTY_MATCHING_ENTER = 0x3012, PACKET_PARTY_MATCHING_EXIT = 0x3112, PACKET_PARTY_MATCHING_CHECK = 0x3212, PACKET_SYSTEM_XIGNCODE = 0x0301, PACKET_PARTY_RECRUIT_LIST = 0x3612, PACKET_PARTY_RECRUIT_ADD = 0x3712, PACKET_PARTY_RECRUIT_APPLY = 0x3812, PACKET_PARTY_RECRUIT_APPLY_ACCEPT = 0x3912, PACKET_PARTY_RECRUIT_APPLY_REJECT = 0x3a12, PACKET_PARTY_RECRUIT_DEL = 0x3c12, PACKET_PARTY_RECRUIT_APPLY_LIST = 0x3d12, PACKET_PARTY_AWAITER_LIST = 0x4212, PACKET_PARTY_AWAITER_ADD = 0x4012, PACKET_PARTY_AWAITER_DEL = 0x4112, PACKET_PARTY_RECRUIT_APPLY_INFO = 0x4312, PACKET_PARTY_AWAITER_INFO = 0x4412, PACKET_FRIEND_RECRUIT_LIST = 0x4119, PACKET_FRIEND_RECRUIT_ADD = 0x4219, PACKET_FRIEND_RECRUIT_DEL = 0x4319, PACKET_FRIEND_RECRUIT_INFO = 0x4419, PACKET_FRIEND_FIND = 0x3319, PACKET_MYROOM_ENTER_REQ = 0x1126, PACKET_MYROOM_CREATE_REQ = 0x1026, PACKET_MYROOM_EDIT_START = 0x0526, PACKET_MYROOM_EDIT_END = 0x0626, PACKET_MYROOM_RECOMMEND = 0x4026, PACKET_MYROOM_FAVORITE = 0x4126, PACKET_MYROOM_WRITE_BOARD = 0x4226, PACKET_MYROOM_WRITE_INFO = 0x4326, PACKET_MYROOM_BOARD_LIST = 0x4426, PACKET_MYROOM_RANK_INFO = 0x4626, PACKET_MYROOM_FAVORITE_INFO = 0x4726, PACKET_MYROOM_RANK_REWARD = 0x4826, PACKET_HELPER_SUMMON = 0x0227, PACKET_HELPER_SUPPORT_INFO = 0x0527, PACKET_HELPER_SUPPORT_REGISTER = 0x0627, PACKET_HELPER_SUPPORT_REWARD = 0x0727, PACKET_HELPER_SUPPORT_LIST = 0x0827, PACKET_HELPER_SUPPORT_EQUIP = 0x0927, PACKET_HELPER_EQUIP = 0x1027, PACKET_HELPER_CHANGE_ORDER = 0x1027, PACKET_HELPER_ALL_RELEASE = 0x1227, PACKET_HELPER_AUTO_SUMMON = 0x1427, PACKET_MYROOM_EXIT_REQ = 0x1326, PACKET_MYROOM_SETUP = 0x1426, PACKET_MYROOM_KICK_OUT = 0x1526, PACKET_MYROOM_ITEM_ADD = 0x2026, PACKET_MYROOM_ITEM_DEL = 0x2126, PACKET_MYROOM_ITEM_USE = 0x2226, PACKET_MYROOM_ITEM_RELEASE_USED = 0x2326, PACKET_MYROOM_DOOR_STATE = 0x2626, PACKET_MYROOM_POLLEN_ADD = 0x3126, PACKET_MYROOM_POLLEN_CULTIVATION = 0x3226, PACKET_MYROOM_POLLEN_HARVEST = 0x3326, PACKET_MYROOM_POLLEN_HELP = 0x3426, PACKET_MYROOM_POLLEN_ITEM_USE = 0x3526, PACKET_MYROOM_PLLLEN_CANCEL = 0x3726, PACKET_INFINITE_TOWER_ENTER_CHAPTER = 0x0228, PACKET_INFINITE_TOWER_ENTER_NEXT_STAGE = 0x0328, PACKET_SECOND_PASSWORD = 0x1703, PACKET_TRADE_PASSWORD = 0x1803, PACKET_CHARACTER_UPDATE_CUTSCENE = 0x1903, PACKET_SHOP_GACHA = 0x2609, PACKET_EXCHANGE_SEARCH = 0x012b, PACKET_EXCHANGE_PRICE_HISTORY = 0x022b, PACKET_EXCHANGE_INTEREST_LIST = 0x032b, PACKET_EXCHANGE_INTEREST_ITEM = 0x042b, PACKET_EXCHANGE_SELL_REGISTER = 0x052b, PACKET_EXCHANGE_ITEM_BUY = 0x062b, PACKET_EXCHANGE_ITEM_RECALL = 0x072b, PACKET_EXCHANGE_MY_LIST = 0x082b, PACKET_SOCIAL_ITEM_START = 0x012d, PACKET_SOCIAL_ITEM_USE = 0x022d, PACKET_SOCIAL_ITEM_STOP = 0x032d, PACKET_RANKING_LIST = 0x012c, PACKET_RANKING_REWARD = 0x022c, PACKET_FORCE_INVITE = 0x012e, PACKET_FORCE_ACCEPT = 0x022e, PACKET_FORCE_CHANGE_MASTER = 0x032e, PACKET_FORCE_KICK_OUT = 0x042e, PACKET_FORCE_LEAVE = 0x052e, PACKET_FORCE_CANCEL = 0x082e, PACKET_FORCE_MATCHING_ENTER = 0x302e, PACKET_FORCE_MATCHING_EXIT = 0x312e, PACKET_EVENT_USE_COUPON_CODE = 0x212a, PACKET_EVENT_NET_CAFE_ITEM_BUY = 0x2a2a, PACKET_EVENT_WORLD_EVENT_INFO = 0x222a, PACKET_EVENT_WORLD_EVENT_REGISTER = 0x232a, PACKET_EVENT_WORLD_EVENT_REWARD = 0x242a, PACKET_EVENT_WORLD_EVENT_DAILY_REWARD = 0x252a, PACKET_EVENT_ROULETTE_USE = 0x292a, PACKET_FORCE_MATCHING_CHECK = 0x322e, PACKET_PROJECTILE_BT = 0x0112, PACKET_CHAIN_BT = 0x0112, // guesswork sends PACKET_PROB_DISCONNECT = 0x1904, // receives (manually figured out, the low byte is usually +1 of client REQ) PACKET_LOGIN_RESULT = 0x0202, PACKET_SERVER_LIST = 0x0402, PACKET_ENTER_SERVER = 0x1102, PACKET_ENTER_SERVER_RES = 0x1402, PACKET_OPTION_LOAD = 0x3102, PACKET_ENTER_WAIT_CHECK = 0x3402, PACKET_SYSTEM_KEEP_ALIVE = 0x0501, PACKET_SYSTEM_SERVER_OPTION_UPDATE = 0x0701, PACKET_SYSTEM_EVENT = 0x0901, PACKET_CHARACTER_LIST_RES = 0x1203, PACKET_DELETE_CHARACTER_RES = 0x0303, PACKET_SELECT_CHARACTER_RES = 0x1403, PACKET_CHARACTER_ENTER_PROLOGUE = 0x1503, PACKET_CHARACTER_ENTER_BATTLE_ZONE = 0x1603, PACKET_CHARACTER_PLAY_CUTSCENE = 0x2003, PACKET_ENTER_GAMESERVER_RES = 0x2203, PACKET_CHARACTER_ADD_TITLE = 0x2403, PACKET_CHARACTER_UPDATE_TITLE_BT = 0x2603, PACKET_CHARACTER_CLEAR_TITLE = 0x2703, PACKET_CHARACTER_UPDATE_OPEN_TITLE = 0x2903, PACKET_CHARACTER_DB_LOAD_SYNC = 0x3003, PACKET_CHARACTER_INFO_RES = 0x3203, PACKET_CHARACTER_UPDATE_STAT_LIST = 0x3403, PACKET_CHARACTER_UPDATE_ORIGIN_STAT = 0x5103, PACKET_CHARACTER_CHECK_NAME = 0x5703, PACKET_DAILY_MISSION_UPDATE = 0x3204, PACKET_EVENT_ATTENDANCE_LOAD = 0x012a, PACKET_EVENT_ROULETTE_MY_INFO = 0x282a, PACKET_ITEM_UPDATE_CASH_RES = 0x3308, PACKET_ITEM_AKASHIC_GETINFO_LOAD = 0x3518, PACKET_INFINITE_TOWER_LOAD_INFO = 0x0128, PACKET_CHARACTER_LOAD_DISTRICT_STATE = 0x6103, PACKET_CHARACTER_LOAD_MAZE_STATE = 0x6203, PACKET_MAZE_CLEAR_INFO = 0x6411, PACKET_ENTER_MAZE_LIMIT_COUNT_LOAD = 0x4304, PACKET_SOULMETRY_LIST = 0x0121, PACKET_SOULMETRY_COMPLETE_LIST = 0x0221, PACKET_ACHIEVE_SELECT = 0x7003, PACKET_SHOP_BANNER_LOAD = 0x2809, PACKET_SHOP_CASH_SET_LOAD = 0x2209, PACKET_ITEM_APPEARANCE_LOAD = 0x5008, PACKET_NPC_CREDIT_LOAD = 0x6503, PACKET_SHOP_ITEM_LOAD = 0x1009, PACKET_MYROOM_LOAD_INDEX = 0x1226, PACKET_FRIEND_LOAD = 0x0119, PACKET_FRIEND_LOAD_BLOCKLIST = 0x0219, PACKET_DAILY_MISSION_LIST = 0x0124, PACKET_HELPER_LIST_LOAD = 0x0127, PACKET_ACHIEVE_UPDATE = 0x7103, PACKET_WORLD_VERSION = 0x0404, PACKET_EVENT_DAY_EVENT_BOOSTER_LIST = 0x202a, PACKET_LEAGUE_INFO_ALERT = 0x4422, PACKET_SHOP_CASH_BUY_COUNT_LOAD = 0x3009, PACKET_SHOP_CASH_TAB_LOAD = 0x2909, PACKET_IN_PC_INFO = 0x1104, PACKET_OTHER_PC_INFOS = 0x2104, PACKET_OTHER_INFOS_NPC = 0x2204, PACKET_QUEST_LIST = 0x0215, PACKET_GAME_WORLD_ENTER_RES = 0x0204, PACKET_ITEM_CREATE = 0x0608, PACKET_ITEM_MOVE_BT = 0xd08, PACKET_GESTURES = 0x0223, PACKET_SOME_PC_PACKET = 0x5104, PACKET_UNKNOWN = 0x0601, // sent a lot PACKET_AUTH_UNKNOWN1 = 0x0304, // freezes PACKET_GAME_UNKNOWN1 = 0x0633, // sent after 2203 and 4703 PACKET_GAME_UNKNOWN2 = 0x6608, PACKET_GAME_UNKNOWN3 = 0x6808, PACKET_GAME_UNKNOWN4 = 0x1406, PACKET_GAME_UNKNOWN5 = 0x0903, PACKET_SKILLS = 0x7006, PACKET_GAME_UNKNOWN10 = 0x4a08, PACKET_GAME_UNKNOWN11 = 0x5708, PACKET_GAME_UNKNOWN12 = 0x4808, PACKET_GAME_UNKNOWN13 = 0x0604, PACKET_GAME_UNKNOWN14 = 0x5317, PACKET_GAME_UNKNOWN15 = 0x0705, PACKET_GAME_UNKNOWN16 = 0x9203, PACKET_POST_ACCOUNT_LIST = 0x1420, PACKET_POST_ACCOUNT_RECV = 0x1520, PACKET_DROP_INFOS = 0x0114, PACKET_EVENT_ATTENDANCE_REWARD = 0x022a, PACKET_QUEST_COMPLETE_LIST = 0x0115, PACKET_GAME_UNKNOWN22 = 0x7551, PACKET_GAME_UNKNOWN24 = 0x2106, PACKET_BOOSTER_LIST_LOAD = 0x0129, PACKET_CHANNEL_INFO = 0x01f1, PACKET_GAME_UNKNOWN27 = 0x0205, PACKET_BOOSTER_ADD = 0x0229, PACKET_DROP_DELETE = 0x0314, PACKET_SOULMETRY_ADD = 0x0321, PACKET_BOOSTER_REMOVE = 0x0329, PACKET_ATTENDANCE_CONTINUE_REWARD = 0x032a, PACKET_GAME_UNKNOWN33 = 0x0405, PACKET_HELPER_USER_STAT_UPDATE = 0x0427, PACKET_NOTICE = 0x0507, PACKET_EVENT_ATTENDANCE_PLAY_TIME_INIT = 0x052a, PACKET_GAME_UNKNOWN37 = 0x0605, PACKET_SOCIAL_ITEM_INFOS = 0x062d, PACKET_GAME_UNKNOWN39 = 0x0706, PACKET_QUEST_UPDATE = 0x0715, PACKET_GAME_UNKNOWN41 = 0x0803, PACKET_WORLD_WARP_RES = 0x0804, PACKET_GAME_UNKNOWN43 = 0x0805, PACKET_WORLD_WARP_ENABLE_RES = 0x0904, PACKET_CHARACTER_ACTION_REQ = 0x0806, PACKET_CHARACTER_ACTION_RES = 0x0906, PACKET_GAME_UNKNOWN46 = 0x0c05, PACKET_GAME_UNKNOWN47 = 0x0d05, PACKET_WORLD_WARP_MAZE_RES = 0x0e04, PACKET_ITEM_OPEN_SLOT_INFO = 0x0e08, PACKET_GAME_UNKNOWN50 = 0x0f05, PACKET_GAME_UNKNOWN51 = 0x1006, PACKET_GAME_UNKNOWN52 = 0x1105, PACKET_GAME_UNKNOWN53 = 0x1117, PACKET_OUT_INFO_PC = 0x1204, PACKET_ITEM_REDUCE = 0x1208, PACKET_GAME_UNKNOWN56 = 0x1217, PACKET_ITEM_ENDURANCE = 0x1218, PACKET_GAME_UNKNOWN58 = 0x1305, PACKET_GAME_UNKNOWN59 = 0x1306, PACKET_GAME_UNKNOWN60 = 0x1308, PACKET_VACCUM_INFOS = 0x1325, PACKET_GAME_UNKNOWN62 = 0x1405, PACKET_GAME_UNKNOWN63 = 0x1408, PACKET_IN_INFO_MONSTER = 0x1504, PACKET_GAME_UNKNOWN65 = 0x1506, PACKET_OUT_INFO_MONSTER = 0x1604, PACKET_MOVE_TRANSPORT_TAKE = 0x1605, PACKET_MOVE_TRANSPORT_OFF = 0x1705, PACKET_RECEIVE_ZN = 0x2008, PACKET_GAME_UNKNOWN70 = 0x2108, PACKET_GAME_UNKNOWN71 = 0x2111, PACKET_GAME_UNKNOWN72 = 0x2217, PACKET_OTHER_INFOS_MONSTER = 0x2304, PACKET_GAME_UNKNOWN74 = 0x2404, // load quickslot PACKET_GAME_UNKNOWN75 = 0x2608, // ^ PACKET_GAME_UNKNOWN76 = 0x3206, // ^ some of these PACKET_GAME_UNKNOWN77 = 0x3208, PACKET_MOVE_LOOP_MOTION_END_BT = 0x3305, PACKET_GAME_UNKNOWN79 = 0x3317, PACKET_MOVE_ATTACED_BT = 0x3405, PACKET_MOVE_ATTACED_END_BT = 0x3505, PACKET_GAME_UNKNOWN82 = 0x3603, PACKET_RECEIVE_XP = 0x3703, PACKET_ENTER_MAZE_LIMIT_COUNT_RESET = 0x4404, PACKET_GAME_UNKNOWN85 = 0x4606, PACKET_GAME_UNKNOWN86 = 0x4906, PACKET_GAME_UNKNOWN87 = 0x5204, PACKET_GAME_UNKNOWN88 = 0x5211, // bgm stuff? PACKET_GAME_UNKNOWN89 = 0x5311, PACKET_GAME_UNKNOWN90 = 0x5411, PACKET_GAME_UNKNOWN91 = 0x5508, PACKET_GAME_UNKNOWN92 = 0x5511, // portal stuff? PACKET_ITEM_BROACH_LOAD = 0x5608, PACKET_GAME_UNKNOWN94 = 0x5611, PACKET_GAME_UNKNOWN95 = 0x5711, PACKET_CHARACTER_UPDATE_SHARE_POINT = 0x5803, PACKET_GAME_UNKNOWN97 = 0x5811, PACKET_ITEM_SOCKET_UPDATE = 0x6108, PACKET_ITEM_BROACH_UPDATE = 0x6208, PACKET_CHARACTER_FP_UPDATE = 0x6403, PACKET_GAME_UNKNOWN101 = 0x6611, // event box stuff PACKET_GAME_UNKNOWN102 = 0x6811, PACKET_GAME_UNKNOWN103 = 0x7011, PACKET_GAME_UNKNOWN104 = 0x7306, PACKET_GAME_UNKNOWN105 = 0x7511, // end maze / receive reward PACKET_GAME_UNKNOWN106 = 0x7906, PACKET_GAME_UNKNOWN107 = 0x7e06, PACKET_GAME_UNKNOWN108 = 0x7f11, // event box stuff PACKET_GAME_UNKNOWN109 = 0x2205, PACKET_CHARACTER_MOVE = 0x105, PACKET_CHARACTER_MOVE_RES = 0x205, PACKET_CHARACTER_STOP_MOVE = 0x305, PACKET_CHARACTER_STOP_MOVE_RES = 0x405, PACKET_CHARACTER_JUMP = 0x0505, PACKET_CHARACTER_JUMP_RES = 0x0605, // 0x8001 and above make client try to execute a script? }; union packet { struct { uint16_t salt, size; uint8_t unknown; uint16_t type; } __attribute__((packed)) hdr; uint8_t buf[4096 * 4]; }; struct pbuf { union packet *packet; size_t cursor; }; struct pbuf_string { char data[256]; uint16_t len; }; bool packet_verify(const union packet *packet); void packet_crypt(union packet *packet); void pbuf_flush(struct pbuf *pbuf); void pbuf_write(struct pbuf *pbuf, const void *data, const size_t sz); void pbuf_write_str_len(struct pbuf *pbuf, const void *str, const uint16_t len); void pbuf_write_str(struct pbuf *pbuf, const char *str); void pbuf_write_str_len_utf16(struct pbuf *pbuf, const void *str, const uint16_t len); void pbuf_write_str_utf16(struct pbuf *pbuf, const char *str); size_t pbuf_read_safe(struct pbuf *pbuf, void *data, const size_t data_sz, const size_t sz); void pbuf_read(struct pbuf *pbuf, void *data, const size_t sz); void pbuf_read_str(struct pbuf *pbuf, struct pbuf_string *str); void pbuf_read_str_utf16(struct pbuf *pbuf, struct pbuf_string *str);