hook before a player buys something
This commit is contained in:
@@ -73,6 +73,7 @@
|
|||||||
#include "PoolMgr.h"
|
#include "PoolMgr.h"
|
||||||
#include "SavingSystem.h"
|
#include "SavingSystem.h"
|
||||||
#include "TicketMgr.h"
|
#include "TicketMgr.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
|
||||||
#define ZONE_UPDATE_INTERVAL (2*IN_MILLISECONDS)
|
#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
|
// 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)
|
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
|
// cheating attempt
|
||||||
if (count < 1) count = 1;
|
if (count < 1) count = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -1530,6 +1530,11 @@ void ScriptMgr::OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 o
|
|||||||
FOREACH_SCRIPT(MovementHandlerScript)->OnPlayerMove(player, movementInfo, opcode);
|
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)
|
AllMapScript::AllMapScript(const char* name)
|
||||||
: ScriptObject(name)
|
: ScriptObject(name)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -882,6 +882,9 @@ class PlayerScript : public ScriptObject
|
|||||||
//After receiving item as a quest reward
|
//After receiving item as a quest reward
|
||||||
virtual void OnQuestRewardItem(Player* player, Item* item, uint32 count) { }
|
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
|
class GuildScript : public ScriptObject
|
||||||
@@ -1191,6 +1194,7 @@ class ScriptMgr
|
|||||||
void OnLootItem(Player* player, Item* item, uint32 count, uint64 lootguid);
|
void OnLootItem(Player* player, Item* item, uint32 count, uint64 lootguid);
|
||||||
void OnCreateItem(Player* player, Item* item, uint32 count);
|
void OnCreateItem(Player* player, Item* item, uint32 count);
|
||||||
void OnQuestRewardItem(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 */
|
public: /* GuildScript */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user