diff --git a/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp b/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp index b30b9e601..0ab2f297f 100644 --- a/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp @@ -21,24 +21,21 @@ void ScriptMgr::OnHandleDevCommand(Player* player, bool& enable) { - ExecuteScript([&](AllCommandScript* script) - { - script->OnHandleDevCommand(player, enable); - }); + CALL_ENABLED_HOOKS(AllCommandScript, ALLCOMMANDHOOK_ON_HANDLE_DEV_COMMAND, script->OnHandleDevCommand(player, enable)); } bool ScriptMgr::CanExecuteCommand(ChatHandler& handler, std::string_view cmdStr) { - auto ret = IsValidBoolScript([&](AllCommandScript* script) - { - return !script->CanExecuteCommand(handler, cmdStr); - }); - - return ReturnValidBool(ret); + CALL_ENABLED_BOOLEAN_HOOKS(AllCommandScript, ALLCOMMANDHOOK_CAN_EXECUTE_COMMAND, !script->CanExecuteCommand(handler, cmdStr)); } -AllCommandScript::AllCommandScript(const char* name) - : ScriptObject(name) +AllCommandScript::AllCommandScript(const char* name, std::vector enabledHooks) + : ScriptObject(name, ALLCOMMANDHOOK_END) { - ScriptRegistry::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < ALLCOMMANDHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry::AddScript(this, std::move(enabledHooks)); } diff --git a/src/server/game/Scripting/ScriptDefines/AllCommandScript.h b/src/server/game/Scripting/ScriptDefines/AllCommandScript.h index 68d582490..509822e7a 100644 --- a/src/server/game/Scripting/ScriptDefines/AllCommandScript.h +++ b/src/server/game/Scripting/ScriptDefines/AllCommandScript.h @@ -19,11 +19,19 @@ #define SCRIPT_OBJECT_ALL_COMMAND_SCRIPT_H_ #include "ScriptObject.h" +#include + +enum AllCommandHook +{ + ALLCOMMANDHOOK_ON_HANDLE_DEV_COMMAND, + ALLCOMMANDHOOK_CAN_EXECUTE_COMMAND, + ALLCOMMANDHOOK_END +}; class AllCommandScript : public ScriptObject { protected: - AllCommandScript(const char* name); + AllCommandScript(const char* name, std::vector enabledHooks = std::vector()); public: [[nodiscard]] bool IsDatabaseBound() const override { return false; }