From 31970d5255e43de6f06ef6ae4c67d781632ecd1f Mon Sep 17 00:00:00 2001 From: Erik Schilling Date: Fri, 26 Aug 2011 21:48:00 +0800 Subject: Prevented char from picking up items when inventory is full. Resolves: Mana-Mantis: #379. Reviewed-by: Bertram. --- src/game-server/gamehandler.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/game-server/gamehandler.cpp b/src/game-server/gamehandler.cpp index 58d289f0..4c69da20 100644 --- a/src/game-server/gamehandler.cpp +++ b/src/game-server/gamehandler.cpp @@ -472,15 +472,20 @@ void GameHandler::handlePickup(GameClient &client, MessageIn &message) { Item *item = static_cast< Item * >(o); ItemClass *ic = item->getItemClass(); - Inventory(client.character).insert(ic->getDatabaseID(), - item->getAmount()); - GameState::remove(item); - // log transaction - std::stringstream str; - str << "User picked up item " << ic->getDatabaseID() - << " at " << opos.x << "x" << opos.y; - accountHandler->sendTransaction(client.character->getDatabaseID(), - TRANS_ITEM_PICKUP, str.str()); + if (!Inventory(client.character).insert(ic->getDatabaseID(), + item->getAmount())) + { + + GameState::remove(item); + // log transaction + std::stringstream str; + str << "User picked up item " << ic->getDatabaseID() + << " at " << opos.x << "x" << opos.y; + accountHandler->sendTransaction( + client.character->getDatabaseID(), + TRANS_ITEM_PICKUP, str.str() + ); + } break; } } -- cgit v1.2.3-70-g09d2