summaryrefslogtreecommitdiff
path: root/src/net/eathena/vendingrecv.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-04-02 21:16:34 +0300
committerAndrei Karas <akaras@inbox.ru>2016-04-02 21:16:34 +0300
commit0ab403f92f7827afc45c4e07d3527a405e2e88e8 (patch)
tree42ba407cef02e7e568bfc469d45ab3386e20edba /src/net/eathena/vendingrecv.cpp
parenta08ed94e63c099467e65e98dc003b33c8e9c2034 (diff)
downloadmanaplus-0ab403f92f7827afc45c4e07d3527a405e2e88e8.tar.gz
manaplus-0ab403f92f7827afc45c4e07d3527a405e2e88e8.tar.bz2
manaplus-0ab403f92f7827afc45c4e07d3527a405e2e88e8.tar.xz
manaplus-0ab403f92f7827afc45c4e07d3527a405e2e88e8.zip
Sort more packets. Add version checks inside packets.
Diffstat (limited to 'src/net/eathena/vendingrecv.cpp')
-rw-r--r--src/net/eathena/vendingrecv.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/net/eathena/vendingrecv.cpp b/src/net/eathena/vendingrecv.cpp
index 9750ca520..3b3b000e5 100644
--- a/src/net/eathena/vendingrecv.cpp
+++ b/src/net/eathena/vendingrecv.cpp
@@ -79,7 +79,17 @@ void VendingRecv::processHideBoard(Net::MessageIn &msg)
void VendingRecv::processItemsList(Net::MessageIn &msg)
{
- const int count = (msg.readInt16("len") - 12) / 22;
+ int packetLen = 22;
+ if ((serverVersion >= 8 || serverVersion == 0) &&
+ msg.getVersion() >= 20150226)
+ {
+ packetLen += 25;
+ }
+ int offset = 8;
+ if (msg.getVersion() >= 20100105)
+ offset += 4;
+
+ const int count = (msg.readInt16("len") - offset) / 22;
const BeingId id = msg.readBeingId("id");
const Being *const being = actorManager->findBeing(id);
if (!being)
@@ -87,7 +97,8 @@ void VendingRecv::processItemsList(Net::MessageIn &msg)
int cards[maxCards];
CREATEWIDGETV(mBuyDialog, BuyDialog, being->getName());
mBuyDialog->setMoney(PlayerInfo::getAttribute(Attributes::MONEY));
- msg.readInt32("vender id");
+ if (msg.getVersion() >= 20100105)
+ msg.readInt32("vender id");
for (int f = 0; f < count; f ++)
{
const int value = msg.readInt32("price");
@@ -103,7 +114,7 @@ void VendingRecv::processItemsList(Net::MessageIn &msg)
cards[d] = msg.readInt16("card");
// ++ need change to msg.getVersion()
if ((serverVersion >= 8 || serverVersion == 0) &&
- packetVersion >= 20150226)
+ msg.getVersion() >= 20150226)
{
for (int d = 0; d < 5; d ++)
{