diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 12 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
4 files changed, 34 insertions, 12 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index cd9303828a4..1b26f339c5e 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -411,16 +411,16 @@ inline void Battleground::_ProcessJoin(uint32 diff) // Send packet every 10 seconds until the 2nd field reach 0 if (m_CountdownTimer >= 10000) { - uint32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; + int32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; - WorldPacket data(SMSG_START_TIMER, 4+4+4); - data << uint32(0); // unk - data << uint32(countdownMaxForBGType - (GetElapsedTime() / 1000)); - data << uint32(countdownMaxForBGType); + WorldPackets::Misc::StartTimer startTimer; + startTimer.Type = 0; + startTimer.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / 1000); + startTimer.TotalTime = countdownMaxForBGType; for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - player->SendDirectMessage(&data); + player->SendDirectMessage(startTimer.Write()); m_CountdownTimer = 0; } @@ -1088,11 +1088,12 @@ void Battleground::AddPlayer(Player* player) player->CastSpell(player, SPELL_PREPARATION, true); // reduces all mana cost of spells. int32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; - WorldPacket data(SMSG_START_TIMER, 4+4+4); - data << uint32(0); // unk - data << uint32(countdownMaxForBGType - (GetElapsedTime() / 1000)); - data << uint32(countdownMaxForBGType); - player->SendDirectMessage(&data); + + WorldPackets::Misc::StartTimer startTimer; + startTimer.Type = 0; + startTimer.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / 1000); + startTimer.TotalTime = countdownMaxForBGType; + player->SendDirectMessage(startTimer.Write()); } } diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index fd9c0382421..a1bd2a25598 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -699,3 +699,12 @@ void WorldPackets::Misc::CloseInteraction::Read() { _worldPacket >> SourceGuid; } + +WorldPacket const* WorldPackets::Misc::StartTimer::Write() +{ + _worldPacket << int32(TimeLeft); + _worldPacket << int32(TotalTime); + _worldPacket << int32(Type); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 3b1118b0d1f..683340529d8 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -902,6 +902,18 @@ namespace WorldPackets ObjectGuid SourceGuid; }; + + class StartTimer final : public ServerPacket + { + public: + StartTimer() : ServerPacket(SMSG_START_TIMER, 12) { } + + WorldPacket const* Write() override; + + int32 Type = 0; + int32 TimeLeft = 0; + int32 TotalTime = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index cd566b41876..076e0c55d08 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1821,7 +1821,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMERS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_LOOT_ROLL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |