From 0626473f8b3710161a75196c1d25e2a5e4efa1c2 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Thu, 16 Nov 2023 07:55:07 +0100 Subject: Core/Packets: fixed SM SMSG_UPDATE_OBJECT packet structure --- src/server/game/Entities/Object/Object.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') 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) -- cgit v1.2.3