mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 09:44:45 +01:00
Core/DataStores: Implemented WorldStateExpression
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user