diff options
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index edd69688e0e..e7b1db5060f 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -43,6 +43,7 @@ EndScriptData */ #include "RBAC.h" #include "SpellPackets.h" #include "Transport.h" +#include "World.h" #include "WorldSession.h" #include <fstream> #include <limits> @@ -102,6 +103,8 @@ public: { "raidreset", rbac::RBAC_PERM_COMMAND_INSTANCE_UNBIND, false, &HandleDebugRaidResetCommand, "" }, { "neargraveyard", rbac::RBAC_PERM_COMMAND_NEARGRAVEYARD, false, &HandleDebugNearGraveyard, "" }, { "conversation" , rbac::RBAC_PERM_COMMAND_DEBUG_CONVERSATION, false, &HandleDebugConversationCommand, "" }, + { "worldstate" , rbac::RBAC_PERM_COMMAND_DEBUG, false, &HandleDebugWorldStateCommand, "" }, + { "wsexpression" , rbac::RBAC_PERM_COMMAND_DEBUG, false, &HandleDebugWSExpressionCommand, "" }, }; static std::vector<ChatCommand> commandTable = { @@ -1299,6 +1302,72 @@ public: return Conversation::CreateConversation(conversationEntry, target, *target, { target->GetGUID() }) != nullptr; } + + static bool HandleDebugWorldStateCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + char const* worldStateIdStr = strtok((char*)args, " "); + char const* valueStr = args ? strtok(nullptr, " ") : nullptr; + + if (!worldStateIdStr) + return false; + + Player* target = handler->getSelectedPlayerOrSelf(); + + if (!target) + { + handler->SendSysMessage(LANG_PLAYER_NOT_FOUND); + handler->SetSentErrorMessage(true); + return false; + } + + uint32 worldStateId = atoi(worldStateIdStr); + uint32 value = valueStr ? atoi(valueStr) : 0; + + if (value) + { + sWorld->setWorldState(worldStateId, value); + target->SendUpdateWorldState(worldStateId, value); + } + else + handler->PSendSysMessage("Worldstate %u actual value : %u", worldStateId, sWorld->getWorldState(worldStateId)); + + return true; + } + + static bool HandleDebugWSExpressionCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + char const* expressionIdStr = strtok((char*)args, " "); + + if (!expressionIdStr) + return false; + + uint32 expressionId = atoi(expressionIdStr); + Player* target = handler->getSelectedPlayerOrSelf(); + + if (!target) + { + handler->SendSysMessage(LANG_PLAYER_NOT_FOUND); + handler->SetSentErrorMessage(true); + return false; + } + + WorldStateExpressionEntry const* wsExpressionEntry = sWorldStateExpressionStore.LookupEntry(expressionId); + if (!wsExpressionEntry) + return false; + + if (sConditionMgr->IsPlayerMeetingExpression(target, wsExpressionEntry)) + handler->PSendSysMessage("Expression %u meet", expressionId); + else + handler->PSendSysMessage("Expression %u not meet", expressionId); + + return true; + }; }; void AddSC_debug_commandscript() |
