diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-08-06 22:08:21 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-08-06 22:08:21 +0200 |
commit | e240e5936afdd7ec88157bc0f64deef792b04848 (patch) | |
tree | 0f6c72d953d2afc99a3438b2fe7187f51540386a | |
parent | 3c28573d02db98ae8d7a41e04b9715da0556836b (diff) |
Core/PacketIO: Name previously unknown fields in lfg packets
-rw-r--r-- | src/server/game/Handlers/LFGHandler.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Server/Packets/LFGPackets.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/LFGPackets.h | 3 |
3 files changed, 17 insertions, 9 deletions
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp index 621ad554277..92229bea5b9 100644 --- a/src/server/game/Handlers/LFGHandler.cpp +++ b/src/server/game/Handlers/LFGHandler.cpp @@ -317,12 +317,12 @@ void WorldSession::SendLfgUpdatePlayer(lfg::LfgUpdateData const& updateData) GetPlayerInfo().c_str(), updateData.updateType); WorldPacket data(SMSG_LFG_UPDATE_PLAYER, 1 + 1 + (size > 0 ? 1 : 0) * (1 + 1 + 1 + 1 + size * 4 + updateData.comment.length())); data << uint8(updateData.updateType); // Lfg Update type - data << uint8(size > 0); // Extra info + data << uint8(size > 0); // Is joined in LFG if (size) { data << uint8(queued); // Join the queue - data << uint8(0); // unk - Always 0 - data << uint8(0); // unk - Always 0 + data << uint8(0); // NoPartialClear + data << uint8(0); // Achievements data << uint8(size); for (lfg::LfgDungeonSet::const_iterator it = updateData.dungeons.begin(); it != updateData.dungeons.end(); ++it) @@ -358,15 +358,15 @@ void WorldSession::SendLfgUpdateParty(const lfg::LfgUpdateData& updateData) GetPlayerInfo().c_str(), updateData.updateType); WorldPacket data(SMSG_LFG_UPDATE_PARTY, 1 + 1 + (size > 0 ? 1 : 0) * (1 + 1 + 1 + 1 + 1 + size * 4 + updateData.comment.length())); data << uint8(updateData.updateType); // Lfg Update type - data << uint8(size > 0); // Extra info + data << uint8(size > 0); // Is joined in LFG if (size) { data << uint8(join); // LFG Join data << uint8(queued); // Join the queue - data << uint8(0); // unk - Always 0 - data << uint8(0); // unk - Always 0 + data << uint8(0); // NoPartialClear + data << uint8(0); // Achievements for (uint8 i = 0; i < 3; ++i) - data << uint8(0); // unk - Always 0 + data << uint8(0); // Needs data << uint8(size); for (lfg::LfgDungeonSet::const_iterator it = updateData.dungeons.begin(); it != updateData.dungeons.end(); ++it) diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index a1e3e5e146a..12ac90845ca 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -20,10 +20,15 @@ void WorldPackets::LFG::LFGJoin::Read() { _worldPacket >> Roles; - _worldPacket.read_skip<uint16>(); + _worldPacket >> NoPartialClear; + _worldPacket >> Achievements; Slots.resize(_worldPacket.read<uint8>()); for (uint32& slot : Slots) _worldPacket >> slot; - _worldPacket.read_skip<uint32>(); + + _worldPacket.read_skip<uint8>(); // Needs count, hardcoded to 3 in client + for (uint8& needs : Needs) + _worldPacket >> needs; + _worldPacket >> Comment; } diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h index f04aa3a387b..c7e0929fe94 100644 --- a/src/server/game/Server/Packets/LFGPackets.h +++ b/src/server/game/Server/Packets/LFGPackets.h @@ -33,6 +33,9 @@ namespace WorldPackets::LFG uint32 Roles = 0; Array<uint32, 50> Slots; std::string Comment; + bool NoPartialClear = false; + bool Achievements = false; + std::array<uint8, 3> Needs = { }; }; class LFGLeave final : public ClientPacket |