diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Packets/InstancePackets.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/InstancePackets.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
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); |