aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorTraesh <traesh@farahlon.com>2018-10-23 16:20:45 +0200
committerShauren <shauren.trinity@gmail.com>2019-08-24 17:13:17 +0200
commit548d79bb06cfba3517347070dfe606748dda55ab (patch)
tree04d48461378ed52a7ac3075b8119e18ab985925b /src/server/scripts
parent11674e2721bf402b6f3b03e9d7dba9a57bbf4c4c (diff)
Core/DataStores: Implemented WorldStateExpression
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp69
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()