Core/DataStores: Implemented WorldStateExpression

This commit is contained in:
Traesh
2018-10-23 16:20:45 +02:00
committed by Shauren
parent 11674e2721
commit 548d79bb06
13 changed files with 584 additions and 9 deletions

View File

@@ -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()