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
+7
View File
@@ -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;
+5
View File
@@ -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)
{ {
+4
View File
@@ -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 */