From 662d78b9a5bebdb98dc178ebd1f8e3384793c104 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Sun, 17 Mar 2019 15:30:43 +0200 Subject: Initial commit --- src/packet.h | 535 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 535 insertions(+) create mode 100644 src/packet.h (limited to 'src/packet.h') diff --git a/src/packet.h b/src/packet.h new file mode 100644 index 0000000..2219a4a --- /dev/null +++ b/src/packet.h @@ -0,0 +1,535 @@ +#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); -- cgit v1.2.3