mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Scenes: Add support for encrypted scenes
This commit is contained in:
1
sql/updates/world/master/2021_02_27_07_world.sql
Normal file
1
sql/updates/world/master/2021_02_27_07_world.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE `scene_template` ADD `Encrypted` tinyint(1) unsigned NOT NULL DEFAULT '0' AFTER `ScriptPackageID`;
|
||||
@@ -62,6 +62,7 @@ uint32 SceneMgr::PlaySceneByTemplate(SceneTemplate const* sceneTemplate, Positio
|
||||
playScene.SceneScriptPackageID = sceneTemplate->ScenePackageId;
|
||||
playScene.Location = *position;
|
||||
playScene.TransportGUID = GetPlayer()->GetTransGUID();
|
||||
playScene.Encrypted = sceneTemplate->Encrypted;
|
||||
|
||||
GetPlayer()->SendDirectMessage(playScene.Write());
|
||||
|
||||
@@ -78,6 +79,7 @@ uint32 SceneMgr::PlaySceneByPackageId(uint32 sceneScriptPackageId, uint32 playba
|
||||
sceneTemplate.SceneId = 0;
|
||||
sceneTemplate.ScenePackageId = sceneScriptPackageId;
|
||||
sceneTemplate.PlaybackFlags = playbackflags;
|
||||
sceneTemplate.Encrypted = false;
|
||||
sceneTemplate.ScriptId = 0;
|
||||
|
||||
return PlaySceneByTemplate(&sceneTemplate, position);
|
||||
|
||||
@@ -10426,7 +10426,7 @@ void ObjectMgr::LoadSceneTemplates()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
_sceneTemplateStore.clear();
|
||||
|
||||
QueryResult templates = WorldDatabase.Query("SELECT SceneId, Flags, ScriptPackageID, ScriptName FROM scene_template");
|
||||
QueryResult templates = WorldDatabase.Query("SELECT SceneId, Flags, ScriptPackageID, Encrypted, ScriptName FROM scene_template");
|
||||
|
||||
if (!templates)
|
||||
{
|
||||
@@ -10445,7 +10445,8 @@ void ObjectMgr::LoadSceneTemplates()
|
||||
sceneTemplate.SceneId = sceneId;
|
||||
sceneTemplate.PlaybackFlags = fields[1].GetUInt32();
|
||||
sceneTemplate.ScenePackageId = fields[2].GetUInt32();
|
||||
sceneTemplate.ScriptId = sObjectMgr->GetScriptId(fields[3].GetCString());
|
||||
sceneTemplate.Encrypted = fields[3].GetUInt8() != 0;
|
||||
sceneTemplate.ScriptId = sObjectMgr->GetScriptId(fields[4].GetCString());
|
||||
|
||||
} while (templates->NextRow());
|
||||
|
||||
|
||||
@@ -788,10 +788,11 @@ typedef std::unordered_map<uint32, std::string> RealmNameContainer;
|
||||
|
||||
struct SceneTemplate
|
||||
{
|
||||
uint32 SceneId;
|
||||
uint32 PlaybackFlags;
|
||||
uint32 ScenePackageId;
|
||||
uint32 ScriptId;
|
||||
uint32 SceneId = 0;
|
||||
uint32 PlaybackFlags = 0;
|
||||
uint32 ScenePackageId = 0;
|
||||
bool Encrypted = false;
|
||||
uint32 ScriptId = 0;
|
||||
};
|
||||
|
||||
typedef std::unordered_map<uint32, SceneTemplate> SceneTemplateContainer;
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
WorldPacket const* WorldPackets::Scenes::PlayScene::Write()
|
||||
{
|
||||
_worldPacket << int32(SceneID);
|
||||
_worldPacket << int32(PlaybackFlags);
|
||||
_worldPacket << int32(SceneInstanceID);
|
||||
_worldPacket << uint32(PlaybackFlags);
|
||||
_worldPacket << uint32(SceneInstanceID);
|
||||
_worldPacket << int32(SceneScriptPackageID);
|
||||
_worldPacket << TransportGUID;
|
||||
_worldPacket << Location.PositionXYZOStream();
|
||||
_worldPacket.WriteBit(PerformTactCallbacks);
|
||||
_worldPacket.WriteBit(Encrypted);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
return &_worldPacket;
|
||||
|
||||
@@ -33,12 +33,12 @@ namespace WorldPackets
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
int32 SceneID = 0;
|
||||
int32 PlaybackFlags = 0;
|
||||
int32 SceneInstanceID = 0;
|
||||
uint32 PlaybackFlags = 0;
|
||||
uint32 SceneInstanceID = 0;
|
||||
int32 SceneScriptPackageID = 0;
|
||||
ObjectGuid TransportGUID;
|
||||
Position Location;
|
||||
bool PerformTactCallbacks = false;
|
||||
bool Encrypted = false;
|
||||
};
|
||||
|
||||
class TC_GAME_API CancelScene final : public ServerPacket
|
||||
|
||||
Reference in New Issue
Block a user