chore(PlayerScript/Hook) : Add CanSetTradeItem Hook in PlayerScript (#18583)

* chore(PlayerScript/Hook) : Add CanSetTradeItem Hook in PlayerScript

* Allowing non traded slots

* Fix typo and codestyle
This commit is contained in:
Elmsroth
2024-03-27 01:28:37 +01:00
committed by GitHub
parent 5b8bc792b8
commit b1cf830009
4 changed files with 33 additions and 0 deletions

View File

@@ -1508,6 +1508,19 @@ bool ScriptMgr::CanInitTrade(Player* player, Player* target)
return true;
}
bool ScriptMgr::CanSetTradeItem(Player* player, Item* tradedItem, uint8 tradeSlot)
{
auto ret = IsValidBoolScript<PlayerScript>([&](PlayerScript* script)
{
return !script->CanSetTradeItem(player, tradedItem, tradeSlot);
});
if (ret && *ret)
return false;
return true;
}
void ScriptMgr::OnSetServerSideVisibility(Player* player, ServerSideVisibilityType& type, AccountTypes& sec)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)

View File

@@ -421,6 +421,16 @@ public:
[[nodiscard]] virtual bool CanInitTrade(Player* /*player*/, Player* /*target*/) { return true; }
/**
* @brief This hook called just before finishing the handling of the action of a player setting an item in a trade slot
*
* @param player Contains information about the trade initiator Player
* @param tradedItem Contains information about the item set in the trade slot
*
* @return True if you want to continue setting the item in the trade slot, false if you want to cancel the trade
*/
[[nodiscard]] virtual bool CanSetTradeItem(Player* /*player*/, Item* /*tradedItem*/, uint8 /*tradeSlot*/) { return true; }
virtual void OnSetServerSideVisibility(Player* /*player*/, ServerSideVisibilityType& /*type*/, AccountTypes& /*sec*/) { }
virtual void OnSetServerSideVisibilityDetect(Player* /*player*/, ServerSideVisibilityType& /*type*/, AccountTypes& /*sec*/) { }