mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Updated implementation of userlist packets SMSG_USERLIST_ADD, SMSG_USERLIST_UPDATE, and SMSG_USERLIST_REMOVE
This commit is contained in:
@@ -990,32 +990,42 @@ void Channel::MakeVoiceOff(WorldPackets::Channel::ChannelNotify& data, ObjectGui
|
||||
void Channel::JoinNotify(Player const* player)
|
||||
{
|
||||
ObjectGuid const& guid = player->GetGUID();
|
||||
WorldPacket data(IsConstant() ? SMSG_USERLIST_ADD : SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size());
|
||||
data << guid;
|
||||
data << uint8(GetPlayerFlags(guid));
|
||||
data << uint8(GetFlags());
|
||||
data << uint32(GetNumPlayers());
|
||||
data << GetName();
|
||||
|
||||
if (IsConstant())
|
||||
SendToAllButOne(&data, guid);
|
||||
{
|
||||
WorldPackets::Channel::UserlistAdd userlistAdd;
|
||||
userlistAdd.AddedUserGUID = guid;
|
||||
userlistAdd.ChannelFlags = GetFlags();
|
||||
userlistAdd.UserFlags = GetPlayerFlags(guid);
|
||||
userlistAdd.ChannelID = GetChannelId();
|
||||
userlistAdd.ChannelName = GetName();
|
||||
SendToAllButOne(userlistAdd.Write(), guid);
|
||||
}
|
||||
else
|
||||
SendToAll(&data);
|
||||
{
|
||||
WorldPackets::Channel::UserlistUpdate userlistUpdate;
|
||||
userlistUpdate.UpdatedUserGUID = guid;
|
||||
userlistUpdate.ChannelFlags = GetFlags();
|
||||
userlistUpdate.UserFlags = GetPlayerFlags(guid);
|
||||
userlistUpdate.ChannelID = GetChannelId();
|
||||
userlistUpdate.ChannelName = GetName();
|
||||
SendToAll(userlistUpdate.Write());
|
||||
}
|
||||
}
|
||||
|
||||
void Channel::LeaveNotify(Player const* player)
|
||||
{
|
||||
ObjectGuid const& guid = player->GetGUID();
|
||||
WorldPacket data(SMSG_USERLIST_REMOVE, 8 + 1 + 4 + GetName().size());
|
||||
data << guid;
|
||||
data << uint8(GetFlags());
|
||||
data << uint32(GetNumPlayers());
|
||||
data << GetName();
|
||||
WorldPackets::Channel::UserlistRemove userlistRemove;
|
||||
userlistRemove.RemovedUserGUID = guid;
|
||||
userlistRemove.ChannelFlags = GetFlags();
|
||||
userlistRemove.ChannelID = GetChannelId();
|
||||
userlistRemove.ChannelName = GetName();
|
||||
|
||||
if (IsConstant())
|
||||
SendToAllButOne(&data, guid);
|
||||
SendToAllButOne(userlistRemove.Write(), guid);
|
||||
else
|
||||
SendToAll(&data);
|
||||
SendToAll(userlistRemove.Write());
|
||||
}
|
||||
|
||||
void Channel::SetModerator(ObjectGuid const& guid, bool set)
|
||||
|
||||
@@ -104,8 +104,8 @@ namespace WorldPackets
|
||||
|
||||
ObjectGuid AddedUserGUID;
|
||||
|
||||
ChannelFlags ChannelFlags = CHANNEL_FLAG_NONE;
|
||||
ChannelMemberFlags UserFlags = MEMBER_FLAG_NONE;
|
||||
uint8 ChannelFlags = CHANNEL_FLAG_NONE;
|
||||
uint8 UserFlags = MEMBER_FLAG_NONE;
|
||||
|
||||
int32 ChannelID = 0;
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace WorldPackets
|
||||
|
||||
ObjectGuid RemovedUserGUID;
|
||||
|
||||
ChannelFlags ChannelFlags = CHANNEL_FLAG_NONE;
|
||||
uint8 ChannelFlags = CHANNEL_FLAG_NONE;
|
||||
|
||||
uint32 ChannelID = 0;
|
||||
|
||||
@@ -137,8 +137,8 @@ namespace WorldPackets
|
||||
|
||||
ObjectGuid UpdatedUserGUID;
|
||||
|
||||
ChannelFlags ChannelFlags = CHANNEL_FLAG_NONE;
|
||||
ChannelMemberFlags UserFlags = MEMBER_FLAG_NONE;
|
||||
uint8 ChannelFlags = CHANNEL_FLAG_NONE;
|
||||
uint8 UserFlags = MEMBER_FLAG_NONE;
|
||||
|
||||
int32 ChannelID = 0;
|
||||
|
||||
|
||||
@@ -171,9 +171,6 @@ namespace WorldPackets
|
||||
class ChannelPlayerCommand;
|
||||
class JoinChannel;
|
||||
class LeaveChannel;
|
||||
class UserlistAdd;
|
||||
class UserlistRemove;
|
||||
class UserlistUpdate;
|
||||
}
|
||||
|
||||
namespace Chat
|
||||
|
||||
Reference in New Issue
Block a user