GCC Code Coverage Report
Directory: src/ Exec Total Coverage
File: src/net/eathena/packetsin.inc Lines: 0 1005 0.0 %
Date: 2021-03-17 Branches: 0 334 0.0 %

Line Branch Exec Source
1
/*
2
 *  The ManaPlus Client
3
 *  Copyright (C) 2004-2009  The Mana World Development Team
4
 *  Copyright (C) 2009-2010  The Mana Developers
5
 *  Copyright (C) 2011-2019  The ManaPlus Developers
6
 *  Copyright (C) 2019-2021  Andrei Karas
7
 *
8
 *  This file is part of The ManaPlus Client.
9
 *
10
 *  This program is free software; you can redistribute it and/or modify
11
 *  it under the terms of the GNU General Public License as published by
12
 *  the Free Software Foundation; either version 2 of the License, or
13
 *  any later version.
14
 *
15
 *  This program is distributed in the hope that it will be useful,
16
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 *  GNU General Public License for more details.
19
 *
20
 *  You should have received a copy of the GNU General Public License
21
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 */
23
24
// very outdated packets
25
packet(SMSG_MAP_LOGIN_SUCCESS,             0x0073,  11, &GameRecv::processMapLogin,                     1);
26
packet(SMSG_BEING_FAKE_NAME,               0x0078,  54, &BeingRecv::processBeingFakeName,               1);
27
packet(SMSG_BEING_SPAWN,                   0x0079,  53, &BeingRecv::processBeingSpawn,                  1);
28
packet(SMSG_BEING_MOVE,                    0x007b,  60, &BeingRecv::processBeingMove,                   1);
29
packet(SMSG_BEING_SPAWN_OUTDATED,          0x007c,  41, nullptr,                                        1);
30
packet(SMSG_WHISPER,                       0x0097,  -1, &ChatRecv::processWhisper,                      1);
31
packet(SMSG_WHISPER_RESPONSE,              0x0098,   3, &ChatRecv::processWhisperResponse,              1);
32
packet(SMSG_ITEM_DROPPED,                  0x009e,  17, &ItemRecv::processItemDropped,                  1);
33
packet(SMSG_PLAYER_INVENTORY_ADD,          0x00a0,  23, &InventoryRecv::processPlayerInventoryAdd,      1);
34
packet(SMSG_PLAYER_INVENTORY,              0x00a3,  -1, &InventoryRecv::processPlayerInventory,         1);
35
packet(SMSG_PLAYER_EQUIPMENT,              0x00a4,  -1, &InventoryRecv::processPlayerEquipment,         1);
36
packet(SMSG_PLAYER_STORAGE_ITEMS,          0x00a5,  -1, &InventoryRecv::processPlayerStorage,           1);
37
packet(SMSG_PLAYER_STORAGE_EQUIP,          0x00a6,  -1, &InventoryRecv::processPlayerStorageEquip,      1);
38
packet(SMSG_PLAYER_EQUIP,                  0x00aa,   7, &InventoryRecv::processPlayerEquip,             1);
39
packet(SMSG_PLAYER_UNEQUIP,                0x00ac,   7, &InventoryRecv::processPlayerUnEquip,           1);
40
packet(SMSG_BEING_CHANGE_LOOKS_OUTDATED,   0x00c3,   8, nullptr,                                        1);
41
packet(SMSG_TRADE_REQUEST,                 0x00e5,  26, &TradeRecv::processTradeRequest,                1);
42
packet(SMSG_TRADE_ITEM_ADD,                0x00e9,  19, &TradeRecv::processTradeItemAdd,                1);
43
packet(SMSG_TRADE_RESPONSE_OUTDATED,       0x00e7,   3, nullptr,                                        0);
44
packet(SMSG_PLAYER_STORAGE_ADD,            0x00f4,  21, &InventoryRecv::processPlayerStorageAdd,        1);
45
packet(SMSG_PARTY_INVITED,                 0x00fe,  30, &PartyRecv::processPartyInvited,                1);
46
packet(SMSG_PLAYER_STATUS_CHANGE,          0x0119,  13, &BeingRecv::processPlayerStatusChange,          1);
47
packet(SMSG_SKILL_DAMAGE,                  0x0114,  31, &BeingRecv::processSkillDamage,                 1);
48
packet(SMSG_SKILL_ENTRY,                   0x011f,  16, &BeingRecv::processSkillEntry,                  1);
49
packet(SMSG_PLAYER_CART_EQUIP,             0x0122,  -1, &InventoryRecv::processPlayerCartEquip,         1);
50
packet(SMSG_PLAYER_CART_ITEMS,             0x0123,  -1, &InventoryRecv::processPlayerCartItems,         1);
51
packet(SMSG_PLAYER_CART_ADD,               0x0124,  21, &InventoryRecv::processPlayerCartAdd,           1);
52
packet(SMSG_VENDING_ITEMS_LIST,            0x0133,  -1, &VendingRecv::processItemsList,                 1);
53
packet(SMSG_VENDING_OPEN,                  0x0136,  -1, &VendingRecv::processOpen,                      1);
54
packet(SMSG_BEING_STATUS_CHANGE,           0x0196,   9, &BeingRecv::processBeingStatusChange,           1);
55
packet(SMSG_QUEST_LIST,                    0x02b1,  -1, &QuestRecv::processAddQuests,                   1);
56
packet(SMSG_BEING_VIEW_EQUIPMENT,          0x02d7,  -1, &BeingRecv::processBeingViewEquipment,          1);
57
packet(SMSG_PARTY_SETTINGS,                0x0101,   6, &PartyRecv::processPartySettings,               1);
58
packet(SMSG_PLAYER_HP,                     0x0106,  10, &BeingRecv::processBeingHp,                     1);
59
packet(SMSG_PET_STATUS,                    0x01a2,  35, &PetRecv::processPetStatus,                     1);
60
61
// fake packets for add packet name
62
packet(SMSG_SELECT_CART,                   0x0000,   0, nullptr,                                        0);
63
packet(CMSG_NAVIGATE_TO,                   0x0000,   0, nullptr,                                        0);
64
packet(SMSG_MERGE_ITEM,                    0x0000,   0, nullptr,                                        0);
65
packet(SMSG_ACK_MERGE_ITEMS,               0x0000,   0, nullptr,                                        0);
66
packet(SMSG_RANKS_LIST,                    0x0000,   0, nullptr,                                        0);
67
packet(SMSG_CHAR_CHARACTERS,               0x0000,   0, nullptr,                                        0);
68
69
// login server, unknown version
70
packet(SMSG_LOGIN_DATA,                    0x0069,  -1, &LoginRecv::processLoginData,                   0);
71
packet(SMSG_LOGIN_CODING_KEY,              0x01dc,  -1, &LoginRecv::processCondingKey,                  0);
72
packet(SMSG_LOGIN_ERROR,                   0x006a,  23, &Ea::LoginRecv::processLoginError,              0);
73
74
// char server, unknown version
75
packet(SMSG_CHAR_CHANGE_SLOT,              0x08d5,  -1, &CharServerRecv::processCharChangeSlot,         0);
76
packet(SMSG_CHAR_CHECK_RENAME,             0x028e,   4, &CharServerRecv::processCharCheckRename,        0);
77
packet(SMSG_CHAR_CREATE_FAILED,            0x006e,   3, &Ea::CharServerRecv::processCharCreateFailed,   0);
78
packet(SMSG_CHAR_CREATE_SUCCEEDED,         0x006d, 149, &CharServerRecv::processCharCreate,             0);
79
packet(SMSG_CHAR_DELETE2_ACCEPT_ACTUAL_ACK, 0x082a,  10, &CharServerRecv::processCharDelete2AcceptActual, 0);
80
packet(SMSG_CHAR_DELETE2_ACK,              0x0828,  14, &CharServerRecv::processCharDelete2Ack,         0);
81
packet(SMSG_CHAR_DELETE2_CANCEL_ACK,       0x082c,  10, &CharServerRecv::processCharDelete2CancelAck,   0);
82
packet(SMSG_CHAR_DELETE_FAILED,            0x0070,   3, &CharServerRecv::processCharDeleteFailed,       0);
83
packet(SMSG_CHAR_DELETE_SUCCEEDED,         0x006f,   2, &Ea::CharServerRecv::processCharDelete,         0);
84
packet(SMSG_CHAR_LOGIN,                    0x006b,  -1, &CharServerRecv::processCharLogin,              0);
85
packet(SMSG_CHAR_LOGIN2,                   0x082d,  -1, &CharServerRecv::processCharLogin2,             0);
86
packet(SMSG_CHAR_LOGIN_ERROR,              0x006c,   3, &Ea::CharServerRecv::processCharLoginError,     0);
87
packet(SMSG_CHAR_MAP_INFO,                 0x0071,  28, &CharServerRecv::processCharMapInfo,            0);
88
packet(SMSG_CHAR_PINCODE_STATUS,           0x08b9,  12, &CharServerRecv::processPincodeStatus,          0);
89
packet(SMSG_CHAR_PINCODE_MAKE_STATUS,      0x08bb,   8, &CharServerRecv::processPincodeMakeStatus,      0);
90
packet(SMSG_CHAR_PINCODE_EDIT_STATUS,      0x08bf,   8, &CharServerRecv::processPincodeEditStatus,      0);
91
packet(SMSG_CHAR_RENAME,                   0x0290,   4, &CharServerRecv::processCharRename,             0);
92
packet(SMSG_MAP_NOT_FOUND,                 0x0840,  -1, &GeneralRecv::processMapNotFound,               0);
93
94
// map server, unknown versions
95
packet(SMSG_ADMIN_GET_LOGIN_ACK,           0x01e0,  30, &AdminRecv::processAdminGetLoginAck,            0);
96
packet(SMSG_ADMIN_KICK_ACK,                0x00cd,   3, &Ea::AdminRecv::processKickAck,                 0);
97
packet(SMSG_ADMIN_SET_TILE_TYPE,           0x0192,  24, &AdminRecv::processSetTileType,                 0);
98
packet(SMSG_BATTLE_BEGINS,                 0x08df,  50, &BattleGroundRecv::processBattleBegins,         0);
99
packet(SMSG_BATTLE_JOINED,                 0x08d9,  30, &BattleGroundRecv::processBattleJoined,         0);
100
packet(SMSG_BATTLE_NOTICE_DELETE,          0x08db,  27, &BattleGroundRecv::processBattleNoticeDelete,   0);
101
packet(SMSG_BATTLE_QUEUE_ACK,              0x08d8,  27, &BattleGroundRecv::processBattleQueueAck,       0);
102
packet(SMSG_BEING_ACTION,                  0x008a,  29, &Ea::BeingRecv::processBeingAction,             0);
103
packet(SMSG_BEING_CHANGE_DIRECTION,        0x009c,   9, &BeingRecv::processBeingChangeDirection,        0);
104
packet(SMSG_BEING_CHAT,                    0x008d,  -1, &ChatRecv::processBeingChat,                    0);
105
packet(SMSG_BEING_EMOTION,                 0x00c0,   7, &Ea::BeingRecv::processBeingEmotion,            0);
106
packet(SMSG_BEING_MOVE2,                   0x0086,  16, &BeingRecv::processBeingMove2,                  0);
107
packet(SMSG_BEING_NAME_RESPONSE,           0x0095,  30, &Ea::BeingRecv::processNameResponse,            0);
108
packet(SMSG_BEING_REMOVE,                  0x0080,   7, &Ea::BeingRecv::processBeingRemove,             0);
109
packet(SMSG_BEING_REMOVE_SKILL,            0x0120,   6, &BeingRecv::processBeingRemoveSkill,            0);
110
packet(SMSG_BEING_RESURRECT,               0x0148,   8, &BeingRecv::processBeingResurrect,              0);
111
packet(SMSG_BEING_SELFEFFECT,              0x019b,  10, &BeingRecv::processBeingSelfEffect,             0);
112
packet(SMSG_BEING_SLIDE,                   0x01ff,  10, &BeingRecv::processBeingSlide,                  0);
113
packet(SMSG_BEING_SOUND_EFFECT,            0x01d3,  35, &BeingRecv::processBeingSoundEffect,            0);
114
packet(SMSG_BEING_SPECIAL_EFFECT,          0x01f3,  10, &BeingRecv::processBeingSpecialEffect,          0);
115
packet(SMSG_BEING_STAT_UPDATE_1,           0x01ab,  12, &BeingRecv::processBeingStatUpdate1,            0);
116
packet(SMSG_BIND_ITEM,                     0x02d3,   4, &InventoryRecv::processBindItem,                0);
117
packet(SMSG_BLADE_STOP,                    0x01d1,  14, &BeingRecv::processBladeStop,                   0);
118
packet(SMSG_CART_INFO,                     0x0121,  14, &InventoryRecv::processCartInfo,                0);
119
packet(SMSG_CART_REMOVE,                   0x012b,   2, &InventoryRecv::processCartRemove,              0);
120
packet(SMSG_CHANGE_MAP_SERVER,             0x0092,  28, &CharServerRecv::processChangeMapServer,        0);
121
packet(SMSG_CHAR_BAN_CHAR_LIST,            0x020d,  -1, &CharServerRecv::processCharBanCharList,        0);
122
packet(SMSG_CHAR_SWITCH_RESPONSE,          0x00b3,   3, &Ea::GameRecv::processCharSwitchResponse,       0);
123
packet(SMSG_CHAT_DISPLAY,                  0x00d7,  -1, &ChatRecv::processChatDisplay,                  0);
124
packet(SMSG_CHAT_IGNORE_LIST,              0x00d4,  -1, &ChatRecv::processChatIgnoreList,               0);
125
packet(SMSG_CHAT_ROOM_ADD_MEMBER,          0x00dc,  28, &ChatRecv::processChatRoomAddMember,            0);
126
packet(SMSG_CHAT_ROOM_CREATE_ACK,          0x00d6,   3, &ChatRecv::processChatRoomCreateAck,            0);
127
packet(SMSG_CHAT_ROOM_DESTROY,             0x00d8,   6, &ChatRecv::processChatRoomDestroy,              0);
128
packet(SMSG_CHAT_ROOM_JOIN_ACK,            0x00db,  -1, &ChatRecv::processChatRoomJoinAck,              0);
129
packet(SMSG_CHAT_ROOM_JOIN_FAILED,         0x00da,   3, &ChatRecv::processChatRoomJoinFailed,           0);
130
packet(SMSG_CHAT_ROOM_LEAVE,               0x00dd,  29, &ChatRecv::processChatRoomLeave,                0);
131
packet(SMSG_CHAT_ROOM_ROLE_CHANGE,         0x00e1,  30, &ChatRecv::processChatRoomRoleChange,           0);
132
packet(SMSG_CHAT_ROOM_SETTINGS,            0x00df,  -1, &ChatRecv::processChatRoomSettings,             0);
133
packet(SMSG_CHAT_SILENCE,                  0x014b,  27, &ChatRecv::processChatSilence,                  0);
134
packet(SMSG_CHAT_TALKIE_BOX,               0x0191,  86, &ChatRecv::processChatTalkieBox,                0);
135
packet(SMSG_CLASS_CHANGE,                  0x01b0,  11, &BeingRecv::processClassChange,                 0);
136
packet(SMSG_COMBO_DELAY,                   0x01d2,  10, &BeingRecv::processComboDelay,                  0);
137
packet(SMSG_CONNECTION_PROBLEM,            0x0081,   3, &GeneralRecv::processConnectionProblem,         0);
138
packet(SMSG_FAMILY_ASK_FOR_CHILD,          0x01f6,  34, &FamilyRecv::processAskForChild,                0);
139
packet(SMSG_FAMILY_CALL_PARTNER,           0x01e6,  26, &FamilyRecv::processCallPartner,                0);
140
packet(SMSG_FAMILY_DIVORCED,               0x0205,  26, &FamilyRecv::processDivorced,                   0);
141
packet(SMSG_FRIENDS_DELETE_PLAYER,         0x020a,  10, &FriendsRecv::processDeletePlayer,              0);
142
packet(SMSG_FRIENDS_LIST,                  0x0201,  -1, &FriendsRecv::processFriendsList,               0);
143
packet(SMSG_FRIENDS_PLAYER_ONLINE,         0x0206,  11, &FriendsRecv::processPlayerOnline,              0);
144
packet(SMSG_FRIENDS_REQUEST,               0x0207,  34, &FriendsRecv::processRequest,                   0);
145
packet(SMSG_FRIENDS_REQUEST_ACK,           0x0209,  36, &FriendsRecv::processRequestAck,                0);
146
packet(SMSG_GM_CHAT,                       0x009a,  -1, &ChatRecv::processGmChat,                       0);
147
packet(SMSG_GM_CHAT2,                      0x01c3,  -1, &ChatRecv::processGmChat2,                      0);
148
packet(SMSG_GRAFFITI_VISIBLE,              0x01c9,  97, &BeingRecv::processGraffiti,                    0);
149
packet(SMSG_GUILD_ALIANCE_INFO,            0x014c,  -1, &GuildRecv::processGuildAlianceInfo,        0);
150
packet(SMSG_GUILD_ALLIANCE_ADDED_DISABLED, 0x0185,  34, nullptr,                                        0);
151
packet(SMSG_GUILD_BASIC_INFO,              0x01b6, 114, &GuildRecv::processGuildBasicInfo,          0);
152
packet(SMSG_GUILD_BROKEN,                  0x015e,   6, &GuildRecv::processGuildBroken,             0);
153
packet(SMSG_GUILD_CREATE_RESPONSE,         0x0167,   3, &GuildRecv::processGuildCreateResponse,     0);
154
packet(SMSG_GUILD_DEL_ALLIANCE,            0x0184,  10, &GuildRecv::processGuildDelAlliance,        0);
155
packet(SMSG_GUILD_EMBLEM,                  0x01b4,  12, &GuildRecv::processGuildEmblem,                 0);
156
packet(SMSG_GUILD_EMBLEM_DATA,             0x0152,  -1, &GuildRecv::processGuildEmblemData,         0);
157
packet(SMSG_GUILD_INVITE,                  0x016a,  30, &GuildRecv::processGuildInvite,             0);
158
packet(SMSG_GUILD_INVITE_ACK,              0x0169,   3, &GuildRecv::processGuildInviteAck,          0);
159
packet(SMSG_GUILD_LEAVE,                   0x015a,  66, &GuildRecv::processGuildLeave,              0);
160
packet(SMSG_GUILD_MASTER_OR_MEMBER,        0x014e,   6, &GuildRecv::processGuildMasterOrMember,     0);
161
packet(SMSG_GUILD_MEMBER_LIST,             0x0154,  -1, &GuildRecv::processGuildMemberList,         0);
162
packet(SMSG_GUILD_MEMBER_LOGIN,            0x01f2,  20, &GuildRecv::processGuildMemberLogin,            0);
163
packet(SMSG_GUILD_MEMBER_POS_CHANGE,       0x0156,  -1, &GuildRecv::processGuildMemberPosChange,    0);
164
packet(SMSG_GUILD_MESSAGE,                 0x017f,  -1, &GuildRecv::processGuildMessage,            0);
165
packet(SMSG_GUILD_NOTICE,                  0x016f, 182, &GuildRecv::processGuildNotice,             0);
166
packet(SMSG_GUILD_OPPOSITION_ACK,          0x0181,   3, &GuildRecv::processGuildOppositionAck,      0);
167
packet(SMSG_GUILD_POSITION_CHANGED,        0x0174,  -1, &GuildRecv::processGuildPositionChanged,    0);
168
packet(SMSG_GUILD_POSITION_INFO,           0x016c,  43, &GuildRecv::processGuildPositionInfo,           0);
169
packet(SMSG_GUILD_POS_INFO_LIST,           0x0160,  -1, &GuildRecv::processGuildPosInfoList,        0);
170
packet(SMSG_GUILD_POS_NAME_LIST,           0x0166,  -1, &GuildRecv::processGuildPosNameList,        0);
171
packet(SMSG_GUILD_REQ_ALLIANCE,            0x0171,  30, &GuildRecv::processGuildReqAlliance,        0);
172
packet(SMSG_GUILD_REQ_ALLIANCE_ACK,        0x0173,   3, &GuildRecv::processGuildReqAllianceAck,     0);
173
packet(SMSG_GUILD_SKILL_INFO,              0x0162,  -1, &GuildRecv::processGuildSkillInfo,          0);
174
packet(SMSG_GUILD_UPDATE_COORDS,           0x01eb,  10, &GuildRecv::processGuildUpdateCoords,           0);
175
packet(SMSG_IGNORE_ALL_RESPONSE,           0x00d2,   4, &Ea::ChatRecv::processIgnoreAllResponse,        0);
176
packet(SMSG_IGNORE_NICK_ACK,               0x00d1,   4, &ChatRecv::processIgnoreNickAck,                0);
177
packet(SMSG_ITEM_MVP_DROPPED,              0x07fd,  -1, &ItemRecv::processItemMvpDropped,               0);
178
packet(SMSG_ITEM_REMOVE,                   0x00a1,   6, &Ea::ItemRecv::processItemRemove,               0);
179
packet(SMSG_ITEM_USE_RESPONSE,             0x00a8,   7, &Ea::InventoryRecv::processItemUseResponse,     0);
180
packet(SMSG_ITEM_VISIBLE,                  0x009d,  17, &ItemRecv::processItemVisible,                  0);
181
packet(SMSG_MANNER_MESSAGE,                0x014a,   6, &ChatRecv::processMannerMessage,                0);
182
packet(SMSG_MAP_AUTH_REFUSE,               0x0074,   3, &GameRecv::processMapAuthRefuse,                0);
183
packet(SMSG_MAP_QUIT_RESPONSE,             0x018b,   4, &Ea::GameRecv::processMapQuitResponse,          0);
184
packet(SMSG_MAP_TYPE,                      0x01d6,   4, &BeingRecv::processMapType,                     0);
185
packet(SMSG_MARRIAGE_PROCESS_OUTDATED,     0x01e4,   2, nullptr,                                        0);
186
packet(SMSG_MARRIAGE_PROPOSAL_OUTDATED,    0x01e2,  34, nullptr,                                        0);
187
packet(SMSG_MONSTER_INFO,                  0x018c,  29, &BeingRecv::processMonsterInfo,                 0);
188
packet(SMSG_MVP_ITEM,                      0x010a,   4, &ChatRecv::processMVPItem,                      0);
189
packet(SMSG_MVP_EFFECT,                    0x010c,   6, &Ea::ChatRecv::processMVPEffect,                0);
190
packet(SMSG_MVP_NO_ITEM,                   0x010d,   2, &ChatRecv::processMVPNoItem,                    0);
191
packet(SMSG_NPC_BUY,                       0x00c6,  -1, &BuySellRecv::processNpcBuy,                    0);
192
packet(SMSG_NPC_BUY_RESPONSE,              0x00ca,   3, &BuySellRecv::processNpcBuyResponse,            0);
193
packet(SMSG_NPC_BUY_SELL_CHOICE,           0x00c4,   6, &Ea::BuySellRecv::processNpcBuySellChoice,      0);
194
packet(SMSG_NPC_CASH_POINTS,               0x0845,  10, &CashShopRecv::processCashShopPoints,           0);
195
packet(SMSG_NPC_CASH_SCHEDULE,             0x08ca,  -1, &CashShopRecv::processCashShopSchedule,         0);
196
packet(SMSG_NPC_CASH_TAB_PRICE_LIST,       0x08c0,  -1, &CashShopRecv::processCashShopTabPriceList,     0);
197
packet(SMSG_NPC_CHOICE,                    0x00b7,  -1, &Ea::NpcRecv::processNpcChoice,                 0);
198
packet(SMSG_NPC_CLOSE,                     0x00b6,   6, &Ea::NpcRecv::processNpcClose,                  0);
199
packet(SMSG_NPC_CLOSE_TIMEOUT,             0x08d6,   6, &NpcRecv::processNpcCloseTimeout,               0);
200
packet(SMSG_NPC_CUTIN,                     0x01b3,  67, &NpcRecv::processNpcCutin,                      0);
201
packet(SMSG_NPC_INT_INPUT,                 0x0142,   6, &Ea::NpcRecv::processNpcIntInput,               0);
202
packet(SMSG_NPC_MESSAGE,                   0x00b4,  -1, &Ea::NpcRecv::processNpcMessage,                0);
203
packet(SMSG_NPC_NEXT,                      0x00b5,   6, &Ea::NpcRecv::processNpcNext,                   0);
204
packet(SMSG_NPC_SELL,                      0x00c7,  -1, &Ea::BuySellRecv::processNpcSell,               0);
205
packet(SMSG_NPC_SELL_RESPONSE,             0x00cb,   3, &BuySellRecv::processNpcSellResponse,           0);
206
packet(SMSG_NPC_SHOW_DIGIT,                0x01b1,   7, &NpcRecv::processShowDigit,                     0);
207
packet(SMSG_NPC_STR_INPUT,                 0x01d4,   6, &Ea::NpcRecv::processNpcStrInput,               0);
208
packet(SMSG_NPC_VIEWPOINT,                 0x0144,  23, &NpcRecv::processNpcViewPoint,                  0);
209
packet(SMSG_PARTY_CREATE,                  0x00fa,   3, &Ea::PartyRecv::processPartyCreate,             0);
210
packet(SMSG_PARTY_INFO,                    0x00fb,  -1, &PartyRecv::processPartyInfo,                   0);
211
packet(SMSG_PARTY_INVITE_RESPONSE_OUTDATED, 0x00fd, 27, nullptr,                                        0);
212
packet(SMSG_PARTY_LEADER,                  0x07fc,  10, &PartyRecv::processPartyLeader,                 0);
213
packet(SMSG_PARTY_LEAVE,                   0x0105,  31, &Ea::PartyRecv::processPartyLeave,              0);
214
packet(SMSG_PARTY_MEMBER_INFO,             0x01e9,  81, &PartyRecv::processPartyMemberInfo,             0);
215
packet(SMSG_PARTY_MESSAGE,                 0x0109,  -1, &PartyRecv::processPartyMessage,                0);
216
packet(SMSG_PARTY_UPDATE_COORDS,           0x0107,  10, &Ea::PartyRecv::processPartyUpdateCoords,       0);
217
packet(SMSG_PET_CATCH_PROCESS,             0x019e,   2, &PetRecv::processPetCatchProcess,               0);
218
packet(SMSG_PET_DATA,                      0x01a4,  11, &PetRecv::processPetData,                       0);
219
packet(SMSG_PET_EGGS_LIST,                 0x01a6,  -1, &PetRecv::processEggsList,                      0);
220
packet(SMSG_PET_FOOD,                      0x01a3,   5, &PetRecv::processPetFood,                       0);
221
packet(SMSG_PET_MESSAGE,                   0x01aa,  10, &PetRecv::processPetMessage,                    0);
222
packet(SMSG_PET_ROULETTE,                  0x01a0,   3, &PetRecv::processPetRoulette,                   0);
223
packet(SMSG_PLAYER_ADD_SKILL,              0x0111,  39, &SkillRecv::processSkillAdd,                    0);
224
packet(SMSG_PLAYER_ARROW_EQUIP,            0x013c,   4, &Ea::InventoryRecv::processPlayerArrowEquip,    0);
225
packet(SMSG_PLAYER_ARROW_MESSAGE,          0x013b,   4, &Ea::PlayerRecv::processPlayerArrowMessage,     0);
226
packet(SMSG_PLAYER_ATTACK_RANGE,           0x013a,   4, &Ea::InventoryRecv::processPlayerAttackRange,   0);
227
packet(SMSG_PLAYER_CART_ADD_ERROR,         0x012c,   3, &InventoryRecv::processCartAddError,            0);
228
packet(SMSG_PLAYER_CART_REMOVE,            0x0125,   8, &InventoryRecv::processPlayerCartRemove,        0);
229
packet(SMSG_PLAYER_CHAT,                   0x008e,  -1, &ChatRecv::processChat,                         0);
230
packet(SMSG_PLAYER_GUILD_PARTY_INFO,       0x0195, 102, &BeingRecv::processPlayerGuilPartyInfo,         0);
231
packet(SMSG_PLAYER_HEAL,                   0x013d,   6, &PlayerRecv::processPlayerHeal,                 0);
232
packet(SMSG_PLAYER_IDENTIFIED,             0x0179,   5, &InventoryRecv::processPlayerIdentified,        0);
233
packet(SMSG_PLAYER_IDENTIFY_LIST,          0x0177,  -1, &InventoryRecv::processPlayerIdentifyList,      0);
234
packet(SMSG_PLAYER_INSERT_CARD,            0x017d,   7, &InventoryRecv::processPlayerInsertCard,        0);
235
packet(SMSG_PLAYER_INVENTORY_REMOVE,       0x00af,   6, &InventoryRecv::processPlayerInventoryRemove,   0);
236
packet(SMSG_PLAYER_MOVE_TO_ATTACK,         0x0139,  16, &Ea::BeingRecv::processPlayerMoveToAttack,      0);
237
packet(SMSG_PLAYER_NOTIFY_MAPINFO,         0x0189,   4, &PlayerRecv::processNotifyMapInfo,              0);
238
packet(SMSG_PLAYER_REFINE,                 0x0188,   8, &InventoryRecv::processPlayerRefine,            0);
239
packet(SMSG_PLAYER_REPAIR_EFFECT,          0x01fe,   5, &InventoryRecv::processPlayerRepairEffect,      0);
240
packet(SMSG_PLAYER_REPAIR_LIST,            0x01fc,  -1, &InventoryRecv::processPlayerRepairList,        0);
241
packet(SMSG_PLAYER_SKILLS,                 0x010f,  -1, &SkillRecv::processPlayerSkills,                0);
242
packet(SMSG_PLAYER_SKILL_PRODUCE_EFFECT,   0x018f,   6, &SkillRecv::processSkillProduceEffect,          0);
243
packet(SMSG_PLAYER_SKILL_PRODUCE_MIX_LIST, 0x018d,  -1, &SkillRecv::processSkillProduceMixList,         0);
244
packet(SMSG_PLAYER_SKILL_UP,               0x010e,  11, &Ea::SkillRecv::processPlayerSkillUp,           0);
245
packet(SMSG_PLAYER_STAT_UPDATE_1,          0x00b0,   8, &Ea::PlayerRecv::processPlayerStatUpdate1,      0);
246
packet(SMSG_PLAYER_STAT_UPDATE_2,          0x00b1,   8, &Ea::PlayerRecv::processPlayerStatUpdate2,      0);
247
packet(SMSG_PLAYER_STAT_UPDATE_3,          0x0141,  14, &Ea::PlayerRecv::processPlayerStatUpdate3,      0);
248
packet(SMSG_PLAYER_STAT_UPDATE_4,          0x00bc,   6, &Ea::PlayerRecv::processPlayerStatUpdate4,      0);
249
packet(SMSG_PLAYER_STAT_UPDATE_5,          0x00bd,  44, &PlayerRecv::processPlayerStatUpdate5,          0);
250
packet(SMSG_PLAYER_STAT_UPDATE_6,          0x00be,   5, &Ea::PlayerRecv::processPlayerStatUpdate6,      0);
251
packet(SMSG_PLAYER_STOP,                   0x0088,  10, &Ea::BeingRecv::processPlayerStop,              0);
252
packet(SMSG_PLAYER_STORAGE_CLOSE,          0x00f8,   2, &Ea::InventoryRecv::processPlayerStorageClose,  0);
253
packet(SMSG_PLAYER_STORAGE_REMOVE,         0x00f6,   8, &InventoryRecv::processPlayerStorageRemove,     0);
254
packet(SMSG_PLAYER_STORAGE_STATUS,         0x00f2,   6, &Ea::InventoryRecv::processPlayerStorageStatus, 0);
255
packet(SMSG_PLAYER_USE_CARD,               0x017b,  -1, &InventoryRecv::processPlayerUseCard,           0);
256
packet(SMSG_PLAYER_WARP,                   0x0091,  22, &Ea::PlayerRecv::processPlayerWarp,             0);
257
packet(SMSG_PVP_MAP_MODE,                  0x0199,   4, &Ea::BeingRecv::processPvpMapMode,              0);
258
packet(SMSG_PVP_SET,                       0x019a,  14, &BeingRecv::processPvpSet,                      0);
259
packet(SMSG_SCRIPT_MESSAGE,                0x08b3,  -1, &ChatRecv::processScriptMessage,                0);
260
packet(SMSG_SERVER_PING,                   0x007f,   6, &GameRecv::processServerTick,                   0);
261
packet(SMSG_SKILL_ARROW_CREATE_LIST,       0x01ad,  -1, &SkillRecv::processSkillArrowCreateList,        0);
262
packet(SMSG_SKILL_AUTO_CAST,               0x0147,  39, &BeingRecv::processSkillAutoCast,               0);
263
packet(SMSG_SKILL_CAST_CANCEL,             0x01b9,   6, &BeingRecv::processSkillCancel,                 0);
264
packet(SMSG_SKILL_DEVOTION_EFFECT,         0x01cf,  28, &SkillRecv::processSkillDevotionEffect,         0);
265
packet(SMSG_SKILL_FAILED,                  0x0110,  10, &SkillRecv::processSkillFailed,                 0);
266
packet(SMSG_SKILL_GROUND_DAMAGE_UNUSED,    0x0115,  35, nullptr,                                        0);
267
packet(SMSG_SKILL_GROUND_NO_DAMAGE,        0x0117,  18, &BeingRecv::processSkillGroundNoDamage,         0);
268
packet(SMSG_SKILL_MEMO_MESSAGE,            0x011e,   3, &SkillRecv::processSkillMemoMessage,            0);
269
packet(SMSG_SKILL_NO_DAMAGE,               0x011a,  15, &Ea::BeingRecv::processSkillNoDamage,           1);
270
packet(SMSG_SKILL_UNIT_UPDATE,             0x01ac,   6, &SkillRecv::processSkillUnitUpdate,             0);
271
packet(SMSG_SKILL_WARP_POINT,              0x011c,  68, &SkillRecv::processSkillWarpPoint,              0);
272
packet(SMSG_SOLVE_CHAR_NAME,               0x0194,  30, &BeingRecv::processSolveCharName,               0);
273
packet(SMSG_SPIRIT_BALLS,                  0x01d0,   8, &BeingRecv::processSpiritBalls,                 0);
274
packet(SMSG_SPIRIT_BALL_SINGLE,            0x01e1,   8, &BeingRecv::processSpiritBalls,                 0);
275
packet(SMSG_TRADE_CANCEL,                  0x00ee,   2, &Ea::TradeRecv::processTradeCancel,             0);
276
packet(SMSG_TRADE_COMPLETE,                0x00f0,   3, &Ea::TradeRecv::processTradeComplete,           0);
277
packet(SMSG_TRADE_ITEM_ADD_RESPONSE,       0x00ea,   5, &TradeRecv::processTradeItemAddResponse,        0);
278
packet(SMSG_TRADE_OK,                      0x00ec,   3, &Ea::TradeRecv::processTradeOk,                 0);
279
packet(SMSG_TRADE_UNDO,                    0x00f1,   2, &TradeRecv::processTradeUndo,                   0);
280
packet(SMSG_VENDING_BUY_ACK,               0x0135,   7, &VendingRecv::processBuyAck,                    0);
281
packet(SMSG_VENDING_HIDE_BOARD,            0x0132,   6, &VendingRecv::processHideBoard,                 0);
282
packet(SMSG_VENDING_OPEN_REQ,              0x012d,   4, &VendingRecv::processOpenReq,                   0);
283
packet(SMSG_VENDING_REPORT,                0x0137,   6, &VendingRecv::processReport,                    0);
284
packet(SMSG_VENDING_SHOW_BOARD,            0x0131,  86, &VendingRecv::processShowBoard,                 0);
285
packet(SMSG_WALK_RESPONSE,                 0x0087,  12, &PlayerRecv::processWalkResponse,               0);
286
packet(SMSG_WEDDING_EFFECT,                0x01ea,   6, &BeingRecv::processWddingEffect,                0);
287
packet(SMSG_WHO_ANSWER,                    0x00c2,   6, &Ea::GameRecv::processWhoAnswer,                0);
288
packet(SMSG_BOOKING_CANCEL_VOLUNTEER,      0x0909,   6, nullptr,                                        0);
289
packet(SMSG_BOOKING_ADD_FILTERING_LIST,    0x090b,  30, nullptr,                                        0);
290
packet(SMSG_BOOKING_SUB_FILTERING_LIST,    0x090c,  30, nullptr,                                        0);
291
packet(SMSG_ADD_MAP_MARKER,                0x09c1,  10, &MapRecv::processAddMapMarker,                  0);
292
packet(SMSG_GUILD_ONLINE_INFO,             0x016d,  14, &GuildRecv::processOnlineInfo,                  0);
293
packet(SMSG_FORMAT_MESSAGE_STRING,         0x02c2,  -1, &ChatRecv::processFormatMessageString,          0);
294
packet(SMSG_FORMAT_COLOR_MESSAGE,          0x09cd,   8, &ChatRecv::processFormatColor,                  0);
295
packet(SMSG_GUILD_EXPULSION_LIST,          0x0163,  -1, &GuildRecv::processGuildExpulsionList1,         0);
296
297
// 3
298
if (packetVersion >= 3)
299
{
300
    packet(SMSG_PLAYER_INVENTORY_USE,      0x01c8,  13, &InventoryRecv::processPlayerInventoryUse,      3);
301
    packet(SMSG_SKILL_DAMAGE,              0x01de,  33, &BeingRecv::processSkillDamage,                 3);
302
}
303
304
// 4
305
if (packetVersion >= 4)
306
{
307
    packet(SMSG_BEING_CHANGE_LOOKS2,       0x01d7,  11, &BeingRecv::processBeingChangeLook2,            4);
308
    packet(SMSG_BEING_VISIBLE,             0x01d8,  54, &BeingRecv::processBeingVisible,                4);
309
    packet(SMSG_BEING_SPAWN,               0x01d9,  53, &BeingRecv::processBeingSpawn,                  4);
310
    packet(SMSG_BEING_MOVE,                0x01da,  60, &BeingRecv::processBeingMove,                   4);
311
}
312
313
// 5
314
packet(SMSG_PLAYER_STORAGE_ADD,            0x01c4,  22, &InventoryRecv::processPlayerStorageAdd,        5);
315
packet(SMSG_PLAYER_CART_ADD,               0x01c5,  22, &InventoryRecv::processPlayerCartAdd,           5);
316
317
// 6
318
if (packetVersion >= 6)
319
{
320
    packet(SMSG_TRADE_REQUEST,             0x01f4,  32, &TradeRecv::processTradeRequest,                6);
321
    packet(SMSG_TRADE_RESPONSE,            0x01f5,   9, &TradeRecv::processTradeResponse,               6);
322
}
323
324
if (packetVersion >= 7)
325
{
326
    packet(SMSG_BEING_VISIBLE,             0x022a,  58, &BeingRecv::processBeingVisible,                7);
327
    packet(SMSG_BEING_SPAWN,               0x022b,  57, &BeingRecv::processBeingSpawn,                  7);
328
    packet(SMSG_BEING_MOVE,                0x022c,  65, &BeingRecv::processBeingMove,                   7);
329
}
330
331
// 20040816
332
packet(SMSG_ADMIN_ACCOUNT_STATS,           0x0214,  42, &AdminRecv::processAccountStats,                20040816);
333
334
// 20040817
335
packet(SMSG_PVP_INFO,                      0x0210,  22, &PlayerRecv::processPvpInfo,                    20040817);
336
337
// 20041101
338
packet(SMSG_PLAYER_SKILL_MESSAGE,          0x0215,   6, &PlayerRecv::processPlayerSkillMessage,         20041101);
339
340
// 20041108
341
packet(SMSG_FAMILY_ASK_FOR_CHILD_REPLY,    0x0216,   6, &FamilyRecv::processAskForChildReply,           20041108);
342
packet(SMSG_BLACKSMITH_RANKS_LIST,         0x0219, 282, &BeingRecv::processBlacksmithRanksList,         20041108);
343
packet(SMSG_ALCHEMIST_RANKS_LIST,          0x021a, 282, &BeingRecv::processAlchemistRanksList,          20041108);
344
packet(SMSG_PLAYER_FAME_BLACKSMITH,        0x021b,  10, &PlayerRecv::processPlayerFameBlacksmith,       20041108);
345
packet(SMSG_PLAYER_FAME_ALCHEMIST,         0x021c,  10, &PlayerRecv::processPlayerFameAlchemist,        20041108);
346
347
// 20041129
348
packet(SMSG_PLAYER_REFINE_LIST,            0x0221,  -1, &InventoryRecv::processPlayerRefineList,        20041129);
349
packet(SMSG_PLAYER_UPGRADE_MESSAGE,        0x0223,   8, &PlayerRecv::processPlayerUpgradeMessage,       20041129);
350
351
// 20050328
352
packet(SMSG_PLAYER_FAME_TAEKWON,           0x0224,  10, &PlayerRecv::processPlayerFameTaekwon,          20050328);
353
packet(SMSG_TAEKWON_RANKS_LIST,            0x0226, 282, &BeingRecv::processTaekwonRanksList,            20050328);
354
355
// 20050411
356
if (packetVersion >= 20050411)
357
{
358
    packet(SMSG_PLAYER_STATUS_CHANGE,      0x0229,  15, &BeingRecv::processPlayerStatusChange,          20050411);
359
}
360
361
// 20050523
362
packet(SMSG_HOMUNCULUS_DATA,               0x0230,  12, &HomunculusRecv::processHomunculusData,         20050523);
363
364
// 20050530
365
packet(SMSG_HOMUNCULUS_SKILLS,             0x0235,  -1, &HomunculusRecv::processHomunculusSkills,       20050530);
366
packet(SMSG_PK_RANKS_LIST,                 0x0238, 282, &BeingRecv::processPkRanksList,                 20050530);
367
368
// 20050531
369
packet(SMSG_HOMUNCULUS_SKILL_UP,           0x0239,  11, &HomunculusRecv::processHomunculusSkillUp,      20050531);
370
371
// 20050608
372
packet(SMSG_HOMUNCULUS_FOOD,               0x022f,   5, &HomunculusRecv::processHomunculusFood,         20050608);
373
packet(SMSG_PLAYER_STORAGE_PASSWORD,       0x023a,   4, &InventoryRecv::processPlayerStoragePassword,   20050608);
374
packet(SMSG_PLAYER_STORAGE_PASSWORD_RESULT, 0x023c,  6, &InventoryRecv::processPlayerStoragePasswordResult, 20050608);
375
376
// 20050718
377
packet(SMSG_MAIL_READ_MAIL,                0x0242,  -1, &MailRecv::processReadMail,                     20050718);
378
packet(SMSG_MAIL_SEND_MAIL_ACK,            0x0249,   3, &MailRecv::processSendMailAck,                  20050718);
379
packet(SMSG_MAIL_NEW_MAIL,                 0x024a,  70, &MailRecv::processNewMail,                      20050718);
380
packet(SMSG_AUCTION_MESSAGE,               0x0250,   3, &AuctionRecv::processAuctionMessage,            20050718);
381
packet(SMSG_AUCTION_RESULTS,               0x0252,  -1, &AuctionRecv::processAuctionResults,            20050718);
382
383
// 20050801
384
packet(SMSG_MAIL_GET_ATTACHMENT,           0x0245,   3, &MailRecv::processGetAttachment,                20050801);
385
386
// 20050817
387
packet(SMSG_GLADIATOR_FEEL_REQUEST,        0x0253,   3, &BeingRecv::processGladiatorFeelRequest,        20050817);
388
389
// 20050829
390
packet(SMSG_MAIL_MAILS_LIST,               0x0240,  -1, &MailRecv::processMailList,                     20050829);
391
packet(SMSG_MAIL_SET_ATTACHMENT_ACK,       0x0255,   5, &MailRecv::processSetAttachmentAck,             20050829);
392
packet(SMSG_MAIL_DELETE_MAIL_ACK,          0x0257,   8, &MailRecv::processDeleteAck,                    20050829);
393
394
// 20050912
395
packet(SMSG_AUCTION_SET_ITEM,              0x0256,   5, &AuctionRecv::processAuctionSetItem,            20050912);
396
397
// 20051010
398
packet(SMSG_STARS_KILL,                    0x020e,  32, &BeingRecv::processStarsKill,                   20051010);
399
packet(SMSG_PLAYER_COOKING_LIST,           0x025a,  -1, &InventoryRecv::processPlayerCookingList,       20051010);
400
401
// 20051017
402
packet(SMSG_AUCTION_CLOSE,                 0x025d,   4, &AuctionRecv::processAuctionClose,              20051017);
403
404
// 20051024
405
packet(SMSG_AUCTION_OPEN_WINDOW,           0x025f,   6, &AuctionRecv::processOpenWindow,                20051024);
406
packet(SMSG_MAIL_OPEN_WINDOW,              0x0260,   6, &MailRecv::processMailOpen,                     20051024);
407
408
// 20060306
409
packet(SMSG_MAIL_RETURN,                   0x0274,   8, &MailRecv::processMailReturn,                   20060306);
410
411
// 20060424
412
if (packetVersion >= 20060424)
413
{
414
    packet(SMSG_MAP_ACCOUNT_ID,            0x0283,   6, &GameRecv::processMapAccountId,                 20060424);
415
    packet(SMSG_BEING_SPECIAL_EFFECT_NUM,  0x0284,  14, &BeingRecv::processBeingSpecialEffectNum,       20060424);
416
    packet(SMSG_NPC_CASH_SHOP_OPEN,        0x0287,  -1, &CashShopRecv::processCashShopOpen,             20060424);
417
    packet(SMSG_NPC_CASH_BUY_ACK,          0x0289,   8, &CashShopRecv::processCashShopBuyAck,           20060424);
418
    packet(SMSG_PLAYER_STATUS_CHANGE2,     0x028a,  18, &BeingRecv::processPlayerStatusChange2,         20060424);
419
    packet(SMSG_FORMAT_MESSAGE,            0x0291,   4, &ChatRecv::processFormatMessage,                20060424);
420
    packet(SMSG_BOSS_MAP_INFO,             0x0293,  70, &BeingRecv::processBossMapInfo,                 20060424);
421
    packet(SMSG_PLAYER_READ_BOOK,          0x0294,  10, &PlayerRecv::processPlayerReadBook,             20060424);
422
    packet(SMSG_PLAYER_ITEM_RENTAL_TIME,   0x0298,   8, &InventoryRecv::processPlayerItemRentalTime,    20060424);
423
    packet(SMSG_PLAYER_ITEM_RENTAL_EXPIRED, 0x0299,  6, &InventoryRecv::processPlayerItemRentalExpired, 20060424);
424
    packet(SMSG_MERCENARY_SKILLS,          0x029d,  -1, &MercenaryRecv::processMercenarySkills,         20060424);
425
    packet(SMSG_MERCENARY_UPDATE,          0x02a2,   8, &MercenaryRecv::processMercenaryUpdate,         20060424);
426
}
427
428
// 20061218
429
if (packetVersion >= 20061218)
430
{
431
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x029a,  27, &InventoryRecv::processPlayerInventoryAdd,      20061218);
432
}
433
434
// 20070227
435
if (packetVersion >= 20070227)
436
{
437
    packet(SMSG_NPC_CASH_BUY_ACK,          0x0289,  12, &CashShopRecv::processCashShopBuyAck,           20070227);
438
    packet(SMSG_QUEST_LIST_OBJECTIVES,     0x02b2,  -1, &QuestRecv::processAddQuestsObjectives,         20070227);
439
    packet(SMSG_QUEST_ADD,                 0x02b3, 107, &QuestRecv::processAddQuest,                    20070227);
440
    packet(SMSG_QUEST_REMOVE,              0x02b4,   6, &QuestRecv::processRemoveQuest,                 20070227);
441
    packet(SMSG_QUEST_UPDATE_OBJECTIVES,   0x02b5,  -1, &QuestRecv::processUpdateQuestsObjectives,      20070227);
442
    packet(SMSG_QUEST_ACTIVATE,            0x02b7,   7, &QuestRecv::processActivateQuest,               20070227);
443
    packet(SMSG_ITEM_DAMAGED,              0x02bb,   8, &InventoryRecv::processItemDamaged,             20070227);
444
    packet(SMSG_COLOR_MESSAGE,             0x02c1,  -1, &ChatRecv::processColorChat,                    20070227);
445
    packet(SMSG_INSTANCE_CREATE,           0x02cc,   4, &MapRecv::processInstanceCreate,                20070227);
446
    packet(SMSG_INSTANCE_DELETE,           0x02ce,  10, &MapRecv::processInstanceDelete,                20070227);
447
    packet(SMSG_PLAYER_ZC_CONFIG,          0x02d9,  10, &PlayerRecv::processPlayerZCConfig,             20070227);
448
    packet(SMSG_PLAYER_SHOW_EQUIP,         0x02da,   3, &PlayerRecv::processPlayerShowEquip,            20070227);
449
    packet(SMSG_BATTLE_CHAT_MESSAGE,       0x02dc,  -1, &ChatRecv::processBattleChatMessage,            20070227);
450
    packet(SMSG_BATTLE_EMBLEM,             0x02dd,  32, &BattleGroundRecv::processBattleEmblem,         20070227);
451
    packet(SMSG_BATTLE_UPDATE_SCORE,       0x02de,   6, &BattleGroundRecv::processBattleUpdateScore,    20070227);
452
    packet(SMSG_BATTLE_UPDATE_COORDS,      0x02df,  36, &BattleGroundRecv::processBattleUpdateCoords,   20070227);
453
    packet(SMSG_BATTLE_UPDATE_HP,          0x02e0,  34, &BattleGroundRecv::processBattleUpdateHp,       20070227);
454
}
455
456
packet(SMSG_PARTY_INVITATION_STATS,        0x02c9,   3, &PartyRecv::processPartyInvitationStats,        20070227);
457
458
// 20070711
459
packet(SMSG_PLAYER_SHORTCUTS,              0x07d9, 268, &PlayerRecv::processPlayerShortcuts1,           20070711);
460
461
// 20070821
462
packet(SMSG_PARTY_INVITE_RESPONSE,         0x02c5,  30, &PartyRecv::processPartyInviteResponse,         20070821);
463
packet(SMSG_PARTY_INVITED,                 0x02c6,  30, &PartyRecv::processPartyInvited,                20070821);
464
465
// 20071002
466
if (packetVersion >= 20071002)
467
{
468
    packet(SMSG_PLAYER_INVENTORY,          0x01ee,  -1, &InventoryRecv::processPlayerInventory,         20071002);
469
    packet(SMSG_PLAYER_CART_ITEMS,         0x01ef,  -1, &InventoryRecv::processPlayerCartItems,         20071002);
470
    packet(SMSG_PLAYER_STORAGE_ITEMS,      0x0295,  -1, &InventoryRecv::processPlayerStorage,           20071002);
471
    packet(SMSG_PLAYER_STORAGE_EQUIP,      0x0296,  -1, &InventoryRecv::processPlayerStorageEquip,      20071002);
472
    packet(SMSG_PLAYER_CART_EQUIP,         0x0297,  -1, &InventoryRecv::processPlayerCartEquip,         20071002);
473
    packet(SMSG_PARTY_ITEM_PICKUP,         0x02b8,  22, &PartyRecv::processPartyItemPickup,             20071002);
474
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x02d4,  29, &InventoryRecv::processPlayerInventoryAdd,      20071002);
475
}
476
477
// 20071023
478
packet(SMSG_INSTANCE_START,                0x02cb,  65, &MapRecv::processInstanceStart,                 20071023);
479
packet(SMSG_INSTANCE_INFO,                 0x02cd,  71, &MapRecv::processInstanceInfo,                  20071023);
480
481
// 20071106
482
if (packetVersion >= 20071106)
483
{
484
    packet(SMSG_BEING_FAKE_NAME,           0x0078,  55, &BeingRecv::processBeingFakeName,               20071106);
485
    packet(SMSG_BEING_SPAWN_OUTDATED,      0x007c,  42, nullptr,                                        20071106);
486
    packet(SMSG_BEING_MOVE,                0x022c,  65, &BeingRecv::processBeingMove,                   20071106);
487
    packet(SMSG_MERCENARY_INFO,            0x029b,  80, &MercenaryRecv::processMercenaryInfo,           20071106);
488
}
489
490
// 20071113
491
packet(SMSG_BEING_ACTION2,                 0x02e1,  33, &BeingRecv::processBeingAction2,                20071113);
492
493
// 20080102
494
if (packetVersion >= 20080102)
495
{
496
    packet(SMSG_PLAYER_EQUIPMENT,          0x02d0,  -1, &InventoryRecv::processPlayerEquipment,         20080102);
497
    packet(SMSG_PLAYER_STORAGE_EQUIP,      0x02d1,  -1, &InventoryRecv::processPlayerStorageEquip,      20080102);
498
    packet(SMSG_PLAYER_CART_EQUIP,         0x02d2,  -1, &InventoryRecv::processPlayerCartEquip,         20080102);
499
    packet(SMSG_PLAYER_INVENTORY,          0x02e8,  -1, &InventoryRecv::processPlayerInventory,         20080102);
500
    packet(SMSG_PLAYER_CART_ITEMS,         0x02e9,  -1, &InventoryRecv::processPlayerCartItems,         20080102);
501
    packet(SMSG_PLAYER_STORAGE_ITEMS,      0x02ea,  -1, &InventoryRecv::processPlayerStorage,           20080102);
502
    packet(SMSG_MAP_LOGIN_SUCCESS,         0x02eb,  13, &GameRecv::processMapLogin,                     20080102);
503
    packet(SMSG_BEING_MOVE,                0x02ec,  67, &BeingRecv::processBeingMove,                   20080102);
504
    packet(SMSG_BEING_SPAWN,               0x02ed,  59, &BeingRecv::processBeingSpawn,                  20080102);
505
    packet(SMSG_BEING_VISIBLE,             0x02ee,  60, &BeingRecv::processBeingVisible,                20080102);
506
    packet(SMSG_BEING_FONT,                0x02ef,   8, &BeingRecv::processBeingFont,                   20080102);
507
}
508
509
// 20080318
510
packet(SMSG_NPC_SHOW_PROGRESS_BAR,         0x02f0,  10, &NpcRecv::processNpcShowProgressBar,            20080318);
511
packet(SMSG_NPC_PROGRESS_BAR_ABORT,        0x02f2,   2, &NpcRecv::processProgressBarAbort,              20080318);
512
513
// 20080827 re
514
if (packetVersionRe >= 20080827)
515
{
516
    packet(SMSG_MVP_EXP,                   0x010b,   6, &ChatRecv::processMVPExp,                       20080827);
517
    packet(SMSG_HOMUNCULUS_INFO,           0x022e,  71, &HomunculusRecv::processHomunculusInfo1,        20080827);
518
    packet(SMSG_SKILL_CASTING,             0x013e,  24, &BeingRecv::processSkillCasting,                20080827);
519
}
520
521
// 20080827
522
if (packetVersion >= 20080827)
523
{
524
    packet(SMSG_BEING_SPAWN_OUTDATED,      0x007c,  44, nullptr,                                        20080827);
525
}
526
527
// 20081112
528
packet(SMSG_PLAYER_SKILL_COOLDOWN,         0x043d,   8, &SkillRecv::processSkillCoolDown,               20081112);
529
530
// 20081113
531
if (packetVersion >= 20081113)
532
{
533
    packet(SMSG_PLAYER_SKILL_COOLDOWN_LIST, 0x043e,  -1, &SkillRecv::processSkillCoolDownList,          20081113);
534
}
535
536
// 20081126
537
if (packetVersion >= 20081126)
538
{
539
    packet(SMSG_PET_STATUS,                0x01a2,  37, &PetRecv::processPetStatus,                     20081126);
540
}
541
542
// 20081210
543
packet(SMSG_AUTOSHADOW_SPELL_LIST,         0x0442,  -1, &PlayerRecv::processPlayerAutoShadowSpellList,  20081210);
544
545
// 20081217
546
packet(SMSG_BEING_MILLENIUM_SHIELD,        0x0440,  10, &BeingRecv::processBeingMilleniumShield,        20081217);
547
packet(SMSG_PLAYER_DELETE_SKILL,           0x0441,   4, &SkillRecv::processSkillDelete,                 20081217);
548
549
// 20090121
550
packet(SMSG_BEING_STATUS_CHANGE,           0x043f,  25, &BeingRecv::processBeingStatusChange,           20090121);
551
552
// 20090218
553
packet(SMSG_QUEST_NPC_EFFECT,              0x0446,  14, &QuestRecv::processNpcQuestEffect,              20090218);
554
555
// 20090401 re
556
if (packetVersionRe >= 20090401)
557
{
558
    packet(SMSG_MVP_EXP,                   0x010b,   6, &ChatRecv::processMVPExp,                       20090401);
559
}
560
561
// 20090406 main
562
if (packetVersionRe >= 20090406)
563
{
564
    packet(SMSG_SKILL_CASTING,             0x013e,  24, &BeingRecv::processSkillCasting,                20090406);
565
}
566
567
// all re
568
if (packets_re == true)
569
{
570
    packet(SMSG_PLAYER_SKILL_AUTO_SPELLS,  0x01cd,  30, &SkillRecv::processSkillAutoSpells1,            0);
571
}
572
573
// 20090406 main
574
if (packetVersionRe >= 20090406)
575
{
576
    packet(SMSG_PLAYER_SKILL_AUTO_SPELLS,  0x01cd,  30, &SkillRecv::processSkillAutoSpells1,            20090406);
577
}
578
579
// 20090603
580
packet(SMSG_PARTY_SETTINGS,                0x07d8,   8, &PartyRecv::processPartySettings,               20090603);
581
582
// 20090715
583
packet(SMSG_PLAYER_UPDATE_SKILL,           0x07e1,  15, &SkillRecv::processSkillUpdate,                 20090715);
584
585
// 20090805
586
packet(SMSG_FORMAT_MESSAGE_NUMBER,         0x07e2,   8, &ChatRecv::processFormatMessageNumber,          20090805);
587
588
// 20090818
589
packet(SMSG_FORMAT_MESSAGE_SKILL,          0x07e6,   8, &ChatRecv::processFormatMessageSkill,           20090818);
590
591
// 20090922
592
packet(SMSG_SKILL_ITEM_LIST_WINDOW,        0x07e3,   6, &SkillRecv::processSkillItemListWindow,         20090922);
593
packet(SMSG_CHAR_CAPTCHA_NOT_SUPPORTED,    0x07e9,   5, &CharServerRecv::processCharCaptchaNotSupported, 20090922);
594
595
// 20091027
596
packet(SMSG_PLAYER_GET_EXP,                0x07f6,  14, &PlayerRecv::processPlayerGetExp,               20091027);
597
598
if (packetVersion >= 20091103)
599
{
600
    packet(SMSG_BEING_MOVE,                0x07f7,  -1, &BeingRecv::processBeingMove,                   20091103);
601
    packet(SMSG_BEING_SPAWN,               0x07f8,  -1, &BeingRecv::processBeingSpawn,                  20091103);
602
    packet(SMSG_BEING_VISIBLE,             0x07f9,  -1, &BeingRecv::processBeingVisible,                20091103);
603
}
604
605
// 20091104
606
if (packetVersion >= 20091104)
607
{
608
    packet(SMSG_WHISPER,                   0x0097,  -1, &ChatRecv::processWhisper,                      20091104);
609
}
610
611
// 20091117
612
packet(SMSG_PLAYER_INVENTORY_REMOVE2,      0x07fa,   8, &InventoryRecv::processPlayerInventoryRemove2,  20091117);
613
614
// 20091124
615
if (packetVersion >= 20091124)
616
{
617
    packet(SMSG_SKILL_CASTING,             0x07fb,  25, &BeingRecv::processSkillCasting2,               20091124);
618
}
619
620
// 20091201
621
packet(SMSG_BATTLE_PLAY,                   0x07fe,  26, &BattleGroundRecv::processBattlePlay,           20091201);
622
623
// 20091222
624
packet(SMSG_BOOKING_REGISTER_ACK,          0x0803,   4, nullptr,                                        20091222);
625
packet(SMSG_BOOKING_SEARCH_ACK,            0x0805,  -1, nullptr,                                        20091222);
626
627
// 20091229
628
packet(SMSG_BOOKING_DELETE_ACK,            0x0807,   4, nullptr,                                        20091229);
629
packet(SMSG_BOOKING_INSERT_NOTIFY,         0x0809,  50, nullptr,                                        20091229);
630
packet(SMSG_BOOKING_UPDATE_NOTIFY,         0x080a,  18, nullptr,                                        20091229);
631
packet(SMSG_BOOKING_DELETE_NOTIFY,         0x080b,   6, nullptr,                                        20091229);
632
633
// 20100105
634
if (packetVersion >= 20100105)
635
{
636
    packet(SMSG_VENDING_ITEMS_LIST,        0x0800,  -1, &VendingRecv::processItemsList,                 20100105);
637
}
638
639
// 20100126
640
packet(SMSG_PLAYER_HP,                     0x080e,  14, &BeingRecv::processBeingHp,                     20100126);
641
642
// 20100223
643
packet(SMSG_TRADE_ITEM_ADD,                0x080f,  20, &TradeRecv::processTradeItemAdd,                20100223);
644
645
// 20100303
646
packet(SMSG_BUYINGSTORE_OPEN,              0x0810,   3, &BuyingStoreRecv::processBuyingStoreOpen,       20100303);
647
648
// 20100309
649
packet(SMSG_BUYINGSTORE_OWN_ITEMS,         0x0813,  -1, &BuyingStoreRecv::processBuyingStoreOwnItems,   20100309);
650
packet(SMSG_BUYINGSTORE_HIDE_BOARD,        0x0816,   6, &BuyingStoreRecv::processBuyingStoreHideBoard,  20100309);
651
packet(SMSG_BUYINGSTORE_ITEMS_LIST,        0x0818,  -1, &BuyingStoreRecv::processBuyingStoreItemsList,  20100309);
652
packet(SMSG_ELEMENTAL_INFO,                0x081d,  22, &ElementalRecv::processElementalInfo,           20100309);
653
packet(SMSG_ELEMENTAL_UPDATE_STATUS,       0x081e,   8, &ElementalRecv::processElementalUpdateStatus,   20100309);
654
655
// 20100420
656
packet(SMSG_BUYINGSTORE_CREATE_FAILED,     0x0812,   8, &BuyingStoreRecv::processBuyingStoreCreateFailed, 20100420);
657
packet(SMSG_BUYINGSTORE_SHOW_BOARD,        0x0814,  86, &BuyingStoreRecv::processBuyingStoreShowBoard,  20100420);
658
packet(SMSG_BUYINGSTORE_SELL_FAILED,       0x081a,   4, &BuyingStoreRecv::processBuyingStoreSellFailed, 20100420);
659
packet(SMSG_BUYINGSTORE_REPORT,            0x081b,  10, &BuyingStoreRecv::processBuyingStoreReport,     20100420);
660
packet(SMSG_BUYINGSTORE_DELETE_ITEM,       0x081c,  10, &BuyingStoreRecv::processBuyingStoreDeleteItem, 20100420);
661
packet(SMSG_BUYINGSTORE_SELLER_SELL_FAILED, 0x0824,   6, &BuyingStoreRecv::processBuyingStoreSellerSellFailed, 20100420);
662
663
// 20100601
664
packet(SMSG_SEARCHSTORE_SEARCH_ACK,        0x0836,   0, &SearchStoreRecv::processSearchAck,             20100601);
665
packet(SMSG_SEARCHSTORE_SEARCH_FAILED,     0x0837,   3, &SearchStoreRecv::processSearchFailed,          20100601);
666
667
// 20100608
668
if (packetVersion >= 20100608)
669
{
670
    packet(SMSG_SEARCHSTORE_OPEN,          0x083a,   4, &SearchStoreRecv::processSearchOpen,            20100608);
671
    packet(SMSG_SEARCHSTORE_CLICK_ACK,     0x083d,   6, &SearchStoreRecv::processSearchClickAck,        20100608);
672
}
673
674
// 20100629
675
if (packetVersion >= 20100629)
676
{
677
    packet(SMSG_PLAYER_EQUIPMENT,          0x02d0,  -1, &InventoryRecv::processPlayerEquipment,         20100629);
678
    packet(SMSG_PLAYER_STORAGE_EQUIP,      0x02d1,  -1, &InventoryRecv::processPlayerStorageEquip,      20100629);
679
    packet(SMSG_PLAYER_CART_EQUIP,         0x02d2,  -1, &InventoryRecv::processPlayerCartEquip,         20100629);
680
    packet(SMSG_PLAYER_EQUIP,              0x00aa,   9, &InventoryRecv::processPlayerEquip,             20100629);
681
}
682
683
// 20100701
684
if (packetVersion >= 20100701)
685
{
686
    packet(SMSG_SEARCHSTORE_OPEN,          0x083a,   5, &SearchStoreRecv::processSearchOpen,            20100701);
687
}
688
689
// 20100803
690
packet(SMSG_GUILD_EXPULSION,               0x0839,  66, &GuildRecv::processGuildExpulsion,              20100803);
691
packet(SMSG_GUILD_EXPULSION_LIST,          0x0163,  -1, &GuildRecv::processGuildExpulsionList2,         20100803);
692
693
// 20101005 main
694
if (packetVersionMain >= 20101005)
695
{
696
    packet(SMSG_HOMUNCULUS_INFO,           0x022e,  71, &HomunculusRecv::processHomunculusInfo1,        20101005);
697
}
698
699
// 20101123 main
700
if (packetVersionMain >= 20101123)
701
{
702
    packet(SMSG_NPC_CASH_BUY,              0x0849,  16, &CashShopRecv::processCashShopBuy,              20101123);
703
}
704
705
// 20101124
706
if (packetVersion >= 20101124)
707
{
708
    packet(SMSG_BEING_MOVE,                0x0856,  -1, &BeingRecv::processBeingMove,                   20101124);
709
    packet(SMSG_BEING_VISIBLE,             0x0857,  -1, &BeingRecv::processBeingVisible,                20101124);
710
    packet(SMSG_BEING_SPAWN,               0x0858,  -1, &BeingRecv::processBeingSpawn,                  20101124);
711
    packet(SMSG_BEING_VIEW_EQUIPMENT,      0x0859,  -1, &BeingRecv::processBeingViewEquipment,          20101124);
712
}
713
714
// 20110718
715
if (packetVersion >= 20110718)
716
{
717
    packet(SMSG_SKILL_ENTRY,               0x08c7,  -1, &BeingRecv::processSkillEntry,                  20110718);
718
}
719
720
// 20111005
721
packet(SMSG_SKILL_SNAP,                    0x08d2,  10, &BeingRecv::processBeingSlide,                  20111005);
722
723
// 20111010
724
packet(CMSG_NAVIGATE_TO,                   0x08e2,  27, &BeingRecv::processNavigateTo,                  20111010);
725
726
// 20120000
727
packet(SMSG_LOGIN_ERROR2,                  0x083e,  26, &LoginRecv::processLoginError2,                 20120000);
728
729
// 20120221
730
if (packetVersion >= 20120221)
731
{
732
    packet(SMSG_BEING_VISIBLE,             0x0915,  -1, &BeingRecv::processBeingVisible,                20120221);
733
    packet(SMSG_BEING_MOVE,                0x0914,  -1, &BeingRecv::processBeingMove,                   20120221);
734
    packet(SMSG_BEING_SPAWN,               0x090f,  -1, &BeingRecv::processBeingSpawn,                  20120221);
735
}
736
737
// 20120221 re
738
if (packetVersionRe >= 20120221)
739
{
740
    packet(SMSG_MERGE_ITEM,                0x096d,  -1, &InventoryRecv::processMergeItem,               20120221);
741
    packet(SMSG_ACK_MERGE_ITEMS,           0x096f,   7, &InventoryRecv::processMergeItemResponse,       20120221);
742
}
743
744
// 20120314 main
745
if (packetVersionMain >= 20120314)
746
{
747
    packet(SMSG_MERGE_ITEM,                0x096d,  -1, &InventoryRecv::processMergeItem,               20120314);
748
    packet(SMSG_ACK_MERGE_ITEMS,           0x096f,   7, &InventoryRecv::processMergeItemResponse,       20120314);
749
}
750
751
// 20120328 re
752
if (packetVersionRe >= 20120328)
753
{
754
    packet(SMSG_NPC_CASH_BUY,              0x0849,  16, &CashShopRecv::processCashShopBuy,              20120328);
755
}
756
757
// 20120410
758
packet(SMSG_BEING_CHARM,                   0x08cf,  10, &BeingRecv::processBeingCharm,                  20120410);
759
packet(SMSG_RECRUIT_REGISTER_ACK,          0x08e6,   4, nullptr,                                        20120410);
760
packet(SMSG_RECRUIT_SEARCH_ACK,            0x08e8,  -1, nullptr,                                        20120410);
761
packet(SMSG_RECRUIT_DELETE_ACK,            0x08ea,   4, nullptr,                                        20120410);
762
packet(SMSG_RECRUIT_INSERT_NOTIFY,         0x08ec,  73, nullptr,                                        20120410);
763
packet(SMSG_RECRUIT_UPDATE_NOTIFY,         0x08ed,  43, nullptr,                                        20120410);
764
packet(SMSG_RECRUIT_DELETE_NOTIFY,         0x08ee,   6, nullptr,                                        20120410);
765
packet(SMSG_BOOKING_VOLUNTEER_INFO,        0x08f2,  36, nullptr,                                        20120410);
766
packet(SMSG_BOOKING_REFUSE_VOLUNTEER,      0x08fa,   6, nullptr,                                        20120410);
767
packet(SMSG_PLAYER_FAVORITE_ITEM,          0x0908,   5, &InventoryRecv::processFavoriteItem,            20120410);
768
packet(SMSG_MONSTER_HP,                    0x0977,  14, &BeingRecv::processMonsterHp,                   20120410);
769
770
// 20120419
771
if (packetVersion >= 20120419)
772
{
773
    packet(SMSG_CHAR_CHARACTERS,           0x099d,  -1, &CharServerRecv::processCharCharacters,         20120419);
774
}
775
776
// 20120618
777
if (packetVersion >= 20120618)
778
{
779
    packet(SMSG_BEING_STATUS_CHANGE,       0x0983,  29, &BeingRecv::processBeingStatusChange,           20120618);
780
}
781
782
// 20120604
783
if (packetVersion >= 20120604)
784
{
785
    packet(SMSG_PLAYER_SKILL_COOLDOWN_LIST, 0x0985,  -1, &SkillRecv::processSkillCoolDownList,           20120604);
786
}
787
788
789
// 20120716
790
if (packetVersion >= 20120716)
791
{
792
    packet(SMSG_CLAN_ONLINE_COUNT,         0x0988,   6, &ClanRecv::processClanOnlineCount,              20120716);
793
    packet(SMSG_CLAN_CHAT,                 0x098e,  -1, &ClanRecv::processClanChat,                     20120716);
794
}
795
796
// 20120925
797
if (packetVersion >= 20120925)
798
{
799
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x0990,  31, &InventoryRecv::processPlayerInventoryAdd,      20120925);
800
    packet(SMSG_PLAYER_INVENTORY,          0x0991,  -1, &InventoryRecv::processPlayerInventory,         20120925);
801
    packet(SMSG_PLAYER_EQUIPMENT,          0x0992,  -1, &InventoryRecv::processPlayerEquipment,         20120925);
802
    packet(SMSG_PLAYER_CART_ITEMS,         0x0993,  -1, &InventoryRecv::processPlayerCartItems,         20120925);
803
    packet(SMSG_PLAYER_CART_EQUIP,         0x0994,  -1, &InventoryRecv::processPlayerCartEquip,         20120925);
804
    packet(SMSG_PLAYER_STORAGE_ITEMS,      0x0995,  -1, &InventoryRecv::processPlayerStorage,           20120925);
805
    packet(SMSG_PLAYER_STORAGE_EQUIP,      0x0996,  -1, &InventoryRecv::processPlayerStorageEquip,      20120925);
806
    packet(SMSG_BEING_VIEW_EQUIPMENT,      0x0997,  -1, &BeingRecv::processBeingViewEquipment,          20120925);
807
    packet(SMSG_PLAYER_EQUIP,              0x0999,  11, &InventoryRecv::processPlayerEquip,             20120925);
808
    packet(SMSG_PLAYER_UNEQUIP,            0x099a,   9, &InventoryRecv::processPlayerUnEquip,           20120925);
809
}
810
811
// 20130821
812
packet(SMSG_SHOW_PROGRESS_BAR_FREE,        0x09d1,  14, &NpcRecv::processShowProgressBarFree,           20130821);
813
814
// 20121010
815
packet(SMSG_MAP_TYPE_PROPERTY2,            0x099b,   8, &BeingRecv::processMapTypeProperty,             20121010);
816
817
// 20121212
818
if (packetVersion >= 20121212)
819
{
820
    packet(SMSG_SKILL_ENTRY,               0x099f,  -1, &BeingRecv::processSkillEntry,                  20121212);
821
}
822
823
// 20130000
824
if (packetVersion >= 20130000)
825
{
826
    packet(SMSG_ITEM_DROPPED,              0x084b,  19, &ItemRecv::processItemDropped,                  20130000);
827
}
828
829
// 20130529 re
830
if (packetVersionRe >= 20130529)
831
{
832
    packet(SMSG_RANKS_LIST,                0x097d, 288, &BeingRecv::processRanksList1,                  20130529);
833
}
834
835
// 20130605 main
836
if (packetVersionMain >= 20130605)
837
{
838
    packet(SMSG_RANKS_LIST,                0x097d, 288, &BeingRecv::processRanksList1,                  20130605);
839
}
840
841
// 20130605 re
842
if (packetVersionRe >= 20130605)
843
{
844
    packet(SMSG_CLAN_INFO,                 0x098a,  -1, &ClanRecv::processClanInfo,                     20130605);
845
}
846
847
// 20130626 main
848
if (packetVersionMain >= 20130626)
849
{
850
    packet(SMSG_CLAN_INFO,                 0x098a,  -1, &ClanRecv::processClanInfo,                     20130626);
851
}
852
853
// 20130710
854
packet(SMSG_PLAYER_RANK_POINTS,            0x097e,  12, &PlayerRecv::processPlayerRankPoints,           20130710);
855
856
// 20130724
857
packet(SMSG_BANK_STATUS,                   0x09a6,  12, &BankRecv::processBankStatus,                   20130724);
858
packet(SMSG_BANK_DEPOSIT,                  0x09a8,  16, &BankRecv::processBankDeposit,                  20130724);
859
packet(SMSG_BANK_WITHDRAW,                 0x09aa,  16, &BankRecv::processBankWithdraw,                 20130724);
860
861
// 20130731
862
if (packetVersion >= 20130731)
863
{
864
    packet(SMSG_SKILL_ENTRY,               0x09ca,  -1, &BeingRecv::processSkillEntry,                  20130731);
865
}
866
867
// 20131218
868
packet(SMSG_MAIL2_MAIL_LIST_PAGE,          0x09f0,  -1, &Mail2Recv::processMailListPage,                20131218);
869
packet(SMSG_MAIL2_MAIL_DELETE,             0x09f6,  11, &Mail2Recv::processMailDelete,                  20131218);
870
871
// 20131223
872
if (packetVersion >= 20131223)
873
{
874
    packet(SMSG_BEING_ACTION2,             0x08c8,  34, &BeingRecv::processBeingAction2,                20131223);
875
    packet(SMSG_NPC_MARKET_OPEN,           0x09d5,  -1, &MarketRecv::processMarketOpen,                 20131223);
876
    packet(SMSG_NPC_MARKET_BUY_ACK,        0x09d7,  -1, &MarketRecv::processMarketBuyAck,               20131223);
877
    packet(SMSG_BEING_MOVE,                0x09db,  -1, &BeingRecv::processBeingMove,                   20131223);
878
    packet(SMSG_BEING_SPAWN,               0x09dc,  -1, &BeingRecv::processBeingSpawn,                  20131223);
879
    packet(SMSG_BEING_VISIBLE,             0x09dd,  -1, &BeingRecv::processBeingVisible,                20131223);
880
    packet(SMSG_WHISPER_RESPONSE,          0x09df,   7, &ChatRecv::processWhisperResponse,              20131223);
881
    packet(SMSG_SKILL_NO_DAMAGE,           0x09cb,  17, &Ea::BeingRecv::processSkillNoDamage,           20131223);
882
    packet(SMSG_CLAN_LEAVE,                0x0989,   2, &ClanRecv::processClanLeave,                    20131223);
883
}
884
885
// 20131230
886
packet(SMSG_MAIL2_SEND_RESULT,             0x09ed,   3, &Mail2Recv::processSendResult,                  20131230);
887
888
// 20131230
889
if (packetVersion >= 20131230)
890
{
891
    packet(SMSG_HOMUNCULUS_INFO,           0x09f7,  75, &HomunculusRecv::processHomunculusInfo2,        20131230);
892
}
893
894
// 20140122
895
packet(SMSG_PET_EVOLUTION_RESULT,          0x09fc,   6, &PetRecv::processPetEvolution,                  20140122);
896
897
// 20140409
898
packet(SMSG_MAIL2_REQUEST_MONEY,           0x09f2,  12, &Mail2Recv::processRequestMoney,                20140409);
899
packet(SMSG_MAIL2_REQUEST_ITEMS,           0x09f4,  12, &Mail2Recv::processRequestItems,                20140409);
900
901
// 20140115
902
packet(SMSG_MAIL2_READ_MAIL,               0x09eb,  -1, &Mail2Recv::processReadMail,                    20140115);
903
904
// 20140416
905
packet(SMSG_MAIL2_OPEN_NEW_MAIL_WINDOW,    0x0a12,  27, &Mail2Recv::processOpenNewMailWindow,           20140416);
906
907
// 20140521
908
packet(SMSG_MAIL2_REMOVE_ITEM_RESULT,      0x0a07,   9, &Mail2Recv::processRemoveItemResult,            20140521);
909
packet(SMSG_MAIL2_CHECK_NAME_RESULT,       0x0a14,  10, &Mail2Recv::processCheckNameResult,             20140521);
910
911
// 20140613
912
if (packetVersion >= 20140613)
913
{
914
    packet(SMSG_BATTLE_UPDATE_HP,          0x0a0e,  14, &BattleGroundRecv::processBattleUpdateHp,       20140613);
915
}
916
917
// 20140903 re
918
if (packetVersionRe >= 20140903)
919
{
920
    packet(SMSG_ROULETTE_CLOSE,            0x0a1e,   3, &RouletteRecv::processRouletteClose,            20140903);
921
}
922
923
// 20141008 main
924
if (packetVersionMain >= 20141008)
925
{
926
    packet(SMSG_ROULETTE_CLOSE,            0x0a1e,   3, &RouletteRecv::processRouletteClose,            20141008);
927
}
928
929
// 20141015 re
930
if (packetVersionRe >= 20141015)
931
{
932
    packet(SMSG_PLAYER_SHORTCUTS,          0x0a00, 269, &PlayerRecv::processPlayerShortcuts2,           20141015);
933
}
934
935
// 20141016
936
packet(SMSG_ROULETTE_OPEN_ACK,             0x0a1a,  23, &RouletteRecv::processRouletteOpenAck,          20141016);
937
packet(SMSG_ROULETTE_INFO_ACK_TYPE,        0x0a1c,  -1, &RouletteRecv::processRouletteInfoAckType,      20141016);
938
packet(SMSG_ROULETTE_GENERATE_ACK_TYPE,    0x0a20,  21, &RouletteRecv::processRouletteGenerateAckType,  20141016);
939
packet(SMSG_ROULETTE_RECV_ITEM_ACK,        0x0a22,   5, &RouletteRecv::processRouletteItemAck,          20141016);
940
941
// 20141016
942
if (packetVersion >= 20141016)
943
{
944
    packet(SMSG_VENDING_REPORT,            0x09e5,  18, &VendingRecv::processReport,                    20141016);
945
    packet(SMSG_BUYINGSTORE_REPORT,        0x09e6,  22, &BuyingStoreRecv::processBuyingStoreReport,     20141016);
946
    packet(SMSG_PLAYER_SET_TITLE_ACK,      0x0a2f,   7, &PlayerRecv::processSetTitleAck,                20141016);
947
}
948
949
// 20141022 main
950
if (packetVersionMain >= 20141022)
951
{
952
    packet(SMSG_PLAYER_SHORTCUTS,          0x0a00, 269, &PlayerRecv::processPlayerShortcuts2,           20141022);
953
}
954
955
// 20141022
956
if (packetVersion >= 20141022)
957
{
958
    packet(SMSG_QUEST_LIST,                0x097a,  -1, &QuestRecv::processAddQuests,                   20141022);
959
    packet(SMSG_MAP_LOGIN_SUCCESS,         0x0a18,  14, &GameRecv::processMapLogin,                     20141022);
960
    packet(SMSG_VENDING_OPEN_STATUS,       0x0a28,   3, &VendingRecv::processOpenStatus,                20141022);
961
}
962
963
// 20141112
964
packet(SMSG_MAIL2_ICON,                    0x09e7,   3, &Mail2Recv::processMailIcon,                    20141112);
965
966
// 20141119
967
packet(SMSG_MAIL2_ADD_ITEM_RESULT,         0x0a05,  53, &Mail2Recv::processAddItemResult,               20141119);
968
969
// 20150225 re
970
if (packetVersionRe >= 20141126)
971
{
972
    packet(SMSG_ACHIEVEMENT_LIST,          0x0a23,  -1, &AchievementRecv::processAchievementList,       20141126);
973
    packet(SMSG_ACHIEVEMENT_UPDATE,        0x0a24,  66, &AchievementRecv::processAchievementUpdate,     20141126);
974
    packet(SMSG_ACHIEVEMENT_GET_REWARD,    0x0a26,   6, &AchievementRecv::processAchievementGetReward,  20141126);
975
    packet(SMSG_PLAYER_GUILD_PARTY_INFO,   0x0a30, 106, &BeingRecv::processPlayerGuilPartyInfo2,        20141126);
976
}
977
978
// 0
979
// evol packets
980
if (serverVersion > 0)
981
{
982
    packet2(SMSG_NPC_COMMAND,              0x0b00,  16, &Ea::NpcRecv::processNpcCommand,                0);
983
    packet2(SMSG_BEING_NAME_RESPONSE2,     0x0b01,  -1, &BeingRecv::processNameResponse2,               0);
984
    packet2(SMSG_MAP_MASK,                 0x0b02,  10, &Ea::PlayerRecv::processMapMask,                0);
985
    packet2(SMSG_MOB_INFO,                 0x0b03,  -1, &BeingRecv::processMobInfo,                     0);
986
    packet2(SMSG_BEING_MOVE3,              0x0b04,  -1, &Ea::BeingRecv::processBeingMove3,              0);
987
    packet2(SMSG_MAP_MUSIC,                0x0b05,  -1, &Ea::PlayerRecv::processMapMusic,               0);
988
    packet2(SMSG_NPC_CHANGETITLE,          0x0b06,  -1, &Ea::NpcRecv::processChangeTitle,               0);
989
    packet2(SMSG_CHAT_JOIN_CHANNEL,        0x0b08,  27, &ChatRecv::processJoinChannel,                  0);
990
    packet2(SMSG_BEING_ATTRS,              0x0b0a,  -1, &BeingRecv::processBeingAttrs,                  0);
991
    packet2(SMSG_NPC_AREA,                 0x0b0b,  -1, &NpcRecv::processArea,                          0);
992
    packet2(SMSG_ONLINE_LIST,              0x0b10,  -1, &PlayerRecv::processOnlineList,                 0);
993
    packet2(SMSG_PLAYER_CLIENT_COMMAND,    0x0b16,  -1, &Ea::PlayerRecv::processPlayerClientCommand,    0);
994
    packet2(SMSG_BEING_CHANGE_LOOKS_CARDS, 0x0b17,  19, &BeingRecv::processBeingChangeLookCards,        0);
995
    packet2(SMSG_ITEM_VISIBLE2,            0x0b18,  28, &ItemRecv::processItemVisible2,                 0);
996
    packet2(SMSG_ITEM_DROPPED2,            0x0b19,  28, &ItemRecv::processItemDropped2,                 0);
997
    packet2(SMSG_BATTLE_EMBLEM2,           0x0b1a,  34, &BattleGroundRecv::processBattleEmblem2,        0);
998
    packet2(SMSG_MAP_SET_TILES_TYPE,       0x0b1b,  34, &Ea::MapRecv::processSetTilesType,              0);
999
    packet2(SMSG_NPC_SKIN,                 0x0b1c,  -1, &NpcRecv::processNpcSkin,                       0);
1000
    packet2(SMSG_PLAYER_KILLED_BY,         0x0b1d,   6, &PlayerRecv::processKilledBy,                   0);
1001
    packet2(SMSG_SKILL_CASTING2,           0x0b1e,  -1, &BeingRecv::processSkillCastingEvol,            0);
1002
    packet2(SMSG_PLAYER_ADD_SKILL2,        0x0b1f,  -1, &SkillRecv::processSkillAdd2,                   0);
1003
    packet2(SMSG_PLAYER_UPDATE_SKILL2,     0x0b20,  -1, &SkillRecv::processSkillUpdate2,                0);
1004
    packet2(SMSG_WALK_ERROR,               0x0b21,  10, &PlayerRecv::processWalkError,                  0);
1005
    packet2(SMSG_HOMUNCULUS_EXP,           0x0b22,  10, &HomunculusRecv::processHomunculusExp,          0);
1006
    packet2(SMSG_QUEST_LIST2,              0x0b23,  -1, &QuestRecv::processAddQuests2,                  0);
1007
    packet2(SMSG_QUEST_ADD2,               0x0b24,  23, &QuestRecv::processAddQuest2,                   0);
1008
    packet2(SMSG_PLAYER_ATTRS,             0x0b25,  -1, &PlayerRecv::processPlayerAttrs,                0);
1009
1010
    // char server
1011
    packet2(SMSG_CHAR_PASSWORD_RESPONSE,   0x0062,   3, &LoginRecv::processCharPasswordResponse,        0);
1012
}
1013
1014
// 20150225 main
1015
if (packetVersionMain >= 20150225)
1016
{
1017
    packet(SMSG_ACHIEVEMENT_LIST,          0x0a23,  -1, &AchievementRecv::processAchievementList,       20150225);
1018
    packet(SMSG_ACHIEVEMENT_UPDATE,        0x0a24,  66, &AchievementRecv::processAchievementUpdate,     20150225);
1019
    packet(SMSG_ACHIEVEMENT_GET_REWARD,    0x0a26,   6, &AchievementRecv::processAchievementGetReward,  20150225);
1020
    packet(SMSG_PLAYER_GUILD_PARTY_INFO,   0x0a30, 106, &BeingRecv::processPlayerGuilPartyInfo2,        20150225);
1021
}
1022
1023
// 20150226
1024
if (packetVersion >= 20150226)
1025
{
1026
    packet(SMSG_VENDING_OPEN,              0x0136,  -1, &VendingRecv::processOpen,                      20150226);
1027
    packet(SMSG_VENDING_ITEMS_LIST,        0x0800,  -1, &VendingRecv::processItemsList,                 20150226);
1028
    packet(SMSG_TRADE_ITEM_ADD,            0x0a09,  45, &TradeRecv::processTradeItemAdd,                20150226);
1029
    packet(SMSG_PLAYER_STORAGE_ADD,        0x0a0a,  47, &InventoryRecv::processPlayerStorageAdd,        20150226);
1030
    packet(SMSG_PLAYER_CART_ADD,           0x0a0b,  47, &InventoryRecv::processPlayerCartAdd,           20150226);
1031
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x0a0c,  56, &InventoryRecv::processPlayerInventoryAdd,      20150226);
1032
    packet(SMSG_PLAYER_EQUIPMENT,          0x0a0d,  -1, &InventoryRecv::processPlayerEquipment,         20150226);
1033
    packet(SMSG_PLAYER_CART_EQUIP,         0x0a0f,  -1, &InventoryRecv::processPlayerCartEquip,         20150226);
1034
    packet(SMSG_PLAYER_STORAGE_EQUIP,      0x0a10,  -1, &InventoryRecv::processPlayerStorageEquip,      20150226);
1035
    packet(SMSG_BEING_VIEW_EQUIPMENT,      0x0a2d,  -1, &BeingRecv::processBeingViewEquipment,          20150226);
1036
}
1037
1038
// 20150226
1039
if (packetVersion >= 20150226)
1040
{
1041
    packet(SMSG_SEARCHSTORE_SEARCH_ACK,    0x0836,   0, &SearchStoreRecv::processSearchAck,             20150226);
1042
}
1043
1044
// 20150429 ret
1045
if (packetVersionRe >= 20150429)
1046
{
1047
    packet(SMSG_BEING_HAT_EFFECTS,         0x0a3b,  -1, &BeingRecv::processBeingHatEffects,             20150429);
1048
}
1049
1050
// 20150507 main
1051
if (packetVersionMain >= 20150507)
1052
{
1053
    packet(SMSG_BEING_HAT_EFFECTS,         0x0a3b,  -1, &BeingRecv::processBeingHatEffects,             20150507);
1054
}
1055
1056
// 20150513
1057
if (packetVersion >= 20150513)
1058
{
1059
    packet(SMSG_DRESS_ROOM_OPEN,           0x0a02,   4, &PlayerRecv::processDressRoomOpen,              20150513);
1060
    packet(SMSG_BEING_VISIBLE,             0x09ff,  -1, &BeingRecv::processBeingVisible,                20150513);
1061
    packet(SMSG_BEING_SPAWN,               0x09fe,  -1, &BeingRecv::processBeingSpawn,                  20150513);
1062
    packet(SMSG_BEING_MOVE,                0x09fd,  -1, &BeingRecv::processBeingMove,                   20150513);
1063
    packet(SMSG_PLAYER_HEAL,               0x0a27,   8, &PlayerRecv::processPlayerHeal,                 20150513);
1064
    packet(SMSG_QUEST_LIST,                0x09f8,  -1, &QuestRecv::processAddQuests,                   20150513);
1065
    packet(SMSG_QUEST_ADD,                 0x09f9, 143, &QuestRecv::processAddQuest,                    20150513);
1066
    packet(SMSG_QUEST_UPDATE_OBJECTIVES,   0x09fa,  -1, &QuestRecv::processUpdateQuestsObjectives,      20150513);
1067
    packet(SMSG_QUEST_NOTIFY_OBJECTIVES,   0x08fe,  -1, &QuestRecv::processUpdateQuestsObjectives2,     20150513);
1068
}
1069
1070
// 20160525
1071
if (packetVersion >= 20160525)
1072
{
1073
    packet(SMSG_CAMERA_INFO,               0x0a78,  15, &MapRecv::processCameraInfo,                    20160525);
1074
}
1075
1076
// 20150805
1077
if (packetVersion >= 20150805)
1078
{
1079
    packet(SMSG_SELECT_CART,               0x097f,  -1, &InventoryRecv::processSelectCart,              20150805);
1080
}
1081
1082
// 20151104
1083
if (packetVersion >= 20151104)
1084
{
1085
    packet(CMSG_PLAYER_SELECT_STYLE_ACK,   0x0a47,   3, &PlayerRecv::processSelectStyleAck,             20151104);
1086
}
1087
1088
// 20151118 re
1089
if (packetVersionRe >= 20151118)
1090
{
1091
    packet(SMSG_ENCHANT_EQUIPMENT,         0x0a3f,   9, &InventoryRecv::processEnchantEquipment,        20151118);
1092
}
1093
1094
// 20151223
1095
if (packetVersion >= 20151223)
1096
{
1097
    packet(SMSG_SKILL_SCALE,               0x0a41,  18, &SkillRecv::processSkillScale,                  20151223);
1098
}
1099
1100
// 20160330
1101
if (packetVersion >= 20160330)
1102
{
1103
    packet(SMSG_MAP_LOGIN_SUCCESS,         0x02eb,  13, &GameRecv::processMapLogin,                     20160330);
1104
    packet(SMSG_FORMAT_MESSAGE_STRING_COLOR, 0x0a6f, -1, &ChatRecv::processFormatMessageStringColor,    20160330);
1105
}
1106
1107
// 20160622
1108
if (packetVersion >= 20160622)
1109
{
1110
    packet(SMSG_GUILD_BASIC_INFO,          0x0a84,  94, &GuildRecv::processGuildBasicInfo,              20160622);
1111
}
1112
1113
// 20160831 amin
1114
if (packetVersionMain >= 20160831)
1115
{
1116
    packet(SMSG_ENCHANT_EQUIPMENT,         0x0a3f,   9, &InventoryRecv::processEnchantEquipment,        20160831);
1117
}
1118
1119
// 20160921
1120
if (packetVersion >= 20160921)
1121
{
1122
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x0a37,  59, &InventoryRecv::processPlayerInventoryAdd,      20160921);
1123
    packet(SMSG_VENDING_ITEMS_LIST,        0x0800,  -1, &VendingRecv::processItemsList,                 20160921);
1124
}
1125
1126
// 20160921 re
1127
if (packetVersionRe >= 20160921)
1128
{
1129
    packet(SMSG_GUILD_EXPULSION2,          0x0a82,  46, &GuildRecv::processGuildExpulsion2,             20160921);
1130
    packet(SMSG_GUILD_LEAVE2,              0x0a83,  46, &GuildRecv::processGuildLeave2,                 20160921);
1131
    packet(SMSG_GUILD_EXPULSION_LIST,      0x0a87,  -1, &GuildRecv::processGuildExpulsionList3,         20160921);
1132
}
1133
1134
// 20161019 main
1135
if (packetVersionMain >= 20161019)
1136
{
1137
    packet(SMSG_GUILD_EXPULSION2,          0x0a82,  46, &GuildRecv::processGuildExpulsion2,             20161019);
1138
    packet(SMSG_GUILD_LEAVE2,              0x0a83,  46, &GuildRecv::processGuildLeave2,                 20161019);
1139
    packet(SMSG_GUILD_EXPULSION_LIST,      0x0a87,  -1, &GuildRecv::processGuildExpulsionList3,         20161019);
1140
}
1141
1142
// 20161026
1143
if (packetVersion >= 20161026)
1144
{
1145
    packet(SMSG_GUILD_MEMBER_LIST,         0x0aa5,  -1, &GuildRecv::processGuildMemberList,             20161026);
1146
}
1147
1148
// 20161109 re
1149
if (packetVersionRe >= 20161109)
1150
{
1151
    packet(SMSG_REFINE_ADD_ITEM,           0x0aa2,  -1, &RefineRecv::processRefineAddItem,              20161109);
1152
}
1153
1154
// 20161130 main
1155
if (packetVersionMain >= 20161130)
1156
{
1157
    packet(SMSG_REFINE_WINDOW_OPEN,        0x0aa0,   2, &RefineRecv::processRefineOpen,                 20161130);
1158
    packet(SMSG_REFINE_ADD_ITEM,           0x0aa2,  -1, &RefineRecv::processRefineAddItem,              20161130);
1159
}
1160
1161
// 20161130 re
1162
if (packetVersionRe >= 20161130)
1163
{
1164
    packet(SMSG_ITEM_MOVE_FAILED,          0x0aa7,   6, &InventoryRecv::processItemMoveFailed,          20161130);
1165
}
1166
1167
// 20161214 main
1168
if (packetVersionMain >= 20161214)
1169
{
1170
    packet(SMSG_ITEM_MOVE_FAILED,          0x0aa7,   6, &InventoryRecv::processItemMoveFailed,          20161214);
1171
}
1172
1173
// 20170315
1174
if (packetVersion >= 20170315)
1175
{
1176
    packet(SMSG_LOGIN_DATA,                0x0ac4,  -1, &LoginRecv::processLoginData,                   20170315);
1177
}
1178
1179
// 20160316
1180
if (packetVersion >= 20160316)
1181
{
1182
    packet(SMSG_MAIL2_CHECK_NAME_RESULT,   0x0a51,  34, &Mail2Recv::processCheckNameResult,             20160316);
1183
}
1184
1185
// 20160601
1186
if (packetVersion >= 20160601)
1187
{
1188
    packet(SMSG_MAIL2_MAIL_LIST_PAGE,      0x0a7d,  -1, &Mail2Recv::processMailListPage,                20160601);
1189
}
1190
1191
// 20170329
1192
if (packetVersion >= 20170329)
1193
{
1194
    packet(SMSG_CHAR_MAP_INFO,             0x0ac5, 156, &CharServerRecv::processCharMapInfo,            20170329);
1195
}
1196
1197
// 20170419
1198
if (packetVersion >= 20170419)
1199
{
1200
    packet(SMSG_MAIL2_MAIL_LIST_PAGE,      0x0ac2,  -1, &Mail2Recv::processMailListPage,                20170419);
1201
}
1202
1203
// 20170419 re
1204
if (packetVersionRe >= 20170419)
1205
{
1206
    packet(SMSG_PARTY_MEMBER_JOB_LEVEL,    0x0abd,  10, &PartyRecv::processPartyMemberJobLevel,         20170419);
1207
}
1208
1209
// 20170502
1210
if (packetVersion >= 20170502)
1211
{
1212
    packet(SMSG_PARTY_MEMBER_INFO,         0x0a43,  85, &PartyRecv::processPartyMemberInfo,             20170502);
1213
    packet(SMSG_PARTY_INFO,                0x0a44,  -1, &PartyRecv::processPartyInfo,                   20170502);
1214
}
1215
1216
// 20170502 main
1217
if (packetVersionMain >= 20170502)
1218
{
1219
    packet(SMSG_PARTY_MEMBER_JOB_LEVEL,    0x0abd,  10, &PartyRecv::processPartyMemberJobLevel,         20170502);
1220
}
1221
1222
// 20170502 re
1223
if (packetVersionRe >= 20170502)
1224
{
1225
    packet(SMSG_PARTY_MEMBER_INFO,         0x0a43,  85, &PartyRecv::processPartyMemberInfo,             20170502);
1226
    packet(SMSG_PARTY_INFO,                0x0a44,  -1, &PartyRecv::processPartyInfo,                   20170502);
1227
    packet(SMSG_PARTY_MEMBER_DEAD,         0x0ab2,   7, &PartyRecv::processPartyMemberDead,             20170502);
1228
}
1229
1230
// 20170524 main
1231
if (packetVersionMain >= 20170524)
1232
{
1233
    packet(SMSG_PARTY_MEMBER_INFO,         0x0a43,  85, &PartyRecv::processPartyMemberInfo,             20170524);
1234
    packet(SMSG_PARTY_INFO,                0x0a44,  -1, &PartyRecv::processPartyInfo,                   20170524);
1235
    packet(SMSG_PARTY_MEMBER_DEAD,         0x0ab2,   7, &PartyRecv::processPartyMemberDead,             20170524);
1236
}
1237
1238
// 20170315
1239
if (packetVersion >= 20170315)
1240
{
1241
    packet(SMSG_CHANGE_MAP_SERVER,         0x0ac7, 156, &CharServerRecv::processChangeMapServer,        20170315);
1242
}
1243
1244
// 20170419 re
1245
if (packetVersionRe >= 20170419)
1246
{
1247
    packet(SMSG_SKILL_WARP_POINT,          0x0abe,  -1, &SkillRecv::processSkillWarpPoint2,             20170419);
1248
}
1249
1250
// 20170502 main
1251
if (packetVersionMain >= 20170502)
1252
{
1253
    packet(SMSG_SKILL_WARP_POINT,          0x0abe,  -1, &SkillRecv::processSkillWarpPoint2,             20170502);
1254
}
1255
1256
// 20170621 main
1257
if (packetVersionMain >= 20170621)
1258
{
1259
    packet(SMSG_LOGIN_OTP,                 0x0ad1,  -1, &LoginRecv::processLoginOtp1,                   20170621);
1260
}
1261
1262
// 20170621 re
1263
if (packetVersionRe >= 20170621)
1264
{
1265
    packet(SMSG_ITEM_PREVIEW1,             0x0ab9,  39, &InventoryRecv::processShowItemPreview1,        20170621);
1266
    packet(SMSG_LOGIN_OTP,                 0x0ad1,  -1, &LoginRecv::processLoginOtp1,                   20170621);
1267
}
1268
1269
// 20170726 main
1270
if (packetVersionMain >= 20170726)
1271
{
1272
    packet(SMSG_ITEM_PREVIEW1,             0x0ab9,  39, &InventoryRecv::processShowItemPreview1,        20170726);
1273
}
1274
1275
// 20170830
1276
packet(SMSG_PLAYER_STAT_UPDATE_7,          0x0acb,  12, &PlayerRecv::processPlayerStatUpdate7,          20170830);
1277
packet(SMSG_PLAYER_GET_EXP2,               0x0acc,  18, &PlayerRecv::processPlayerGetExp2,              20170830);
1278
packet(SMSG_SERVICE_MESSAGE_COLOR,         0x0adb,  -1, &ChatRecv::processServiceMessageColor,          20170830);
1279
1280
// 20170830 re
1281
if (packetVersionRe >= 20170830)
1282
{
1283
    packet(SMSG_REFINE_ANNOUNCE,           0x0ada,  30, &RefineRecv::processRefineAnnounce,             20170830);
1284
}
1285
1286
// 20170906 main
1287
if (packetVersionMain >= 20170906)
1288
{
1289
    packet(SMSG_REFINE_ANNOUNCE,           0x0ada,  30, &RefineRecv::processRefineAnnounce,             20170906);
1290
}
1291
1292
// zero 20171018
1293
if (packets_zero == true)
1294
{
1295
    packet(SMSG_ITEM_DROPPED,              0x0add,  22, &ItemRecv::processItemDropped,                  20171018);
1296
    packet(SMSG_ITEM_MOVE_FAILED,          0x0aa7,   6, &InventoryRecv::processItemMoveFailed,          20171018);
1297
    packet(SMSG_SKILL_WARP_POINT,          0x0abe,  -1, &SkillRecv::processSkillWarpPoint2,             20171018);
1298
    packet(SMSG_PARTY_MEMBER_INFO,         0x0a43,  85, &PartyRecv::processPartyMemberInfo,             20171018);
1299
    packet(SMSG_PARTY_INFO,                0x0a44,  -1, &PartyRecv::processPartyInfo,                   20171018);
1300
    packet(SMSG_PARTY_MEMBER_JOB_LEVEL,    0x0abd,  10, &PartyRecv::processPartyMemberJobLevel,         20171018);
1301
    packet(SMSG_MVP_EXP,                   0x010b,   6, &ChatRecv::processMVPExp,                       20171018);
1302
    packet(SMSG_GUILD_EXPULSION2,          0x0a82,  46, &GuildRecv::processGuildExpulsion2,             20171018);
1303
    packet(SMSG_GUILD_LEAVE2,              0x0a83,  46, &GuildRecv::processGuildLeave2,                 20171018);
1304
    packet(SMSG_PARTY_MEMBER_DEAD,         0x0ab2,   7, &PartyRecv::processPartyMemberDead,             20171018);
1305
    packet(SMSG_ACHIEVEMENT_LIST,          0x0a23,  -1, &AchievementRecv::processAchievementList,       20171018);
1306
    packet(SMSG_ACHIEVEMENT_UPDATE,        0x0a24,  66, &AchievementRecv::processAchievementUpdate,     20171018);
1307
    packet(SMSG_ACHIEVEMENT_GET_REWARD,    0x0a26,   6, &AchievementRecv::processAchievementGetReward,  20171018);
1308
    packet(SMSG_ITEM_PREVIEW1,             0x0ab9,  39, &InventoryRecv::processShowItemPreview1,        20171018);
1309
    packet(SMSG_LOGIN_OTP,                 0x0ad1,  -1, &LoginRecv::processLoginOtp1,                   20171018);
1310
    packet(SMSG_LOGIN_MOBILE_OTP,          0x09a2,   6, &LoginRecv::processMobileOtp,                   20171018);
1311
    packet(SMSG_PLAYER_SKILL_AUTO_SPELLS,  0x01cd,  30, &SkillRecv::processSkillAutoSpells1,            20171018);
1312
    packet(SMSG_CLAN_INFO,                 0x098a,  -1, &ClanRecv::processClanInfo,                     20171018);
1313
    packet(SMSG_PRIVATE_AIRSHIP_RESPONSE,  0x0A4A,   6, &NpcRecv::processPrivateAirShipResponse,        20171018);
1314
    packet(SMSG_ENCHANT_EQUIPMENT,         0x0a3f,   9, &InventoryRecv::processEnchantEquipment,        20171018);
1315
    packet(SMSG_GUILD_EXPULSION_LIST,      0x0a87,  -1, &GuildRecv::processGuildExpulsionList3,         20171018);
1316
    packet(SMSG_PLAYER_GUILD_PARTY_INFO,   0x0a30, 106, &BeingRecv::processPlayerGuilPartyInfo2,        20171018);
1317
    packet(SMSG_NPC_CASH_BUY,              0x0849,  16, &CashShopRecv::processCashShopBuy,              20171018);
1318
    packet(SMSG_ROULETTE_CLOSE,            0x0a1e,   3, &RouletteRecv::processRouletteClose,            20171018);
1319
    packet(SMSG_MERGE_ITEM,                0x096d,  -1, &InventoryRecv::processMergeItem,               20171018);
1320
    packet(SMSG_ACK_MERGE_ITEMS,           0x096f,   7, &InventoryRecv::processMergeItemResponse,       20171018);
1321
    packet(SMSG_REFINE_ADD_ITEM,           0x0aa2,  -1, &RefineRecv::processRefineAddItem,              20171018);
1322
    packet(SMSG_REFINE_ANNOUNCE,           0x0ada,  30, &RefineRecv::processRefineAnnounce,             20171018);
1323
    packet(SMSG_PLAYER_SHORTCUTS,          0x0a00, 269, &PlayerRecv::processPlayerShortcuts2,           20171018);
1324
    packet(SMSG_RANKS_LIST,                0x097d, 288, &BeingRecv::processRanksList1,                  20171018);
1325
    packet(SMSG_BEING_HAT_EFFECTS,         0x0a3b,  -1, &BeingRecv::processBeingHatEffects,             20171018);
1326
}
1327
1328
// 20171019 zero
1329
if (packetVersionZero >= 20171019)
1330
{
1331
    packet(SMSG_OVERWEIGHT_PERCENT,        0x0ade,   6, &InventoryRecv::processOverWeightPercent,       20171019);
1332
}
1333
1334
// 20171025 re
1335
if (packetVersionRe >= 20171025)
1336
{
1337
    packet(SMSG_OVERWEIGHT_PERCENT,        0x0ade,   6, &InventoryRecv::processOverWeightPercent,       20171025);
1338
}
1339
1340
// 20171108 main
1341
if (packetVersionMain >= 20171108)
1342
{
1343
    packet(SMSG_OVERWEIGHT_PERCENT,        0x0ade,   6, &InventoryRecv::processOverWeightPercent,       20171108);
1344
}
1345
1346
// 20171123 zero
1347
if (packetVersionZero >= 20171123)
1348
{
1349
    packet(SMSG_LOGIN_OTP,                 0x0ae3,  -1, &LoginRecv::processLoginOtp2,                   20171123);
1350
}
1351
1352
// 20171129 re
1353
if (packetVersionRe >= 20171129)
1354
{
1355
    packet(SMSG_NAME_RESPONSE_TITLE,       0x0adf,  58, &BeingRecv::processNameResponseTitle,           20171129);
1356
}
1357
1358
// 20171130 zero
1359
if (packetVersionZero >= 20171130)
1360
{
1361
    packet(SMSG_NAME_RESPONSE_TITLE,       0x0adf,  58, &BeingRecv::processNameResponseTitle,           20171130);
1362
}
1363
1364
// 20171207
1365
if (packetVersion >= 20171207)
1366
{
1367
    packet(SMSG_PARTY_MEMBER_INFO,         0x0ae4,  89, &PartyRecv::processPartyMemberInfo,             20171207);
1368
    packet(SMSG_PARTY_INFO,                0x0ae5,  -1, &PartyRecv::processPartyInfo,                   20171207);
1369
}
1370
1371
// 20171213 main
1372
if (packetVersionMain >= 20171213)
1373
{
1374
    packet(SMSG_LOGIN_OTP,                 0x0ae3,  -1, &LoginRecv::processLoginOtp3,                   20171213);
1375
}
1376
1377
// 20171213 re
1378
if (packetVersionRe >= 20171213)
1379
{
1380
    packet(SMSG_LOGIN_OTP,                 0x0ae3,  -1, &LoginRecv::processLoginOtp3,                   20171213);
1381
}
1382
1383
// 20171808 zero
1384
if (packetVersionZero >= 20171808)
1385
{
1386
    packet(SMSG_LOGIN_OTP,                 0x0ae3,  -1, &LoginRecv::processLoginOtp3,                   20171808);
1387
}
1388
1389
// main 20180124
1390
if (packetVersionMain >= 20180124)
1391
{
1392
    packet(SMSG_CHAR_PINCODE_STATUS2,      0x0ae9,  13, &CharServerRecv::processPincodeStatus2,         20180124);
1393
}
1394
1395
// re 20180124
1396
if (packetVersionRe >= 20180124)
1397
{
1398
    packet(SMSG_CHAR_PINCODE_STATUS2,      0x0ae9,  13, &CharServerRecv::processPincodeStatus2,         20180124);
1399
}
1400
1401
// zero 20180131
1402
if (packetVersionZero >= 20180131)
1403
{
1404
    packet(SMSG_CHAR_PINCODE_STATUS2,      0x0ae9,  13, &CharServerRecv::processPincodeStatus2,         20180124);
1405
}
1406
1407
// 20180207 main
1408
if (packetVersionMain >= 20180207)
1409
{
1410
    packet(SMSG_NAME_RESPONSE_TITLE,       0x0adf,  58, &BeingRecv::processNameResponseTitle,           20180207);
1411
}
1412
1413
// re 20180221
1414
if (packetVersionRe >= 20180221)
1415
{
1416
    packet(SMSG_SOLVE_CHAR_NAME,           0x0af7,  32, &BeingRecv::processSolveCharName,               20180221);
1417
}
1418
1419
// re 20180221
1420
if (packetVersionRe >= 20180221)
1421
{
1422
    packet(SMSG_FRIENDS_PLAYER_ONLINE,     0x0206,  35, &FriendsRecv::processPlayerOnline,              20180221);
1423
}
1424
1425
// main 20180307
1426
if (packetVersionMain >= 20180307)
1427
{
1428
    packet(SMSG_SOLVE_CHAR_NAME,           0x0af7,  32, &BeingRecv::processSolveCharName,               20180307);
1429
    packet(SMSG_FRIENDS_PLAYER_ONLINE,     0x0206,  35, &FriendsRecv::processPlayerOnline,              20180307);
1430
}
1431
1432
// re 20180307
1433
if (packetVersionRe >= 20180307)
1434
{
1435
    packet(SMSG_OPEN_WINDOW2,              0x0ae2,   7, &AttendanceRecv::processOpenWindow,             20180307);
1436
}
1437
1438
// re 20180321
1439
if (packetVersionRe >= 20180321)
1440
{
1441
    packet(SMSG_PRIVATE_AIRSHIP_RESPONSE,  0x0A4A,   6, &NpcRecv::processPrivateAirShipResponse,        20180321);
1442
}
1443
1444
// main 20180404
1445
if (packetVersionMain >= 20180404)
1446
{
1447
    packet(SMSG_OPEN_WINDOW2,              0x0ae2,   7, &AttendanceRecv::processOpenWindow,             20180404);
1448
}
1449
1450
// zero 20180411
1451
if (packetVersionZero >= 20180411)
1452
{
1453
    packet(SMSG_OPEN_WINDOW2,              0x0ae2,   7, &AttendanceRecv::processOpenWindow,             20180411);
1454
}
1455
1456
// 20180418
1457
if (packetVersion >= 20180418)
1458
{
1459
    packet(SMSG_ITEM_DROPPED,              0x0add,  22, &ItemRecv::processItemDropped,                  20180418);
1460
}
1461
1462
// 20180605
1463
if (packetVersion >= 20180605)
1464
{
1465
    packet(SMSG_GUILD_SET_POSITION,        0x0afd,  -1, &GuildRecv::processGuildSetPosition,            20180605);
1466
}
1467
1468
// 20180620 main
1469
if (packetVersionMain >= 20180620)
1470
{
1471
    packet(SMSG_PRIVATE_AIRSHIP_RESPONSE,  0x0A4A,   6, &NpcRecv::processPrivateAirShipResponse,        20180620);
1472
}
1473
1474
// 20180523
1475
if (packetVersionMain >= 20180523)
1476
{
1477
    packet(SMSG_ROULETTE_INFO_ACK_TYPE,    0x0a1c,  -1, &RouletteRecv::processRouletteInfoAckType,      20180523);
1478
}
1479
1480
// 20180627
1481
if (packetVersion >= 20180627)
1482
{
1483
    // can conflict with custom packets
1484
    packet(SMSG_LOGIN_ERROR2,              0x0b02,  26, &LoginRecv::processLoginError2,                 20180627);
1485
}
1486
1487
// 20180704 re
1488
if (packetVersionRe >= 20180704)
1489
{
1490
    packet(SMSG_ITEM_VISIBLE,              0x009d,  19, &ItemRecv::processItemVisible,                  20180704);
1491
    packet(SMSG_MVP_ITEM,                  0x010a,   6, &ChatRecv::processMVPItem,                      20180704);
1492
    packet(SMSG_SKILL_FAILED,              0x0110,  14, &SkillRecv::processSkillFailed,                 20180704);
1493
    packet(SMSG_PLAYER_SKILL_PRODUCE_EFFECT, 0x018f, 8, &SkillRecv::processSkillProduceEffect,          20180704);
1494
    packet(SMSG_PET_FOOD,                  0x01a3,   7, &PetRecv::processPetFood,                       20180704);
1495
    packet(SMSG_PLAYER_INVENTORY_USE,      0x01c8,  15, &InventoryRecv::processPlayerInventoryUse,      20180704);
1496
    packet(SMSG_BEING_CHANGE_LOOKS2,       0x01d7,  15, &BeingRecv::processBeingChangeLook2,            20180704);
1497
    packet(SMSG_PLAYER_UPGRADE_MESSAGE,    0x0223,  10, &PlayerRecv::processPlayerUpgradeMessage,       20180704);
1498
    packet(SMSG_HOMUNCULUS_FOOD,           0x022f,   7, &HomunculusRecv::processHomunculusFood,         20180704);
1499
    packet(SMSG_PLAYER_ITEM_RENTAL_TIME,   0x0298,  10, &InventoryRecv::processPlayerItemRentalTime,    20180704);
1500
    packet(SMSG_PLAYER_ITEM_RENTAL_EXPIRED, 0x0299,  8, &InventoryRecv::processPlayerItemRentalExpired, 20180704);
1501
    packet(SMSG_PARTY_ITEM_PICKUP,         0x02b8,  32, &PartyRecv::processPartyItemPickup,             20180704);
1502
    packet(SMSG_BUYINGSTORE_SELLER_SELL_FAILED, 0x0824, 8, &BuyingStoreRecv::processBuyingStoreSellerSellFailed, 20180704);
1503
    packet(SMSG_BUYINGSTORE_REPORT,        0x09e6,  24, &BuyingStoreRecv::processBuyingStoreReport,     20180704);
1504
    packet(SMSG_HOMUNCULUS_INFO,           0x09f7,  77, &HomunculusRecv::processHomunculusInfo2,        20180704);
1505
    packet(SMSG_MAIL2_ADD_ITEM_RESULT,     0x0a05,  63, &Mail2Recv::processAddItemResult,               20180704);
1506
    packet(SMSG_TRADE_ITEM_ADD,            0x0a09,  55, &TradeRecv::processTradeItemAdd,                20180704);
1507
    packet(SMSG_PLAYER_STORAGE_ADD,        0x0a0a,  57, &InventoryRecv::processPlayerStorageAdd,        20180704);
1508
    packet(SMSG_PLAYER_CART_ADD,           0x0a0b,  57, &InventoryRecv::processPlayerCartAdd,           20180704);
1509
    packet(SMSG_ROULETTE_OPEN_ACK,         0x0a1a,  25, &RouletteRecv::processRouletteOpenAck,          20180704);
1510
    packet(SMSG_ROULETTE_GENERATE_ACK_TYPE, 0x0a20, 23, &RouletteRecv::processRouletteGenerateAckType,  20180704);
1511
    packet(SMSG_ROULETTE_RECV_ITEM_ACK,    0x0a22,   7, &RouletteRecv::processRouletteItemAck,          20180704);
1512
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x0a37,  69, &InventoryRecv::processPlayerInventoryAdd,      20180704);
1513
    packet(SMSG_ITEM_DROPPED,              0x0add,  24, &ItemRecv::processItemDropped,                  20180704);
1514
    packet(SMSG_ITEM_PREVIEW1,             0x0ab9,  47, &InventoryRecv::processShowItemPreview1,        20180704);
1515
    packet(SMSG_ENCHANT_EQUIPMENT,         0x0a3f,  11, &InventoryRecv::processEnchantEquipment,        20180704);
1516
    packet(SMSG_REFINE_ANNOUNCE,           0x0ada,  32, &RefineRecv::processRefineAnnounce,             20180704);
1517
}
1518
1519
// 20180801 re
1520
if (packetVersionRe >= 20180801)
1521
{
1522
    packet(SMSG_BEING_VIEW_EQUIPMENT2,     0x0b03,  -1, &BeingRecv::processBeingViewEquipment2,         20180801);
1523
}
1524
1525
// 20180829 re
1526
if (packetVersionRe >= 20180829)
1527
{
1528
    packet(SMSG_INVENTORY_START1,          0x0b08,  26, &InventoryRecv::processInventoryStart1,         20180829);
1529
    packet(SMSG_INVENTORY_END1,            0x0b0b,   3, &InventoryRecv::processInventoryEnd1,           20180829);
1530
    packet(SMSG_PLAYER_COMBINED_INVENTORY1, 0x0b09, -1, &InventoryRecv::processPlayerCombinedInventory1, 20180829);
1531
    packet(SMSG_PLAYER_COMBINED_EQUIPMENT1, 0x0b0a, -1, &InventoryRecv::processPlayerCombinedEquipment1, 20180829);
1532
}
1533
1534
// 20180912 re
1535
if (packetVersionRe >= 20180912)
1536
{
1537
    packet(SMSG_INVENTORY_START2,          0x0b08,  27, &InventoryRecv::processInventoryStart2,         20180912);
1538
    packet(SMSG_INVENTORY_END2,            0x0b0b,   4, &InventoryRecv::processInventoryEnd2,           20180912);
1539
    packet(SMSG_PLAYER_COMBINED_INVENTORY2, 0x0b09, -1, &InventoryRecv::processPlayerCombinedInventory2, 20180912);
1540
    packet(SMSG_PLAYER_COMBINED_EQUIPMENT2, 0x0b0a, -1, &InventoryRecv::processPlayerCombinedEquipment2, 20180912);
1541
}
1542
1543
// 20180919 re
1544
if (packetVersionRe >= 20180919)
1545
{
1546
    packet(SMSG_INVENTORY_START3,          0x0b08,  -1, &InventoryRecv::processInventoryStart3,         20180919);
1547
}
1548
1549
// 20180919 zero
1550
if (packetVersionZero >= 20180919)
1551
{
1552
    packet(SMSG_INVENTORY_START3,          0x0b08,  -1, &InventoryRecv::processInventoryStart3,         20180919);
1553
    packet(SMSG_INVENTORY_END2,            0x0b0b,   4, &InventoryRecv::processInventoryEnd2,           20180919);
1554
    packet(SMSG_PLAYER_COMBINED_INVENTORY2, 0x0b09, -1, &InventoryRecv::processPlayerCombinedInventory2, 20180919);
1555
    packet(SMSG_PLAYER_COMBINED_EQUIPMENT2, 0x0b0a, -1, &InventoryRecv::processPlayerCombinedEquipment2, 20180919);
1556
}
1557
1558
// 20181002
1559
if (packetVersion >= 20181002)
1560
{
1561
    packet(SMSG_BEING_REMOVE_SPECIAL_EFFECT, 0x0b0d, 10, &BeingRecv::processBeingRemoveSpecialEffect,   20181002);
1562
}
1563
1564
// 20181002 main
1565
if (packetVersionMain >= 20181002)
1566
{
1567
    packet(SMSG_INVENTORY_START3,          0x0b08,  -1, &InventoryRecv::processInventoryStart3,         20181002);
1568
    packet(SMSG_INVENTORY_END2,            0x0b0b,   4, &InventoryRecv::processInventoryEnd2,           20181002);
1569
    packet(SMSG_PLAYER_COMBINED_INVENTORY2, 0x0b09, -1, &InventoryRecv::processPlayerCombinedInventory2, 20181002);
1570
    packet(SMSG_PLAYER_COMBINED_EQUIPMENT2, 0x0b0a, -1, &InventoryRecv::processPlayerCombinedEquipment2, 20181002);
1571
}
1572
1573
// 20181010 zero
1574
if (packetVersionZero >= 20181010)
1575
{
1576
    packet(SMSG_QUEST_LIST,                0x0aff,  -1, &QuestRecv::processAddQuests,                   20181010);
1577
    packet(SMSG_QUEST_ADD,                 0x0b0c, 155, &QuestRecv::processAddQuest,                    20181010);
1578
    packet(SMSG_QUEST_UPDATE_OBJECTIVES,   0x0afe,  -1, &QuestRecv::processUpdateQuestsObjectives,      20181010);
1579
}
1580
1581
// 20181017 main
1582
if (packetVersionMain >= 20181017)
1583
{
1584
    packet(SMSG_QUEST_LIST,                0x0aff,  -1, &QuestRecv::processAddQuests,                   20181017);
1585
    packet(SMSG_QUEST_ADD,                 0x0b0c, 155, &QuestRecv::processAddQuest,                    20181017);
1586
    packet(SMSG_QUEST_UPDATE_OBJECTIVES,   0x0afe,  -1, &QuestRecv::processUpdateQuestsObjectives,      20181017);
1587
}
1588
1589
// 20181017 re
1590
if (packetVersionRe >= 20181017)
1591
{
1592
    packet(SMSG_QUEST_LIST,                0x0aff,  -1, &QuestRecv::processAddQuests,                   20181017);
1593
    packet(SMSG_QUEST_ADD,                 0x0b0c, 155, &QuestRecv::processAddQuest,                    20181017);
1594
    packet(SMSG_QUEST_UPDATE_OBJECTIVES,   0x0afe,  -1, &QuestRecv::processUpdateQuestsObjectives,      20181017);
1595
}
1596
1597
// 20181017 main
1598
if (packetVersionMain >= 20181017)
1599
{
1600
    packet(SMSG_ITEM_PREVIEW2,             0x0b13,  40, &InventoryRecv::processShowItemPreview2,        20181017);
1601
}
1602
1603
// 20181017 re
1604
if (packetVersionRe >= 20181017)
1605
{
1606
    packet(SMSG_ITEM_PREVIEW2,             0x0b13,  48, &InventoryRecv::processShowItemPreview2,        20181017);
1607
}
1608
1609
// 20181024 zero
1610
if (packetVersionZero >= 20181024)
1611
{
1612
    packet(SMSG_ITEM_PREVIEW2,             0x0b13,  48, &InventoryRecv::processShowItemPreview2,        20181024);
1613
}
1614
1615
// 20181031 re
1616
if (packetVersionRe >= 20181031)
1617
{
1618
    packet(SMSG_PLAYER_SKILL_AUTO_SPELLS,  0x0afb,  -1, &SkillRecv::processSkillAutoSpells2,            20181031);
1619
}
1620
1621
// 20181114 main
1622
if (packetVersionMain >= 20181114)
1623
{
1624
    packet(SMSG_LOGIN_MOBILE_OTP,          0x09a2,   6, &LoginRecv::processMobileOtp,                   20181114);
1625
}
1626
1627
// 20181114 re
1628
if (packetVersionRe >= 20181114)
1629
{
1630
    packet(SMSG_LOGIN_MOBILE_OTP,          0x09a2,   6, &LoginRecv::processMobileOtp,                   20181114);
1631
}
1632
1633
// 20181114 zero
1634
if (packetVersionZero >= 20181114)
1635
{
1636
    packet(SMSG_HOMUNCULUS_INFO,           0x09f7,  77, &HomunculusRecv::processHomunculusInfo2,        20181114);
1637
    packet(SMSG_ENCHANT_EQUIPMENT,         0x0a3f,  11, &InventoryRecv::processEnchantEquipment,        20181114);
1638
    packet(SMSG_REFINE_ANNOUNCE,           0x0ada,  32, &RefineRecv::processRefineAnnounce,             20181114);
1639
    packet(SMSG_BEING_CHANGE_LOOKS2,       0x01d7,  15, &BeingRecv::processBeingChangeLook2,            20181114);
1640
    packet(SMSG_MVP_ITEM,                  0x010a,   6, &ChatRecv::processMVPItem,                      20180704);
1641
    packet(SMSG_SKILL_FAILED,              0x0110,  14, &SkillRecv::processSkillFailed,                 20180704);
1642
    packet(SMSG_PLAYER_SKILL_PRODUCE_EFFECT, 0x018f, 8, &SkillRecv::processSkillProduceEffect,          20180704);
1643
    packet(SMSG_PET_FOOD,                  0x01a3,   7, &PetRecv::processPetFood,                       20180704);
1644
    packet(SMSG_PLAYER_INVENTORY_USE,      0x01c8,  15, &InventoryRecv::processPlayerInventoryUse,      20180704);
1645
    packet(SMSG_PLAYER_UPGRADE_MESSAGE,    0x0223,  10, &PlayerRecv::processPlayerUpgradeMessage,       20180704);
1646
    packet(SMSG_HOMUNCULUS_FOOD,           0x022f,   7, &HomunculusRecv::processHomunculusFood,         20180704);
1647
    packet(SMSG_PLAYER_ITEM_RENTAL_TIME,   0x0298,  10, &InventoryRecv::processPlayerItemRentalTime,    20180704);
1648
    packet(SMSG_PLAYER_ITEM_RENTAL_EXPIRED, 0x0299,  8, &InventoryRecv::processPlayerItemRentalExpired, 20180704);
1649
    packet(SMSG_PARTY_ITEM_PICKUP,         0x02b8,  32, &PartyRecv::processPartyItemPickup,             20180704);
1650
    packet(SMSG_BUYINGSTORE_SELLER_SELL_FAILED, 0x0824, 8, &BuyingStoreRecv::processBuyingStoreSellerSellFailed, 20180704);
1651
    packet(SMSG_BUYINGSTORE_REPORT,        0x09e6,  24, &BuyingStoreRecv::processBuyingStoreReport,     20180704);
1652
    packet(SMSG_MAIL2_ADD_ITEM_RESULT,     0x0a05,  63, &Mail2Recv::processAddItemResult,               20180704);
1653
    packet(SMSG_TRADE_ITEM_ADD,            0x0a09,  55, &TradeRecv::processTradeItemAdd,                20180704);
1654
    packet(SMSG_PLAYER_STORAGE_ADD,        0x0a0a,  57, &InventoryRecv::processPlayerStorageAdd,        20180704);
1655
    packet(SMSG_PLAYER_CART_ADD,           0x0a0b,  57, &InventoryRecv::processPlayerCartAdd,           20180704);
1656
    packet(SMSG_ROULETTE_OPEN_ACK,         0x0a1a,  25, &RouletteRecv::processRouletteOpenAck,          20180704);
1657
    packet(SMSG_ROULETTE_GENERATE_ACK_TYPE, 0x0a20, 23, &RouletteRecv::processRouletteGenerateAckType,  20180704);
1658
    packet(SMSG_ROULETTE_RECV_ITEM_ACK,    0x0a22,   7, &RouletteRecv::processRouletteItemAck,          20180704);
1659
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x0a37,  69, &InventoryRecv::processPlayerInventoryAdd,      20180704);
1660
    packet(SMSG_ITEM_DROPPED,              0x0add,  24, &ItemRecv::processItemDropped,                  20180704);
1661
    packet(SMSG_ITEM_PREVIEW1,             0x0ab9,  47, &InventoryRecv::processShowItemPreview1,        20180704);
1662
}
1663
1664
// 20181121 main
1665
if (packetVersionMain >= 20181121)
1666
{
1667
    packet(SMSG_HOMUNCULUS_INFO,           0x09f7,  77, &HomunculusRecv::processHomunculusInfo2,        20181121);
1668
    packet(SMSG_ENCHANT_EQUIPMENT,         0x0a3f,  11, &InventoryRecv::processEnchantEquipment,        20181121);
1669
    packet(SMSG_REFINE_ANNOUNCE,           0x0ada,  32, &RefineRecv::processRefineAnnounce,             20181121);
1670
    packet(SMSG_BEING_CHANGE_LOOKS2,       0x01d7,  15, &BeingRecv::processBeingChangeLook2,            20181121);
1671
    packet(SMSG_MVP_ITEM,                  0x010a,   6, &ChatRecv::processMVPItem,                      20180704);
1672
    packet(SMSG_SKILL_FAILED,              0x0110,  14, &SkillRecv::processSkillFailed,                 20180704);
1673
    packet(SMSG_PLAYER_SKILL_PRODUCE_EFFECT, 0x018f, 8, &SkillRecv::processSkillProduceEffect,          20180704);
1674
    packet(SMSG_PET_FOOD,                  0x01a3,   7, &PetRecv::processPetFood,                       20180704);
1675
    packet(SMSG_PLAYER_INVENTORY_USE,      0x01c8,  15, &InventoryRecv::processPlayerInventoryUse,      20180704);
1676
    packet(SMSG_PLAYER_UPGRADE_MESSAGE,    0x0223,  10, &PlayerRecv::processPlayerUpgradeMessage,       20180704);
1677
    packet(SMSG_HOMUNCULUS_FOOD,           0x022f,   7, &HomunculusRecv::processHomunculusFood,         20180704);
1678
    packet(SMSG_PLAYER_ITEM_RENTAL_TIME,   0x0298,  10, &InventoryRecv::processPlayerItemRentalTime,    20180704);
1679
    packet(SMSG_PLAYER_ITEM_RENTAL_EXPIRED, 0x0299,  8, &InventoryRecv::processPlayerItemRentalExpired, 20180704);
1680
    packet(SMSG_PARTY_ITEM_PICKUP,         0x02b8,  32, &PartyRecv::processPartyItemPickup,             20180704);
1681
    packet(SMSG_BUYINGSTORE_SELLER_SELL_FAILED, 0x0824, 8, &BuyingStoreRecv::processBuyingStoreSellerSellFailed, 20180704);
1682
    packet(SMSG_BUYINGSTORE_REPORT,        0x09e6,  24, &BuyingStoreRecv::processBuyingStoreReport,     20180704);
1683
    packet(SMSG_MAIL2_ADD_ITEM_RESULT,     0x0a05,  63, &Mail2Recv::processAddItemResult,               20180704);
1684
    packet(SMSG_TRADE_ITEM_ADD,            0x0a09,  55, &TradeRecv::processTradeItemAdd,                20180704);
1685
    packet(SMSG_PLAYER_STORAGE_ADD,        0x0a0a,  57, &InventoryRecv::processPlayerStorageAdd,        20180704);
1686
    packet(SMSG_PLAYER_CART_ADD,           0x0a0b,  57, &InventoryRecv::processPlayerCartAdd,           20180704);
1687
    packet(SMSG_ROULETTE_OPEN_ACK,         0x0a1a,  25, &RouletteRecv::processRouletteOpenAck,          20180704);
1688
    packet(SMSG_ROULETTE_GENERATE_ACK_TYPE, 0x0a20, 23, &RouletteRecv::processRouletteGenerateAckType,  20180704);
1689
    packet(SMSG_ROULETTE_RECV_ITEM_ACK,    0x0a22,   7, &RouletteRecv::processRouletteItemAck,          20180704);
1690
    packet(SMSG_PLAYER_INVENTORY_ADD,      0x0a37,  69, &InventoryRecv::processPlayerInventoryAdd,      20180704);
1691
    packet(SMSG_ITEM_DROPPED,              0x0add,  24, &ItemRecv::processItemDropped,                  20180704);
1692
    packet(SMSG_ITEM_PREVIEW1,             0x0ab9,  47, &InventoryRecv::processShowItemPreview1,        20180704);
1693
}
1694
1695
// 20181128 main
1696
if (packetVersionMain >= 20181128)
1697
{
1698
    packet(SMSG_PLAYER_SKILL_AUTO_SPELLS,  0x0afb,  -1, &SkillRecv::processSkillAutoSpells2,            20181128);
1699
}
1700
1701
// 20181212 main
1702
if (packetVersionMain >= 20181212)
1703
{
1704
    packet(SMSG_SKILL_CASTING,             0x0b1a,  29, &BeingRecv::processSkillCasting3,               20181212);
1705
}
1706
1707
// 20181212 re
1708
if (packetVersionRe >= 20181212)
1709
{
1710
    packet(SMSG_SKILL_CASTING,             0x0b1a,  29, &BeingRecv::processSkillCasting3,               20181212);
1711
}
1712
1713
// 20181212 zero
1714
if (packetVersionZero >= 20181212)
1715
{
1716
    packet(SMSG_INVENTORY_EXPANSION_INFO,  0x0b18,   4, &InventoryRecv::processInventoryExpansionInfo,  20181212);
1717
    packet(SMSG_INVENTORY_EXPANSION_ACK,   0x0b15,   7, &InventoryRecv::processInventoryExpansionAck,   20181212);
1718
    packet(SMSG_INVENTORY_EXPANSION_RESULT, 0x0b17,  3, &InventoryRecv::processInventoryExpansionResult, 20181212);
1719
}
1720
1721
// 20181219 main
1722
if (packetVersionMain >= 20181219)
1723
{
1724
    packet(SMSG_INVENTORY_EXPANSION_INFO,  0x0b18,   4, &InventoryRecv::processInventoryExpansionInfo,  20181219);
1725
    packet(SMSG_INVENTORY_EXPANSION_ACK,   0x0b15,   7, &InventoryRecv::processInventoryExpansionAck,   20181219);
1726
    packet(SMSG_INVENTORY_EXPANSION_RESULT, 0x0b17,  3, &InventoryRecv::processInventoryExpansionResult, 20181212);
1727
}
1728
1729
// 20181219 re
1730
if (packetVersionRe >= 20181219)
1731
{
1732
    packet(SMSG_INVENTORY_EXPANSION_INFO,  0x0b18,   4, &InventoryRecv::processInventoryExpansionInfo,  20181219);
1733
    packet(SMSG_INVENTORY_EXPANSION_ACK,   0x0b15,   7, &InventoryRecv::processInventoryExpansionAck,   20181219);
1734
    packet(SMSG_INVENTORY_EXPANSION_RESULT, 0x0b17,  3, &InventoryRecv::processInventoryExpansionResult, 20181212);
1735
}
1736
1737
// 20181226 zero
1738
if (packetVersionZero >= 20181226)
1739
{
1740
    packet(SMSG_NPC_BARTER_OPEN,           0x0b0e,   -1, &BarterRecv::processOpenShop,                  20181226);
1741
}
1742
1743
// 20190116 main
1744
if (packetVersionMain >= 20190116)
1745
{
1746
    packet(SMSG_NPC_BARTER_OPEN,           0x0b0e,   -1, &BarterRecv::processOpenShop,                  20190116);
1747
}
1748
1749
// 20190116 re
1750
if (packetVersionRe >= 20190116)
1751
{
1752
    packet(SMSG_NPC_BARTER_OPEN,           0x0b0e,   -1, &BarterRecv::processOpenShop,                  20190116);
1753
}
1754
1755
// 20190130 zero
1756
if (packetVersionRe >= 20190130)
1757
{
1758
    packet(SMSG_SKILL_CASTING,             0x0b1a,  29, &BeingRecv::processSkillCasting3,               20190130);
1759
}
1760
1761
// 20190227 main
1762
if (packetVersionMain >= 20190227)
1763
{
1764
    packet(SMSG_MAP_PING2,                 0x0b1d,   2, &GameRecv::processPing2,                        20190227);
1765
}
1766
1767
// 20190220 re
1768
if (packetVersionRe >= 20190220)
1769
{
1770
    packet(SMSG_MAP_PING2,                 0x0b1d,   2, &GameRecv::processPing2,                        20190220);
1771
}
1772
1773
// 20190220 zero
1774
if (packetVersionRe >= 20190220)
1775
{
1776
    packet(SMSG_MAP_PING2,                 0x0b1d,   2, &GameRecv::processPing2,                        20190220);
1777
}
1778
1779
// 20190320 re
1780
if (packetVersionRe >= 20190320)
1781
{
1782
    packet(SMSG_MAP_LOAD_CONFIRM,          0x0b1b,   2, &GameRecv::processLoadConfirm,                  20190320);
1783
}
1784
1785
// 20190403 main
1786
if (packetVersionMain >= 20190403)
1787
{
1788
    packet(SMSG_MAP_LOAD_CONFIRM,          0x0b1b,   2, &GameRecv::processLoadConfirm,                  20190403);
1789
}
1790
1791
// 20190410 zero
1792
if (packetVersionZero >= 20190410)
1793
{
1794
    packet(SMSG_MAP_LOAD_CONFIRM,          0x0b1b,   2, &GameRecv::processLoadConfirm,                  20190410);
1795
}
1796
1797
// 20190508 re
1798
if (packetVersionRe >= 20190508)
1799
{
1800
    packet(SMSG_PLAYER_SHORTCUTS,          0x0b20, 271, &PlayerRecv::processPlayerShortcuts3,           20190508);
1801
}
1802
1803
// 20190522 main
1804
if (packetVersionMain >= 20190522)
1805
{
1806
    packet(SMSG_PLAYER_SHORTCUTS,          0x0b20, 271, &PlayerRecv::processPlayerShortcuts3,           20190522);
1807
}
1808
1809
// 20190605 re
1810
if (packetVersionRe >= 20190605)
1811
{
1812
    packet(SMSG_HOMUNCULUS_INFO,           0x0b2f,  73, &HomunculusRecv::processHomunculusInfo3,        20190605);
1813
}
1814
1815
// 20190605 zero
1816
if (packetVersionZero >= 20190605)
1817
{
1818
    packet(SMSG_PLAYER_SHORTCUTS,          0x0b20, 271, &PlayerRecv::processPlayerShortcuts3,           20190605);
1819
}
1820
1821
// 20190619 main
1822
if (packetVersionMain >= 20190619)
1823
{
1824
    packet(SMSG_HOMUNCULUS_INFO,           0x0b2f,  73, &HomunculusRecv::processHomunculusInfo3,        20190619);
1825
}
1826
1827
// 20190626 zero
1828
if (packetVersionZero >= 20190626)
1829
{
1830
    packet(SMSG_HOMUNCULUS_INFO,           0x0b2f,  73, &HomunculusRecv::processHomunculusInfo3,        20190626);
1831
}
1832
1833
// 20190703 re
1834
if (packetVersionRe >= 20190703)
1835
{
1836
    packet(SMSG_RANKS_LIST,                0x097d, 88, &BeingRecv::processRanksList2,                   20190703);
1837
}
1838
1839
// 20190724 zero
1840
if (packetVersionZero >= 20190724)
1841
{
1842
    packet(SMSG_RANKS_LIST,                0x097d, 88, &BeingRecv::processRanksList2,                   20190724);
1843
}
1844
1845
// 0
1846
// evol always packets
1847
packet(SMSG_SERVER_VERSION_RESPONSE,       0x7531,  -1, &LoginRecv::processServerVersion,               0);
1848
packet(SMSG_UPDATE_HOST,                   0x0063,  -1, &Ea::LoginRecv::processUpdateHost,              0);