diff options
| author | Traesh <traesh@farahlon.com> | 2018-10-23 16:20:45 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-08-24 17:13:17 +0200 |
| commit | 548d79bb06cfba3517347070dfe606748dda55ab (patch) | |
| tree | 04d48461378ed52a7ac3075b8119e18ab985925b /src/server/scripts | |
| parent | 11674e2721bf402b6f3b03e9d7dba9a57bbf4c4c (diff) | |
Core/DataStores: Implemented WorldStateExpression
Diffstat (limited to 'src/server/scripts')
| -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() |
