diff options
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 84e3cf4c23c..d9fada1d76c 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -34,6 +34,7 @@ EndScriptData */ #include "Transport.h" #include "Language.h" #include "MovementPackets.h" +#include "ScenePackets.h" #include <fstream> @@ -64,6 +65,7 @@ public: { "sellerror", rbac::RBAC_PERM_COMMAND_DEBUG_SEND_SELLERROR, false, &HandleDebugSendSellErrorCommand, "", NULL }, { "setphaseshift", rbac::RBAC_PERM_COMMAND_DEBUG_SEND_SETPHASESHIFT, false, &HandleDebugSendSetPhaseShiftCommand, "", NULL }, { "spellfail", rbac::RBAC_PERM_COMMAND_DEBUG_SEND_SPELLFAIL, false, &HandleDebugSendSpellFailCommand, "", NULL }, + { "playscene", rbac::RBAC_PERM_COMMAND_DEBUG_SEND_PLAYSCENE, false, &HandleDebugSendPlaySceneCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand debugCommandTable[] = @@ -1429,6 +1431,49 @@ public: handler->SendSysMessage("Target is not phased"); return true; } + + static bool HandleDebugSendPlaySceneCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + int32 SceneID = 0; + int32 PlaybackFlags = 0; + int32 SceneInstanceID = 0; + int32 SceneScriptPackageID = 0; + + char* a = strtok((char*)args, " "); + char* b = strtok(NULL, " "); + char* c = strtok(NULL, " "); + char* d = strtok(NULL, " "); + + if (!a || !b || !c || !d) + return false; + + if (a) + SceneID = atoi(a); + if (b) + PlaybackFlags = atoi(b); + if (c) + SceneInstanceID = atoi(c); + if (d) + SceneScriptPackageID = atoi(d); + + Player* me = handler->GetSession()->GetPlayer(); + + WorldPackets::Scenes::PlayScene packet; + packet.SceneID = SceneID; + packet.PlaybackFlags = PlaybackFlags; + packet.SceneInstanceID = SceneInstanceID; + packet.SceneScriptPackageID = SceneScriptPackageID; + packet.TransportGUID = me->GetTransGUID(); + packet.Location = me->GetPosition(); + handler->GetSession()->SendPacket(packet.Write()); + + TC_LOG_DEBUG("network", "Sent SMSG_PLAY_SCENE to %s, SceneID: %d, PlaybackFlags: %d, SceneInstanceID: %d, SceneScriptPackageID: %d", me->GetName().c_str(), SceneID, PlaybackFlags, SceneInstanceID, SceneScriptPackageID); + + return true; + } }; void AddSC_debug_commandscript() |
