diff options
| author | Ovahlord <dreadkiller@gmx.de> | 2023-11-16 07:55:07 +0100 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2023-11-16 07:55:07 +0100 |
| commit | 0626473f8b3710161a75196c1d25e2a5e4efa1c2 (patch) | |
| tree | 0246b96e6ad2f6773ff2b1c79614e32f56abcdac /src | |
| parent | a3ade798993c04ee92cabdcca42deacbee427e9c (diff) | |
Core/Packets: fixed SM SMSG_UPDATE_OBJECT packet structure
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 2130605f1d6..0f1ede2fec5 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -726,9 +726,11 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe bool HasSceneInstanceIDs = !player->GetSceneMgr().GetSceneTemplateByInstanceMap().empty(); bool HasRuneState = ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; + bool HasActionButtons = player->IsLoading(); data->WriteBit(HasSceneInstanceIDs); data->WriteBit(HasRuneState); + data->WriteBit(HasActionButtons); data->FlushBits(); if (HasSceneInstanceIDs) { @@ -747,6 +749,18 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe for (uint32 i = 0; i < maxRunes; ++i) *data << uint8((baseCd - float(player->GetRuneCooldown(i))) / baseCd * 255); } + if (HasActionButtons) + { + ActionButtonList const& actionButtonList = player->GetActionButtons(); + for (uint8 i = 0; i < MAX_ACTION_BUTTONS; ++i) + { + auto itr = actionButtonList.find(i); + if (itr != actionButtonList.end() && itr->second.uState != ACTIONBUTTON_DELETED) + *data << uint32(itr->second.GetAction()); + else + *data << uint32(0); + } + } } if (flags.Conversation) |
