aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/game/Maps/Map.cpp7
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp8
-rw-r--r--src/server/game/Server/Packets/InstancePackets.h10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
5 files changed, 26 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 19f74c3adff..362a3e98136 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -18565,9 +18565,9 @@ void Player::BindToInstance()
if (!mapSave) //it seems sometimes mapSave is NULL, but I did not check why
return;
- WorldPacket data(SMSG_INSTANCE_SAVE_CREATED, 4);
- data << uint32(0);
- GetSession()->SendPacket(&data);
+ WorldPackets::Instance::InstanceSaveCreated data;
+ data.Gm = IsGameMaster();
+ GetSession()->SendPacket(data.Write());
BindToInstance(mapSave, true);
GetSession()->SendCalendarRaidLockout(mapSave, true);
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index cd383763c4f..07c20ac599e 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -26,6 +26,7 @@
#include "GridNotifiersImpl.h"
#include "GridStates.h"
#include "Group.h"
+#include "InstancePackets.h"
#include "InstanceScript.h"
#include "MapInstanced.h"
#include "MiscPackets.h"
@@ -3220,9 +3221,9 @@ void InstanceMap::PermBindAllPlayers(Player* source)
if (!bind || !bind->perm)
{
player->BindToInstance(save, true);
- WorldPacket data(SMSG_INSTANCE_SAVE_CREATED, 4);
- data << uint32(0);
- player->GetSession()->SendPacket(&data);
+ WorldPackets::Instance::InstanceSaveCreated data;
+ data.Gm = player->IsGameMaster();
+ player->GetSession()->SendPacket(data.Write());
player->GetSession()->SendCalendarRaidLockout(save, true);
}
diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp
index 7cf46454533..18533ad9edb 100644
--- a/src/server/game/Server/Packets/InstancePackets.cpp
+++ b/src/server/game/Server/Packets/InstancePackets.cpp
@@ -72,3 +72,11 @@ WorldPacket const* WorldPackets::Instance::InstanceResetFailed::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Instance::InstanceSaveCreated::Write()
+{
+ _worldPacket.WriteBit(Gm);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h
index bfc14dddc5b..ebcf8f5f0cf 100644
--- a/src/server/game/Server/Packets/InstancePackets.h
+++ b/src/server/game/Server/Packets/InstancePackets.h
@@ -105,6 +105,16 @@ namespace WorldPackets
WorldPacket const* Write() override { return &_worldPacket; }
};
+
+ class InstanceSaveCreated final : public ServerPacket
+ {
+ public:
+ InstanceSaveCreated() : ServerPacket(SMSG_INSTANCE_SAVE_CREATED, 1) { }
+
+ WorldPacket const* Write() override;
+
+ bool Gm = false;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index bc2df0d7956..bcf16c9ef39 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1247,7 +1247,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);