diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-09-03 20:04:28 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-09-06 01:18:56 +0300 |
commit | db1548f44fb972c0c60b742dfece7e1f442e0378 (patch) | |
tree | 8edc5a23f78c17afa2ae7f271af3c6b32b264bf6 /src/net/eathena/inventoryhandler.cpp | |
parent | 28741b7ba3eea91a80fef6e1b2e57553c67bf6ea (diff) | |
download | mv-db1548f44fb972c0c60b742dfece7e1f442e0378.tar.gz mv-db1548f44fb972c0c60b742dfece7e1f442e0378.tar.bz2 mv-db1548f44fb972c0c60b742dfece7e1f442e0378.tar.xz mv-db1548f44fb972c0c60b742dfece7e1f442e0378.zip |
eathena: fix a bit support for packet SMSG_PLAYER_INVENTORY 0x0991.
Diffstat (limited to 'src/net/eathena/inventoryhandler.cpp')
-rw-r--r-- | src/net/eathena/inventoryhandler.cpp | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/src/net/eathena/inventoryhandler.cpp b/src/net/eathena/inventoryhandler.cpp index 6567eedc2..1d32cda58 100644 --- a/src/net/eathena/inventoryhandler.cpp +++ b/src/net/eathena/inventoryhandler.cpp @@ -351,42 +351,36 @@ void InventoryHandler::processPlayerInventory(Net::MessageIn &msg) mInventoryItems.clear(); } - msg.readInt16(); // length - const int number = (msg.getLength() - 4) / 18; + msg.readInt16("len"); + const int number = (msg.getLength() - 4) / 23; for (int loop = 0; loop < number; loop++) { - int cards[4]; - const int index = msg.readInt16() - (playerInvintory + const int index = msg.readInt16("item index") - (playerInvintory ? INVENTORY_OFFSET : STORAGE_OFFSET); - const int itemId = msg.readInt16(); - const uint8_t itemType = msg.readUInt8(); - uint8_t identified = msg.readUInt8(); - const int amount = msg.readInt16(); - const int arrow = msg.readInt16(); - for (int i = 0; i < 4; i++) - cards[i] = msg.readInt16(); - - if (mDebugInventory) - { - logger->log("Index: %d, ID: %d, Type: %d, Identified: %d, " - "Qty: %d, Cards: %d, %d, %d, %d", - index, itemId, itemType, identified, amount, - cards[0], cards[1], cards[2], cards[3]); - } - - if (serverVersion < 1 && identified > 1) - identified = 1; + const int itemId = msg.readInt16("item id"); + const uint8_t itemType = msg.readUInt8("item type"); + const int amount = msg.readInt16("count"); + msg.readInt16("count"); + msg.readInt16("wear state / equip"); + msg.readInt16("card0"); + msg.readInt16("card1"); + msg.readInt16("card2"); + msg.readInt16("card3"); + msg.readInt32("hire expire date (?)"); + msg.readInt8("flags"); + // need get actual identify flag + uint8_t identified = 1; if (playerInvintory) { // Trick because arrows are not considered equipment - const bool isEquipment = arrow & 0x8000; +// const bool isEquipment = arrow & 0x8000; if (inventory) { inventory->setItem(index, itemId, amount, - 0, identified, isEquipment); + 0, identified, false); } } else |