From 2ff57a846a44a84729c5f0a737bb53b8b6926a8e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 21 Aug 2015 15:48:46 +0300 Subject: Impliment packet SMSG_PLAYER_ITEM_RENTAL_EXPIRED. --- src/net/eathena/inventoryhandler.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/net/eathena') diff --git a/src/net/eathena/inventoryhandler.cpp b/src/net/eathena/inventoryhandler.cpp index ff5871d93..d8a5a2a65 100644 --- a/src/net/eathena/inventoryhandler.cpp +++ b/src/net/eathena/inventoryhandler.cpp @@ -915,10 +915,24 @@ void InventoryHandler::processPlayerItemRentalTime(Net::MessageIn &msg) void InventoryHandler::processPlayerItemRentalExpired(Net::MessageIn &msg) { - UNIMPLIMENTEDPACKET; - // ++ need remove item from inventory - msg.readInt16("index"); - msg.readInt16("item id"); + Inventory *const inventory = localPlayer + ? PlayerInfo::getInventory() : nullptr; + + const int index = msg.readInt16("index") - INVENTORY_OFFSET; + const int id = msg.readInt16("item id"); + const ItemInfo &info = ItemDB::get(id); + + NotifyManager::notify(NotifyTypes::RENTAL_TIME_EXPIRED, + info.getName()); + if (inventory) + { + if (Item *const item = inventory->getItem(index)) + { + item->increaseQuantity(-item->getQuantity()); + inventory->removeItemAt(index); + ArrowsListener::distributeEvent(); + } + } } int InventoryHandler::convertFromServerSlot(const int serverSlot) const -- cgit v1.2.3-70-g09d2