From b44bcbdbaa5eb7f278444b8b48dbe6b8f6345191 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 22 Mar 2016 20:00:55 +0300 Subject: Fix packet version usage for hercules without evol plugin. --- src/net/eathena/inventoryrecv.cpp | 39 ++++++++++++++++++++++++++++++--------- src/net/eathena/traderecv.cpp | 3 ++- src/net/eathena/vendingrecv.cpp | 6 ++++-- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/net/eathena/inventoryrecv.cpp b/src/net/eathena/inventoryrecv.cpp index 8bc93208f..d282af05e 100644 --- a/src/net/eathena/inventoryrecv.cpp +++ b/src/net/eathena/inventoryrecv.cpp @@ -111,10 +111,15 @@ void InventoryRecv::processPlayerEquipment(Net::MessageIn &msg) equipment->setBackend(&Ea::InventoryRecv::mEquips); } int sz; - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) + { sz = 57; + } else + { sz = 31; + } const int number = (msg.getLength() - 4) / sz; @@ -132,7 +137,8 @@ void InventoryRecv::processPlayerEquipment(Net::MessageIn &msg) msg.readInt32("hire expire date (?)"); msg.readInt16("equip type"); msg.readInt16("item sprite number"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { msg.readUInt8("rnd count"); for (int f = 0; f < 5; f ++) @@ -196,7 +202,8 @@ void InventoryRecv::processPlayerInventoryAdd(Net::MessageIn &msg) const unsigned char err = msg.readUInt8("result"); msg.readInt32("hire expire date"); msg.readInt16("bind on equip"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { for (int f = 0; f < 5; f ++) { @@ -503,10 +510,15 @@ void InventoryRecv::processPlayerStorageEquip(Net::MessageIn &msg) BLOCK_START("InventoryRecv::processPlayerStorageEquip") msg.readInt16("len"); int sz; - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) + { sz = 57; + } else + { sz = 31; + } const int number = (msg.getLength() - 4 - 24) / sz; msg.readString(24, "storage name"); @@ -525,7 +537,8 @@ void InventoryRecv::processPlayerStorageEquip(Net::MessageIn &msg) msg.readInt32("hire expire date"); msg.readInt16("bind on equip"); msg.readInt16("sprite"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { msg.readUInt8("rnd count"); for (int f = 0; f < 5; f ++) @@ -569,7 +582,8 @@ void InventoryRecv::processPlayerStorageAdd(Net::MessageIn &msg) int cards[maxCards]; for (int f = 0; f < maxCards; f++) cards[f] = msg.readInt16("card"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { for (int f = 0; f < 5; f ++) { @@ -770,7 +784,8 @@ void InventoryRecv::processPlayerCartAdd(Net::MessageIn &msg) int cards[maxCards]; for (int f = 0; f < maxCards; f++) cards[f] = msg.readInt16("card"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { for (int f = 0; f < 5; f ++) { @@ -823,10 +838,15 @@ void InventoryRecv::processPlayerCartEquip(Net::MessageIn &msg) BLOCK_START("InventoryRecv::processPlayerCartEquip") msg.readInt16("len"); int sz; - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) + { sz = 57; + } else + { sz = 31; + } const int number = (msg.getLength() - 4) / sz; for (int loop = 0; loop < number; loop++) @@ -844,7 +864,8 @@ void InventoryRecv::processPlayerCartEquip(Net::MessageIn &msg) msg.readInt32("hire expire date"); msg.readInt16("bind on equip"); msg.readInt16("sprite"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { msg.readUInt8("rnd count"); for (int f = 0; f < 5; f ++) diff --git a/src/net/eathena/traderecv.cpp b/src/net/eathena/traderecv.cpp index 3d7d51dfe..b77c8af87 100644 --- a/src/net/eathena/traderecv.cpp +++ b/src/net/eathena/traderecv.cpp @@ -80,7 +80,8 @@ void TradeRecv::processTradeItemAdd(Net::MessageIn &msg) int cards[maxCards]; for (int f = 0; f < maxCards; f++) cards[f] = msg.readInt16("card"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { for (int f = 0; f < 5; f ++) { diff --git a/src/net/eathena/vendingrecv.cpp b/src/net/eathena/vendingrecv.cpp index 0e6c33434..7e088a2b0 100644 --- a/src/net/eathena/vendingrecv.cpp +++ b/src/net/eathena/vendingrecv.cpp @@ -100,7 +100,8 @@ void VendingRecv::processItemsList(Net::MessageIn &msg) msg.readUInt8("refine"); for (int d = 0; d < maxCards; d ++) cards[d] = msg.readInt16("card"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { for (int d = 0; d < 5; d ++) { @@ -143,7 +144,8 @@ void VendingRecv::processOpen(Net::MessageIn &msg) msg.readUInt8("refine"); for (int d = 0; d < maxCards; d ++) msg.readInt16("card"); - if (serverVersion >= 8 && packetVersion >= 20150226) + if ((serverVersion >= 8 || serverVersion == 0) && + packetVersion >= 20150226) { for (int d = 0; d < 5; d ++) { -- cgit v1.2.3-70-g09d2