summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/eathena/packetsin.inc30
-rw-r--r--src/net/eathena/playerrecv.cpp34
-rw-r--r--src/net/eathena/playerrecv.h4
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);