diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Groups/Group.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Groups/Group.h | 4 | ||||
-rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 24 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
7 files changed, 57 insertions, 15 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index aad83013be1..29979976f28 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -26869,15 +26869,15 @@ uint32 Player::DoRandomRoll(uint32 minimum, uint32 maximum) uint32 roll = urand(minimum, maximum); - WorldPacket data(MSG_RANDOM_ROLL, 4 + 4 + 4 + 8); - data << uint32(minimum); - data << uint32(maximum); - data << uint32(roll); - data << GetGUID(); + WorldPackets::Misc::RandomRoll randomRoll; + randomRoll.Min = minimum; + randomRoll.Max = maximum; + randomRoll.Result = roll; + randomRoll.Roller = GetGUID(); if (Group* group = GetGroup()) - group->BroadcastPacket(&data, false); + group->BroadcastPacket(randomRoll.Write(), false); else - SendDirectMessage(&data); + SendDirectMessage(randomRoll.Write()); return roll; } diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 55072d4df9e..3d2e1ed4599 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1756,7 +1756,7 @@ void Group::UpdatePlayerOutOfRange(Player* player) } } -void Group::BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group /*= -1*/, ObjectGuid ignoredPlayer /*= ObjectGuid::Empty*/) +void Group::BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group /*= -1*/, ObjectGuid ignoredPlayer /*= ObjectGuid::Empty*/) { for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { @@ -1769,7 +1769,7 @@ void Group::BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int } } -void Group::BroadcastReadyCheck(WorldPacket* packet) +void Group::BroadcastReadyCheck(WorldPacket const* packet) { for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 23cafd7d84e..ff12ddb7e79 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -292,8 +292,8 @@ class TC_GAME_API Group worker(itr->GetSource()); } - void BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty); - void BroadcastReadyCheck(WorldPacket* packet); + void BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty); + void BroadcastReadyCheck(WorldPacket const* packet); void OfflineReadyCheck(); /*********************************************************/ diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 51baaf6616e..2597667afff 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -22,6 +22,7 @@ #include "Group.h" #include "GroupMgr.h" #include "Log.h" +#include "MiscPackets.h" #include "ObjectAccessor.h" #include "ObjectMgr.h" #include "Pet.h" @@ -516,11 +517,11 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData) GetPlayer()->GetGroup()->BroadcastPacket(&data, true, -1, GetPlayer()->GetGUID()); } -void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData) +void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet) { uint32 minimum, maximum; - recvData >> minimum; - recvData >> maximum; + minimum = packet.Min; + maximum = packet.Max; /** error handling **/ if (minimum > maximum || maximum > 10000) // < 32768 for urand call diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index dd75cafc3b4..29dd80ffdec 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -156,6 +156,22 @@ WorldPacket const* WorldPackets::Misc::OverrideLight::Write() return &_worldPacket; } +void WorldPackets::Misc::RandomRollClient::Read() +{ + _worldPacket >> Min; + _worldPacket >> Max; +} + +WorldPacket const* WorldPackets::Misc::RandomRoll::Write() +{ + _worldPacket << uint32(Min); + _worldPacket << uint32(Max); + _worldPacket << uint32(Result); + _worldPacket << Roller; + + return &_worldPacket; +} + WorldPacket const* WorldPackets::Misc::UITime::Write() { _worldPacket << uint32(Time); diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index bd5726d3249..6683cdc7588 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -261,6 +261,30 @@ namespace WorldPackets int32 OverrideLightID = 0; }; + class RandomRollClient final : public ClientPacket + { + public: + RandomRollClient(WorldPacket&& packet) : ClientPacket(MSG_RANDOM_ROLL, std::move(packet)) { } + + void Read() override; + + uint32 Min = 0; + uint32 Max = 0; + }; + + class RandomRoll final : public ServerPacket + { + public: + RandomRoll() : ServerPacket(MSG_RANDOM_ROLL, 4 + 4 + 4 + 8) { } + + WorldPacket const* Write() override; + + uint32 Min = 0; + uint32 Max = 0; + uint32 Result = 0; + ObjectGuid Roller; + }; + class UITime final : public ServerPacket { public: diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index f121805c106..7ff716f838d 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -140,6 +140,7 @@ namespace WorldPackets class CompleteMovie; class NextCinematicCamera; class OpeningCinematic; + class RandomRollClient; class WorldTeleport; } @@ -941,7 +942,7 @@ class TC_GAME_API WorldSession void HandleWardenDataOpcode(WorldPacket& recvData); void HandleWorldTeleportOpcode(WorldPackets::Misc::WorldTeleport& worldTeleport); void HandleMinimapPingOpcode(WorldPacket& recvData); - void HandleRandomRollOpcode(WorldPacket& recvData); + void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet); void HandleFarSightOpcode(WorldPacket& recvData); void HandleSetDungeonDifficultyOpcode(WorldPacket& recvData); void HandleSetRaidDifficultyOpcode(WorldPacket& recvData); |