From b5cb41b4ea513f90bce9f2d0f9038a1ae4410e33 Mon Sep 17 00:00:00 2001 From: kaelima Date: Mon, 7 Nov 2011 07:16:31 +0100 Subject: Core/Player: Make chat tag (last byte in SMSG_MESSAGECHAT) a bitmask. --- src/server/game/Battlegrounds/Battleground.cpp | 4 ++-- src/server/game/Chat/Channels/Channel.cpp | 2 +- src/server/game/Chat/Chat.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 25 ++++++++++++------------- src/server/game/Entities/Player/Player.h | 12 +++++++++++- src/server/game/Entities/Player/SocialMgr.cpp | 2 +- 6 files changed, 28 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 38fa2643601..936ee7ab1d0 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -75,7 +75,7 @@ namespace Trinity data << uint64(target_guid); data << uint32(strlen(text) + 1); data << text; - data << uint8 (_source ? _source->chatTag() : uint8(0)); + data << uint8 (_source ? _source->GetChatTag() : 0); } ChatMsg _msgtype; @@ -108,7 +108,7 @@ namespace Trinity data << uint64(target_guid); data << uint32(strlen(str) + 1); data << str; - data << uint8 (_source ? _source->chatTag() : uint8(0)); + data << uint8 (_source ? _source->GetChatTag() : uint8(0)); } private: diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 413070ca1de..cc060faaf80 100755 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -650,7 +650,7 @@ void Channel::Say(uint64 p, const char *what, uint32 lang) data << p; data << messageLength; data << what; - data << uint8(plr ? plr->chatTag() : 0); + data << uint8(plr ? plr->GetChatTag() : 0); SendToAll(&data, !players[p].IsModerator() ? p : false); } diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 7d6e9f7a004..ddc7ce58089 100755 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -1051,7 +1051,7 @@ void ChatHandler::FillMessageData(WorldPacket* data, WorldSession* session, uint *data << uint32(messageLength); *data << message; if (session != 0 && type != CHAT_MSG_WHISPER_INFORM && type != CHAT_MSG_DND && type != CHAT_MSG_AFK) - *data << uint8(session->GetPlayer()->chatTag()); + *data << uint8(session->GetPlayer()->GetChatTag()); else *data << uint8(0); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 961d1e57390..adcefdddab2 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2020,21 +2020,20 @@ bool Player::ToggleDND() return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND); } -uint8 Player::chatTag() const +uint8 Player::GetChatTag() const { - // it's bitmask - // 0x8 - ?? - // 0x4 - gm - // 0x2 - dnd - // 0x1 - afk + uint8 tag = CHAT_TAG_NONE; + if (isGMChat()) - return 4; - else if (isDND()) - return 3; + tag |= CHAT_TAG_GM; + if (isDND()) + tag |= CHAT_TAG_DND; if (isAFK()) - return 1; - else - return 0; + tag |= CHAT_TAG_AFK; + if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DEVELOPER)) + tag |= CHAT_TAG_DEV; + + return tag; } void Player::SendTeleportPacket(Position &oldPos) @@ -19340,7 +19339,7 @@ inline void Player::BuildPlayerChat(WorldPacket* data, uint8 msgtype, const std: *data << uint64(GetGUID()); *data << uint32(text.length() + 1); *data << text; - *data << uint8(chatTag()); + *data << uint8(GetChatTag()); } void Player::Say(const std::string& text, const uint32 language) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 7d0803a4c8a..0b2ddb628a8 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -768,6 +768,16 @@ enum EnviromentalDamage DAMAGE_FALL_TO_VOID = 6 // custom case for fall without durability loss }; +enum PlayerChatTag +{ + CHAT_TAG_NONE = 0x00, + CHAT_TAG_AFK = 0x01, + CHAT_TAG_DND = 0x02, + CHAT_TAG_GM = 0x04, + CHAT_TAG_UNK = 0x08, // Probably battleground commentator + CHAT_TAG_DEV = 0x10, +}; + enum PlayedTimeIndex { PLAYED_TIME_TOTAL = 0, @@ -1125,7 +1135,7 @@ class Player : public Unit, public GridObject bool ToggleDND(); bool isAFK() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK); } bool isDND() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND); } - uint8 chatTag() const; + uint8 GetChatTag() const; std::string afkMsg; std::string dndMsg; diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index 4d343d02146..4a599d32aba 100755 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -122,7 +122,7 @@ void PlayerSocial::SendSocialList(Player* plr) uint32 size = m_playerSocialMap.size(); WorldPacket data(SMSG_CONTACT_LIST, (4+4+size*25)); // just can guess size - data << uint32(7); // unk flag (0x1, 0x2, 0x4), 0x7 if it include ignore list + data << uint32(7); // 0x1 = Friendlist update. 0x2 = Ignorelist update. 0x4 = Mutelist update. data << uint32(size); // friends count for (PlayerSocialMap::iterator itr = m_playerSocialMap.begin(); itr != m_playerSocialMap.end(); ++itr) -- cgit v1.2.3