Для шарика/френд-листа
SocialMgr.h
Код:
enum FriendStatus
{
FRIEND_STATUS_OFFLINE = 0,
FRIEND_STATUS_ONLINE = 1,
FRIEND_STATUS_AFK = 2,
- FRIEND_STATUS_UNK3 = 3,
FRIEND_STATUS_DND = 4,
+ FRIEND_STATUS_RAF = 8
};
enum SocialFlag
{
SOCIAL_FLAG_FRIEND = 0x01,
SOCIAL_FLAG_IGNORED = 0x02,
SOCIAL_FLAG_MUTED = 0x04, // guessed
- SOCIAL_FLAG_RAF = 0x08 // Recruit-A-Friend
};
SocialMgr.cpp
Код:
for(PlayerSocialMap::iterator itr = m_playerSocialMap.begin(); itr != m_playerSocialMap.end(); ++itr)
{
sSocialMgr.GetFriendInfo(plr, itr->first, itr->second);
data << uint64(itr->first); // player guid
data << uint32(itr->second.Flags); // player flag (0x1-friend?, 0x2-ignored?, 0x4-muted?)
data << itr->second.Note; // string note
if(itr->second.Flags & SOCIAL_FLAG_FRIEND) // if IsFriend()
{
data << uint8(itr->second.Status); // online/offline/etc?
if(itr->second.Status) // if online
{
data << uint32(itr->second.Area); // player area
data << uint32(itr->second.Level); // player level
data << uint32(itr->second.Class); // player class
}
}
}
Где-то перед выделенным местом надо отсылать добавочную 0x8 для RAF
PS - ну я не снифал, это чистые раскопки клиента