diff options
-rw-r--r-- | src/net/eathena/packetsin.inc | 14 | ||||
-rw-r--r-- | src/net/eathena/skillrecv.cpp | 13 | ||||
-rw-r--r-- | src/net/eathena/skillrecv.h | 3 |
3 files changed, 27 insertions, 3 deletions
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index 12ca2e38d..50c34c862 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -241,7 +241,7 @@ packet(SMSG_PLAYER_REFINE, 0x0188, 8, &InventoryRecv::processP packet(SMSG_PLAYER_REPAIR_EFFECT, 0x01fe, 5, &InventoryRecv::processPlayerRepairEffect, 0); packet(SMSG_PLAYER_REPAIR_LIST, 0x01fc, -1, &InventoryRecv::processPlayerRepairList, 0); packet(SMSG_PLAYER_SKILLS, 0x010f, -1, &SkillRecv::processPlayerSkills, 0); -packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x01cd, 30, &SkillRecv::processSkillAutoSpells, 0); +packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x01cd, 30, &SkillRecv::processSkillAutoSpells1, 0); packet(SMSG_PLAYER_SKILL_PRODUCE_EFFECT, 0x018f, 6, &SkillRecv::processSkillProduceEffect, 0); packet(SMSG_PLAYER_SKILL_PRODUCE_MIX_LIST, 0x018d, -1, &SkillRecv::processSkillProduceMixList, 0); packet(SMSG_PLAYER_SKILL_UP, 0x010e, 11, &Ea::SkillRecv::processPlayerSkillUp, 0); @@ -1409,6 +1409,18 @@ if (packetVersionRe >= 20181017) packet(SMSG_ITEM_PREVIEW2, 0x0b13, 48, &InventoryRecv::processShowItemPreview2, 20181017); } +// 20181031 re +if (packetVersionRe >= 20181031) +{ + packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x0afb, -1, &SkillRecv::processSkillAutoSpells2, 20181031); +} + +// 20181128 main +if (packetVersionMain >= 20181128) +{ + packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x0afb, -1, &SkillRecv::processSkillAutoSpells2, 20181128); +} + // 0 // evol always packets packet(SMSG_SERVER_VERSION_RESPONSE, 0x7531, -1, &LoginRecv::processServerVersion, 0); diff --git a/src/net/eathena/skillrecv.cpp b/src/net/eathena/skillrecv.cpp index 3f22d02bd..06e423865 100644 --- a/src/net/eathena/skillrecv.cpp +++ b/src/net/eathena/skillrecv.cpp @@ -517,7 +517,7 @@ void SkillRecv::processSkillArrowCreateList(Net::MessageIn &msg) msg.readItemId("item id"); } -void SkillRecv::processSkillAutoSpells(Net::MessageIn &msg) +void SkillRecv::processSkillAutoSpells1(Net::MessageIn &msg) { UNIMPLEMENTEDPACKET; @@ -527,6 +527,17 @@ void SkillRecv::processSkillAutoSpells(Net::MessageIn &msg) menu = MenuType::AutoSpell; } +void SkillRecv::processSkillAutoSpells2(Net::MessageIn &msg) +{ + UNIMPLEMENTEDPACKET; + + const int count = (msg.readInt16("len") - 4) / 4; + for (int f = 0; f < count; f ++) + msg.readInt32("skill id"); + + menu = MenuType::AutoSpell; +} + void SkillRecv::processSkillDevotionEffect(Net::MessageIn &msg) { UNIMPLEMENTEDPACKET; diff --git a/src/net/eathena/skillrecv.h b/src/net/eathena/skillrecv.h index d9b2c1b5e..4a2fddd95 100644 --- a/src/net/eathena/skillrecv.h +++ b/src/net/eathena/skillrecv.h @@ -48,7 +48,8 @@ namespace EAthena void processSkillProduceEffect(Net::MessageIn &msg); void processSkillUnitUpdate(Net::MessageIn &msg); void processSkillArrowCreateList(Net::MessageIn &msg); - void processSkillAutoSpells(Net::MessageIn &msg); + void processSkillAutoSpells1(Net::MessageIn &msg); + void processSkillAutoSpells2(Net::MessageIn &msg); void processSkillDevotionEffect(Net::MessageIn &msg); void processSkillItemListWindow(Net::MessageIn &msg); void processSkillScale(Net::MessageIn &msg); |