aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRat <gmstreetrat@gmail.com>2015-04-08 20:37:30 +0200
committerRat <gmstreetrat@gmail.com>2015-04-08 20:37:30 +0200
commite53f89d8364e98843cb24c45784bf8930c054548 (patch)
treef99f4a432230f715ca73d18574a9f2681542b5d3 /src
parent01d91fa3cdfd0ce57c863210a3ca0c650bac81ac (diff)
Core/Scenes: added .debug send playscene command for testing purposes
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Accounts/RBAC.h2
-rw-r--r--src/server/game/Server/Packets/ScenePackets.cpp30
-rw-r--r--src/server/game/Server/Packets/ScenePackets.h44
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp45
5 files changed, 121 insertions, 2 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index e700a8b1708..edd63404543 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -596,7 +596,7 @@ enum RBACPermissions
RBAC_PERM_COMMAND_RELOAD_SMART_SCRIPTS = 689,
RBAC_PERM_COMMAND_RELOAD_SPELL_REQUIRED = 690,
RBAC_PERM_COMMAND_RELOAD_SPELL_AREA = 691,
- // REUSE
+ RBAC_PERM_COMMAND_DEBUG_SEND_PLAYSCENE = 692,
RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP = 693,
RBAC_PERM_COMMAND_RELOAD_SPELL_LEARN_SPELL = 694,
RBAC_PERM_COMMAND_RELOAD_SPELL_LOOT_TEMPLATE = 695,
diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp
new file mode 100644
index 00000000000..d265107fc5e
--- /dev/null
+++ b/src/server/game/Server/Packets/ScenePackets.cpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScenePackets.h"
+
+WorldPacket const* WorldPackets::Scenes::PlayScene::Write()
+{
+ _worldPacket << SceneID;
+ _worldPacket << PlaybackFlags;
+ _worldPacket << SceneInstanceID;
+ _worldPacket << SceneScriptPackageID;
+ _worldPacket << TransportGUID;
+ _worldPacket << Location.PositionXYZOStream();
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h
new file mode 100644
index 00000000000..358e68e3dc3
--- /dev/null
+++ b/src/server/game/Server/Packets/ScenePackets.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ScenePackets_h__
+#define ScenePackets_h__
+
+#include "Packet.h"
+
+namespace WorldPackets
+{
+ namespace Scenes
+ {
+ class PlayScene final : public ServerPacket
+ {
+ public:
+ PlayScene() : ServerPacket(SMSG_PLAY_SCENE, 34) { }
+
+ WorldPacket const* Write() override;
+
+ int32 SceneID = 0;
+ int32 PlaybackFlags = 0;
+ int32 SceneInstanceID = 0;
+ int32 SceneScriptPackageID = 0;
+ ObjectGuid TransportGUID;
+ Position Location;
+ };
+ }
+}
+
+#endif // ScenePackets_h__
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index e1f535f3b87..87849d0f144 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1478,7 +1478,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_OBJECT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ONE_SHOT_ANIM_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SCENE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SCENE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
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()