From ac2c1c51917e025cde0b01eb2c86fd32f065185b Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 4 Mar 2021 13:58:17 -0500 Subject: [PATCH] Core/Scenes: Add support for encrypted scenes Port From (https://github.com/TrinityCore/TrinityCore/commit/3e3b93b509b7546894dd098ae68d4f416f572a4e) --- Source/Game/Entities/Player/SceneMgr.cs | 2 ++ Source/Game/Globals/ObjectManager.cs | 6 ++++-- Source/Game/Networking/Packets/ScenePackets.cs | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Source/Game/Entities/Player/SceneMgr.cs b/Source/Game/Entities/Player/SceneMgr.cs index 48be1a4c0..b679c75e5 100644 --- a/Source/Game/Entities/Player/SceneMgr.cs +++ b/Source/Game/Entities/Player/SceneMgr.cs @@ -68,6 +68,7 @@ namespace Game.Entities playScene.SceneScriptPackageID = sceneTemplate.ScenePackageId; playScene.Location = position; playScene.TransportGUID = GetPlayer().GetTransGUID(); + playScene.Encrypted = sceneTemplate.Encrypted; GetPlayer().SendPacket(playScene); @@ -84,6 +85,7 @@ namespace Game.Entities sceneTemplate.SceneId = 0; sceneTemplate.ScenePackageId = sceneScriptPackageId; sceneTemplate.PlaybackFlags = playbackflags; + sceneTemplate.Encrypted = false; sceneTemplate.ScriptId = 0; return PlaySceneByTemplate(sceneTemplate, position); diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 897bdb6c1..0eda283be 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -9212,7 +9212,7 @@ namespace Game uint oldMSTime = Time.GetMSTime(); _sceneTemplateStorage.Clear(); - SQLResult result = DB.World.Query("SELECT SceneId, Flags, ScriptPackageID, ScriptName FROM scene_template"); + SQLResult result = DB.World.Query("SELECT SceneId, Flags, ScriptPackageID, Encrypted, ScriptName FROM scene_template"); if (result.IsEmpty()) { Log.outInfo(LogFilter.ServerLoading, "Loaded 0 scene templates. DB table `scene_template` is empty."); @@ -9227,7 +9227,8 @@ namespace Game sceneTemplate.SceneId = sceneId; sceneTemplate.PlaybackFlags = (SceneFlags)result.Read(1); sceneTemplate.ScenePackageId = result.Read(2); - sceneTemplate.ScriptId = GetScriptId(result.Read(3)); + sceneTemplate.Encrypted = result.Read(3) != 0; + sceneTemplate.ScriptId = GetScriptId(result.Read(4)); _sceneTemplateStorage[sceneId] = sceneTemplate; @@ -11195,6 +11196,7 @@ namespace Game public uint SceneId; public SceneFlags PlaybackFlags; public uint ScenePackageId; + public bool Encrypted; public uint ScriptId; } diff --git a/Source/Game/Networking/Packets/ScenePackets.cs b/Source/Game/Networking/Packets/ScenePackets.cs index f5e471be9..039237365 100644 --- a/Source/Game/Networking/Packets/ScenePackets.cs +++ b/Source/Game/Networking/Packets/ScenePackets.cs @@ -32,7 +32,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(SceneScriptPackageID); _worldPacket.WritePackedGuid(TransportGUID); _worldPacket.WriteXYZO(Location); - _worldPacket.WriteBit(PerformTactCallbacks); + _worldPacket.WriteBit(Encrypted); _worldPacket.FlushBits(); } @@ -42,7 +42,7 @@ namespace Game.Networking.Packets public uint SceneScriptPackageID; public ObjectGuid TransportGUID; public Position Location; - public bool PerformTactCallbacks; + public bool Encrypted; } class CancelScene : ServerPacket