diff options
-rw-r--r-- | src/net/eathena/packetsin.inc | 30 | ||||
-rw-r--r-- | src/net/eathena/playerrecv.cpp | 34 | ||||
-rw-r--r-- | src/net/eathena/playerrecv.h | 4 |
3 files changed, 60 insertions, 8 deletions
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index 559a2f170..492ca268d 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -454,6 +454,9 @@ if (packetVersion >= 20070227) packet(SMSG_PARTY_INVITATION_STATS, 0x02c9, 3, &PartyRecv::processPartyInvitationStats, 20070227); +// 20070711 +packet(SMSG_PLAYER_SHORTCUTS, 0x07d9, 268, &PlayerRecv::processPlayerShortcuts1, 20070711); + // 20070821 packet(SMSG_PARTY_INVITE_RESPONSE, 0x02c5, 30, &PartyRecv::processPartyInviteResponse, 20070821); packet(SMSG_PARTY_INVITED, 0x02c6, 30, &PartyRecv::processPartyInvited, 20070821); @@ -574,7 +577,6 @@ if (packetVersionRe >= 20090406) // 20090603 packet(SMSG_PARTY_SETTINGS, 0x07d8, 8, &PartyRecv::processPartySettings, 20090603); -packet(SMSG_PLAYER_SHORTCUTS, 0x07d9, 268, &PlayerRecv::processPlayerShortcuts, 20090603); // 20090715 packet(SMSG_PLAYER_UPDATE_SKILL, 0x07e1, 15, &SkillRecv::processSkillUpdate, 20090715); @@ -917,6 +919,12 @@ if (packetVersionMain >= 20141008) packet(SMSG_ROULETTE_CLOSE, 0x0a1e, 3, &RouletteRecv::processRouletteClose, 20141008); } +// 20141015 re +if (packetVersionRe >= 20141015) +{ + packet(SMSG_PLAYER_SHORTCUTS, 0x0a00, 269, &PlayerRecv::processPlayerShortcuts2, 20141015); +} + // 20141016 packet(SMSG_ROULETTE_OPEN_ACK, 0x0a1a, 23, &RouletteRecv::processRouletteOpenAck, 20141016); packet(SMSG_ROULETTE_INFO_ACK_TYPE, 0x0a1c, -1, &RouletteRecv::processRouletteInfoAckType, 20141016); @@ -931,11 +939,16 @@ if (packetVersion >= 20141016) packet(SMSG_PLAYER_SET_TITLE_ACK, 0x0a2f, 7, &PlayerRecv::processSetTitleAck, 20141016); } +// 20141022 main +if (packetVersionMain >= 20141022) +{ + packet(SMSG_PLAYER_SHORTCUTS, 0x0a00, 269, &PlayerRecv::processPlayerShortcuts2, 20141022); +} + // 20141022 if (packetVersion >= 20141022) { packet(SMSG_QUEST_LIST, 0x097a, -1, &QuestRecv::processAddQuests, 20141022); - packet(SMSG_PLAYER_SHORTCUTS, 0x0a00, 269, &PlayerRecv::processPlayerShortcuts, 20141022); packet(SMSG_MAP_LOGIN_SUCCESS, 0x0a18, 14, &GameRecv::processMapLogin, 20141022); packet(SMSG_VENDING_OPEN_STATUS, 0x0a28, 3, &VendingRecv::processOpenStatus, 20141022); } @@ -1294,6 +1307,7 @@ if (packets_zero == true) packet(SMSG_ACK_MERGE_ITEMS, 0x096f, 7, &InventoryRecv::processMergeItemResponse, 20171018); packet(SMSG_REFINE_ADD_ITEM, 0x0aa2, -1, &RefineRecv::processRefineAddItem, 20171018); packet(SMSG_REFINE_ANNOUNCE, 0x0ada, 30, &RefineRecv::processRefineAnnounce, 20171018); + packet(SMSG_PLAYER_SHORTCUTS, 0x0a00, 269, &PlayerRecv::processPlayerShortcuts2, 20171018); } // 20171019 zero @@ -1765,6 +1779,18 @@ if (packetVersionZero >= 20190410) packet(SMSG_MAP_LOAD_CONFIRM, 0x0b1b, 2, &GameRecv::processLoadConfirm, 20190410); } +// 20190508 re +if (packetVersionRe >= 20190508) +{ + packet(SMSG_PLAYER_SHORTCUTS, 0x0b20, 271, &PlayerRecv::processPlayerShortcuts3, 20190508); +} + +// 20190522 main +if (packetVersionMain >= 20190522) +{ + packet(SMSG_PLAYER_SHORTCUTS, 0x0b20, 271, &PlayerRecv::processPlayerShortcuts3, 20190522); +} + // 0 // evol always packets packet(SMSG_SERVER_VERSION_RESPONSE, 0x7531, -1, &LoginRecv::processServerVersion, 0); diff --git a/src/net/eathena/playerrecv.cpp b/src/net/eathena/playerrecv.cpp index c6f843168..9b4108cc0 100644 --- a/src/net/eathena/playerrecv.cpp +++ b/src/net/eathena/playerrecv.cpp @@ -52,19 +52,43 @@ namespace EAthena { -void PlayerRecv::processPlayerShortcuts(Net::MessageIn &msg) +void PlayerRecv::processPlayerShortcuts1(Net::MessageIn &msg) { // +++ player shortcuts ignored. It also disabled on server side. // may be in future better use it? - if (msg.getVersion() >= 20141022) - msg.readUInt8("rotate"); - for (int f = 0; f < 27; f ++) + for (int f = 0; f < 38; f ++) + { + msg.readUInt8("type 0: item, 1: skill"); + msg.readInt32("item or skill id"); + msg.readInt16("skill level"); + } +} + +void PlayerRecv::processPlayerShortcuts2(Net::MessageIn &msg) +{ + // +++ player shortcuts ignored. It also disabled on server side. + // may be in future better use it? + msg.readUInt8("rotate"); + for (int f = 0; f < 38; f ++) + { + msg.readUInt8("type 0: item, 1: skill"); + msg.readInt32("item or skill id"); + msg.readInt16("skill level"); + } +} + +void PlayerRecv::processPlayerShortcuts3(Net::MessageIn &msg) +{ + // +++ player shortcuts ignored. It also disabled on server side. + // may be in future better use it? + msg.readUInt8("rotate"); + msg.readInt16("tab"); + for (int f = 0; f < 38; f ++) { msg.readUInt8("type 0: item, 1: skill"); msg.readInt32("item or skill id"); msg.readInt16("skill level"); } - msg.skip(77, "unused"); } void PlayerRecv::processPlayerShowEquip(Net::MessageIn &msg) diff --git a/src/net/eathena/playerrecv.h b/src/net/eathena/playerrecv.h index eb611e5a6..4f55d7ae1 100644 --- a/src/net/eathena/playerrecv.h +++ b/src/net/eathena/playerrecv.h @@ -32,7 +32,9 @@ namespace EAthena { namespace PlayerRecv { - void processPlayerShortcuts(Net::MessageIn &msg); + void processPlayerShortcuts1(Net::MessageIn &msg); + void processPlayerShortcuts2(Net::MessageIn &msg); + void processPlayerShortcuts3(Net::MessageIn &msg); void processPlayerShowEquip(Net::MessageIn &msg); void processPlayerStatUpdate5(Net::MessageIn &msg); void processPlayerGetExp(Net::MessageIn &msg); |