diff options
author | Ovah <dreadkiller@gmx.de> | 2019-05-27 21:37:47 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-08 23:22:12 +0100 |
commit | 0d433b1bc89bf26585688d8041da500ff8dae364 (patch) | |
tree | d14105ab3b7ce5907510ac4e50209ab6a863d407 /src | |
parent | 6b2e40257a5ca5b6b07507ecbe194f0392fbd375 (diff) |
Core/Players: out of range group updates will now get sent every 5 seconds instead of as soon as they are available to reflect retail behaivior. (#23323)
* according to sniffs the group update packet for out of range members has a fixed 5 seconds interval instead of spaming packets like crazy for example when updating positions. On 4.x and above this will fix a very nasty and ugly fps drop
* validated with 4.3.4 and 3.3.5 sniffs
(cherry picked from commit 635cefc67e25c4318d67bf557b66958081c02ac4)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 83b31c474ec..8a00b028419 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -348,6 +348,8 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) for (uint8 i = 0; i < MAX_CUF_PROFILES; ++i) _CUFProfiles[i] = nullptr; + m_groupUpdateTimer.Reset(5000); + _advancedCombatLoggingEnabled = false; _restMgr = std::make_unique<RestMgr>(this); @@ -1209,7 +1211,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()) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 53507fd4182..f12bdd3141c 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -3005,6 +3005,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> std::array<std::unique_ptr<CUFProfile>, MAX_CUF_PROFILES> _CUFProfiles; + TimeTrackerSmall m_groupUpdateTimer; + private: // internal common parts for CanStore/StoreItem functions InventoryResult CanStoreItem_InSpecificSlot(uint8 bag, uint8 slot, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool swap, Item* pSrcItem) const; |