From 25c8ab63f819809026e4ddfec11842ef0ed58c46 Mon Sep 17 00:00:00 2001 From: enjoi Date: Tue, 24 Aug 2010 18:18:31 -0500 Subject: Core/Player: Add new function AddItem. Useful in the scriptsystem for custom scripts. --HG-- branch : trunk --- src/server/game/Entities/Player/Player.cpp | 42 ++++++++++++++++++------------ src/server/game/Entities/Player/Player.h | 2 ++ 2 files changed, 27 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 978078e5b85..9d088b5be49 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6853,26 +6853,11 @@ bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, int32 honor, bool pvpt || (MapType == 3 && !InBattleground())) return true; - uint32 noSpaceForCount = 0; uint32 itemId = sWorld.getIntConfig(CONFIG_PVP_TOKEN_ID); int32 count = sWorld.getIntConfig(CONFIG_PVP_TOKEN_COUNT); - // check space and find places - ItemPosCountVec dest; - uint8 msg = CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount); - if (msg != EQUIP_ERR_OK) // convert to possible store amount - count = noSpaceForCount; - - if (count == 0 || dest.empty()) // can't add any - { - // -- TODO: Send to mailbox if no space - ChatHandler(this).PSendSysMessage("You don't have any space in your bags for a token."); - return true; - } - - Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId)); - SendNewItem(item,count,true,false); - ChatHandler(this).PSendSysMessage("You have been awarded a token for slaying another player."); + if(AddItem(itemId, count)) + ChatHandler(this).PSendSysMessage("You have been awarded a token for slaying another player."); } } @@ -23997,6 +23982,29 @@ void Player::SendRefundInfo(Item *item) GetSession()->SendPacket(&data); } +bool Player::AddItem(uint32 itemId, uint32 count) +{ + uint32 noSpaceForCount = 0; + ItemPosCountVec dest; + uint8 msg = CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount); + if (msg != EQUIP_ERR_OK) + count = noSpaceForCount; + + if (count == 0 || dest.empty()) + { + // -- TODO: Send to mailbox if no space + ChatHandler(this).PSendSysMessage("You don't have any space in your bags."); + return false; + } + + Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId)); + if(item) + SendNewItem(item,count,true,false); + else + return false; + return true; +} + void Player::RefundItem(Item *item) { if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE)) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 1f35aed6799..90d5b4494b3 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1272,6 +1272,8 @@ class Player : public Unit, public GridObject void LoadCorpse(); void LoadPet(); + bool AddItem(uint32 itemId, uint32 count); + uint32 m_stableSlots; /*********************************************************/ -- cgit v1.2.3