From bae709fdff1137e38e17e7dc08eef28f2bc8e5e0 Mon Sep 17 00:00:00 2001 From: ratkosrb Date: Fri, 21 Feb 2020 18:21:21 +0200 Subject: [PATCH] Name unknown field in who list packet. Thanks to Grender. --- src/game/Handlers/MiscHandler.cpp | 2 +- src/game/Objects/Player.cpp | 13 +++++++++++++ src/game/Objects/Player.h | 13 +++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/game/Handlers/MiscHandler.cpp b/src/game/Handlers/MiscHandler.cpp index 8c660e276..8f4252b16 100644 --- a/src/game/Handlers/MiscHandler.cpp +++ b/src/game/Handlers/MiscHandler.cpp @@ -215,7 +215,7 @@ public: data << uint32(pzoneid); // player zone id #if SUPPORTED_CLIENT_BUILD <= CLIENT_BUILD_1_8_4 - data << uint32(0); // unknown + data << uint32(pPlayer->GetWhoListPartyStatus()); // not actually displayed anywhere #endif // 50 is maximum player count sent to client if ((++clientcount) == 49) diff --git a/src/game/Objects/Player.cpp b/src/game/Objects/Player.cpp index a56c00961..9f642ab46 100644 --- a/src/game/Objects/Player.cpp +++ b/src/game/Objects/Player.cpp @@ -2881,6 +2881,19 @@ void Player::RemoveFromGroup(Group* group, ObjectGuid guid) } } +#if SUPPORTED_CLIENT_BUILD <= CLIENT_BUILD_1_8_4 +uint32 Player::GetWhoListPartyStatus() const +{ + if (sLFGMgr.IsPlayerInQueue(GetObjectGuid())) + return WHO_PARTY_STATUS_LFG; + + if (GetGroup()) + return WHO_PARTY_STATUS_IN_PARTY; + + return WHO_PARTY_STATUS_NOT_IN_PARTY; +} +#endif + void Player::SendLogXPGain(uint32 GivenXP, Unit* victim, uint32 RestXP) const { WorldPacket data(SMSG_LOG_XPGAIN, 21); diff --git a/src/game/Objects/Player.h b/src/game/Objects/Player.h index ae9492a34..e4539b555 100644 --- a/src/game/Objects/Player.h +++ b/src/game/Objects/Player.h @@ -344,6 +344,15 @@ enum PlayerFieldByte2Flags PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW = 0x40 }; +#if SUPPORTED_CLIENT_BUILD <= CLIENT_BUILD_1_8_4 +enum WhoListPartyStatus +{ + WHO_PARTY_STATUS_NOT_IN_PARTY = 0x0, + WHO_PARTY_STATUS_IN_PARTY = 0x1, + WHO_PARTY_STATUS_LFG = 0x2 +}; +#endif + enum ActivateTaxiReplies { ERR_TAXIOK = 0, @@ -2455,6 +2464,10 @@ class MANGOS_DLL_SPEC Player final: public Unit void SendUpdateToOutOfRangeGroupMembers(); void SendDestroyGroupMembers(bool includingSelf = false); +#if SUPPORTED_CLIENT_BUILD <= CLIENT_BUILD_1_8_4 + uint32 GetWhoListPartyStatus() const; +#endif + // BattleGround Group System void SetBattleGroundRaid(Group* group, int8 subgroup = -1); void RemoveFromBattleGroundRaid();