From 2f5087d5320995e1e582ae4e1e831f90ff6a08be Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 27 May 2019 20:16:00 +0200 Subject: [PATCH] Core/Player: according to sniffs the out of range group update timer has a fixed timer interval of 5 seconds instead of be send in real time --- src/server/game/Entities/Player/Player.cpp | 9 ++++++++- src/server/game/Entities/Player/Player.h | 1 + src/server/game/Handlers/GroupHandler.cpp | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6a2a5f41888..72ca8d8f211 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -411,6 +411,7 @@ Player::Player(WorldSession* session): Unit(true) _hasValidLFGLeavePoint = false; _archaeology = new Archaeology(this); m_petScalingSynchTimer.Reset(1000); + m_groupUpdateTimer.Reset(5000); _transportSpawnID = 0; } @@ -1357,7 +1358,12 @@ void Player::Update(uint32 p_time) } // group update - SendUpdateToOutOfRangeGroupMembers(); + m_groupUpdateTimer.Update(p_time); + if (m_groupUpdateTimer.Passed()) + { + SendUpdateToOutOfRangeGroupMembers(); + m_groupUpdateTimer.Reset(5000); + } Pet* pet = GetPet(); if (pet && !pet->IsWithinDistInMap(this, GetMap()->GetVisibilityRange()) && !pet->isPossessed()) @@ -23933,6 +23939,7 @@ void Player::SendUpdateToOutOfRangeGroupMembers() { if (m_groupUpdateMask == GROUP_UPDATE_FLAG_NONE) return; + if (Group* group = GetGroup()) group->UpdatePlayerOutOfRange(this); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 08a29fc89cb..f063ff31035 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2762,6 +2762,7 @@ class TC_GAME_API Player : public Unit, public GridObject std::vector PlayerPetDataStore; TimeTrackerSmall m_petScalingSynchTimer; + TimeTrackerSmall m_groupUpdateTimer; uint32 _transportSpawnID; }; diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 3897d999112..aedf598d1f8 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -1194,6 +1194,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke { *data << uint8(0); *data << uint64(0); + *data << uint32(0); } }