diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.h | 11 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
4 files changed, 25 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d121e5bb70b..9392f8ab924 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23811,10 +23811,10 @@ void Player::ResurrectUsingRequestData() void Player::SetClientControl(Unit* target, bool allowMove) { - WorldPacket data(SMSG_CONTROL_UPDATE, target->GetPackGUID().size()+1); - data << target->GetPackGUID(); - data << uint8(allowMove ? 1 : 0); - GetSession()->SendPacket(&data); + WorldPackets::Movement::ControlUpdate data; + data.Guid = target->GetGUID(); + data.On = allowMove; + GetSession()->SendPacket(data.Write()); if (this != target) SetViewpoint(target, allowMove); diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 65847ccfa6e..c8c26af2be2 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -680,3 +680,12 @@ void WorldPackets::Movement::SummonResponse::Read() _worldPacket >> SummonerGUID; Accept = _worldPacket.ReadBit(); } + +WorldPacket const* WorldPackets::Movement::ControlUpdate::Write() +{ + _worldPacket << Guid; + _worldPacket.WriteBit(On); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 22d1b62a08c..b00d29f5501 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -412,6 +412,17 @@ namespace WorldPackets bool Accept = false; ObjectGuid SummonerGUID; }; + + class ControlUpdate final : public ServerPacket + { + public: + ControlUpdate() : ServerPacket(SMSG_CONTROL_UPDATE, 16 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid Guid; + bool On = false; + }; } ByteBuffer& operator<<(ByteBuffer& data, Movement::MonsterSplineFilterKey const& monsterSplineFilterKey); diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 8ab053f2296..38248b9daf6 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1032,7 +1032,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); |