hook before a player buys something

This commit is contained in:
Gargarensis
2017-01-04 01:48:38 +01:00
committed by Yehonal
parent 384ff412bf
commit a870e5fae4
3 changed files with 16 additions and 0 deletions

View File

@@ -73,6 +73,7 @@
#include "PoolMgr.h"
#include "SavingSystem.h"
#include "TicketMgr.h"
#include "ScriptMgr.h"
#define ZONE_UPDATE_INTERVAL (2*IN_MILLISECONDS)
@@ -21573,6 +21574,12 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c
// Return true is the bought item has a max count to force refresh of window by caller
bool Player::BuyItemFromVendorSlot(uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot)
{
sScriptMgr->OnBeforeBuyItemFromVendor(this, vendorguid,vendorslot,item,count,bag,slot);
// this check can be used from the hook to implement a custom vendor process
if (item == 0)
return true;
// cheating attempt
if (count < 1) count = 1;

View File

@@ -1530,6 +1530,11 @@ void ScriptMgr::OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 o
FOREACH_SCRIPT(MovementHandlerScript)->OnPlayerMove(player, movementInfo, opcode);
}
void ScriptMgr::OnBeforeBuyItemFromVendor(Player* player, uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot)
{
FOREACH_SCRIPT(PlayerScript)->OnBeforeBuyItemFromVendor(player, vendorguid, vendorslot, item, count, bag, slot);;
}
AllMapScript::AllMapScript(const char* name)
: ScriptObject(name)
{

View File

@@ -882,6 +882,9 @@ class PlayerScript : public ScriptObject
//After receiving item as a quest reward
virtual void OnQuestRewardItem(Player* player, Item* item, uint32 count) { }
//Before buying something from any vendor
virtual void OnBeforeBuyItemFromVendor(Player* player, uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot);
};
class GuildScript : public ScriptObject
@@ -1191,6 +1194,7 @@ class ScriptMgr
void OnLootItem(Player* player, Item* item, uint32 count, uint64 lootguid);
void OnCreateItem(Player* player, Item* item, uint32 count);
void OnQuestRewardItem(Player* player, Item* item, uint32 count);
void OnBeforeBuyItemFromVendor(Player* player, uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot);
public: /* GuildScript */