diff options
author | Andrei Karas <akaras@inbox.ru> | 2018-08-06 21:13:56 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2018-08-06 21:13:56 +0300 |
commit | 3b5390eee9c3e031867d3acfce574f1993d46b76 (patch) | |
tree | 733dc11695c0a71e4725f97b28222cf9eaf435d3 /src/net/tmwa | |
parent | 1604ad0c8bd2d770f350cf88e469b4c810b6457f (diff) | |
download | mv-3b5390eee9c3e031867d3acfce574f1993d46b76.tar.gz mv-3b5390eee9c3e031867d3acfce574f1993d46b76.tar.bz2 mv-3b5390eee9c3e031867d3acfce574f1993d46b76.tar.xz mv-3b5390eee9c3e031867d3acfce574f1993d46b76.zip |
Move InventoryRecv::processPlayerInventoryUse from ea namespace into tmwa and eathena.
Diffstat (limited to 'src/net/tmwa')
-rw-r--r-- | src/net/tmwa/inventoryrecv.cpp | 25 | ||||
-rw-r--r-- | src/net/tmwa/inventoryrecv.h | 1 | ||||
-rw-r--r-- | src/net/tmwa/packetsin.inc | 2 |
3 files changed, 27 insertions, 1 deletions
diff --git a/src/net/tmwa/inventoryrecv.cpp b/src/net/tmwa/inventoryrecv.cpp index 1bb1ee9f2..68521bfa4 100644 --- a/src/net/tmwa/inventoryrecv.cpp +++ b/src/net/tmwa/inventoryrecv.cpp @@ -560,4 +560,29 @@ int InventoryRecv::getSlot(const int eAthenaSlot) return CAST_S32(EQUIP_POINTS[position]); } +void InventoryRecv::processPlayerInventoryUse(Net::MessageIn &msg) +{ + BLOCK_START("InventoryRecv::processPlayerInventoryUse") + Inventory *const inventory = localPlayer != nullptr + ? PlayerInfo::getInventory() : nullptr; + + const int index = msg.readInt16("index") - INVENTORY_OFFSET; + msg.readItemId("item id"); + msg.readInt32("id?"); + const int amount = msg.readInt16("amount"); + msg.readUInt8("type"); + + if (inventory != nullptr) + { + if (Item *const item = inventory->getItem(index)) + { + if (amount != 0) + item->setQuantity(amount); + else + inventory->removeItemAt(index); + } + } + BLOCK_END("InventoryRecv::processPlayerInventoryUse") +} + } // namespace TmwAthena diff --git a/src/net/tmwa/inventoryrecv.h b/src/net/tmwa/inventoryrecv.h index da1d6bda9..bf3db3681 100644 --- a/src/net/tmwa/inventoryrecv.h +++ b/src/net/tmwa/inventoryrecv.h @@ -44,6 +44,7 @@ namespace TmwAthena void processPlayerStorageAdd(Net::MessageIn &msg); void processPlayerStorageRemove(Net::MessageIn &msg); void processPlayerInventoryRemove(Net::MessageIn &msg); + void processPlayerInventoryUse(Net::MessageIn &msg); int getSlot(const int eAthenaSlot) A_WARN_UNUSED; } // namespace InventoryRecv diff --git a/src/net/tmwa/packetsin.inc b/src/net/tmwa/packetsin.inc index d218db659..5681a2792 100644 --- a/src/net/tmwa/packetsin.inc +++ b/src/net/tmwa/packetsin.inc @@ -94,7 +94,7 @@ packet(SMSG_PLAYER_GUILD_PARTY_INFO, 0x0195, 102, &BeingRecv::processPlaye packet(SMSG_PLAYER_INVENTORY, 0x01ee, -1, &InventoryRecv::processPlayerInventory, 0); packet(SMSG_PLAYER_INVENTORY_ADD, 0x00a0, 23, &InventoryRecv::processPlayerInventoryAdd, 0); packet(SMSG_PLAYER_INVENTORY_REMOVE, 0x00af, 6, &InventoryRecv::processPlayerInventoryRemove, 0); -packet(SMSG_PLAYER_INVENTORY_USE, 0x01c8, 13, &Ea::InventoryRecv::processPlayerInventoryUse, 0); +packet(SMSG_PLAYER_INVENTORY_USE, 0x01c8, 13, &InventoryRecv::processPlayerInventoryUse, 0); packet(SMSG_PLAYER_MOVE, 0x01da, 60, &BeingRecv::processPlayerMove, 0); packet(SMSG_PLAYER_MOVE_TO_ATTACK, 0x0139, 16, &Ea::BeingRecv::processPlayerMoveToAttack, 0); packet(SMSG_PLAYER_SKILLS, 0x010f, -1, &SkillRecv::processPlayerSkills, 0); |