aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp1
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp36
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h6
3 files changed, 24 insertions, 19 deletions
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index 6cd8acf08dd..ce4a9fa4e66 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -158,7 +158,6 @@ void WorldSession::HandleGameObjectQueryOpcode(WorldPackets::Query::QueryGameObj
stats.Size = gameObjectInfo->size;
stats.Type = gameObjectInfo->type;
stats.UnkString = gameObjectInfo->unk1;
- stats.UnkInt32 = gameObjectInfo->unkInt32;
stats.Expansion = 0;
}
else
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 84792b3c21e..e80312c7adb 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -235,29 +235,31 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write()
if (Allow)
{
- _worldPacket << Stats.UnkInt32;
- if (Stats.UnkInt32 == 0)
- return &_worldPacket;
+ uint32 dataSize = Stats.GetDataSize();
- _worldPacket << Stats.Type;
- _worldPacket << Stats.DisplayID;
- for (int8 i = 0; i < 4; i++)
- _worldPacket << Stats.Name[i];
+ _worldPacket << uint32(dataSize);
+ if (dataSize)
+ {
+ _worldPacket << Stats.Type;
+ _worldPacket << Stats.DisplayID;
+ for (int8 i = 0; i < 4; i++)
+ _worldPacket << Stats.Name[i];
- _worldPacket << Stats.IconName;
- _worldPacket << Stats.CastBarCaption;
- _worldPacket << Stats.UnkString;
+ _worldPacket << Stats.IconName;
+ _worldPacket << Stats.CastBarCaption;
+ _worldPacket << Stats.UnkString;
- for (uint32 i = 0; i < MAX_GAMEOBJECT_DATA; i++)
- _worldPacket << Stats.Data[i];
+ for (uint32 i = 0; i < MAX_GAMEOBJECT_DATA; i++)
+ _worldPacket << Stats.Data[i];
- _worldPacket << Stats.Size;
+ _worldPacket << Stats.Size;
- _worldPacket << uint8(Stats.QuestItems.size());
- for (int32 questItem : Stats.QuestItems)
- _worldPacket << questItem;
+ _worldPacket << uint8(Stats.QuestItems.size());
+ for (int32 questItem : Stats.QuestItems)
+ _worldPacket << questItem;
- _worldPacket << Stats.Expansion;
+ _worldPacket << Stats.Expansion;
+ }
}
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 749ff1343a2..211f0cbf46b 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -227,13 +227,17 @@ namespace WorldPackets
std::string IconName;
std::string CastBarCaption;
std::string UnkString;
- int32 UnkInt32 = 0;
uint32 Type = 0;
uint32 DisplayID = 0;
uint32 Data[MAX_GAMEOBJECT_DATA];
float Size = 0.0f;
std::vector<int32> QuestItems;
uint32 Expansion = 0;
+
+ size_t GetDataSize() const
+ {
+ return sizeof(Type) + sizeof(DisplayID) + (Name->length() + (4 * 1)) + (IconName.size() + 1) + (CastBarCaption.size() + 1) + (UnkString.size() + 1) + sizeof(Data) + sizeof(Size) + sizeof(uint8) + (QuestItems.size() * sizeof(uint32)) + sizeof(Expansion);
+ }
};
class QueryGameObjectResponse final : public ServerPacket