mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/PacketIO: Implement SMSG_GUILD_EVENT_AWAY_CHANGE
This commit is contained in:
@@ -2249,6 +2249,29 @@ void Guild::SendLoginInfo(WorldSession* session)
|
||||
member->AddFlag(GUILDMEMBER_STATUS_ONLINE);
|
||||
}
|
||||
|
||||
void Guild::SendEventAwayChanged(ObjectGuid const& memberGuid, bool afk, bool dnd)
|
||||
{
|
||||
Member* member = GetMember(memberGuid);
|
||||
if (!member)
|
||||
return;
|
||||
|
||||
if (afk)
|
||||
member->AddFlag(GUILDMEMBER_STATUS_AFK);
|
||||
else
|
||||
member->RemFlag(GUILDMEMBER_STATUS_AFK);
|
||||
|
||||
if (dnd)
|
||||
member->AddFlag(GUILDMEMBER_STATUS_DND);
|
||||
else
|
||||
member->RemFlag(GUILDMEMBER_STATUS_DND);
|
||||
|
||||
WorldPackets::Guild::GuildEventAwayChange awayChange;
|
||||
awayChange.Guid = memberGuid;
|
||||
awayChange.AFK = afk;
|
||||
awayChange.DND = dnd;
|
||||
BroadcastPacket(awayChange.Write());
|
||||
}
|
||||
|
||||
void Guild::SendEventBankMoneyChanged() const
|
||||
{
|
||||
WorldPackets::Guild::GuildEventBankMoneyChanged eventPacket;
|
||||
|
||||
@@ -796,6 +796,7 @@ class TC_GAME_API Guild
|
||||
void SendNewsUpdate(WorldSession* session) const;
|
||||
|
||||
// Send events
|
||||
void SendEventAwayChanged(ObjectGuid const& memberGuid, bool afk, bool dnd);
|
||||
void SendEventBankMoneyChanged() const;
|
||||
void SendEventMOTD(WorldSession* session, bool broadcast = false) const;
|
||||
void SendEventNewLeader(Member* newLeader, Member* oldLeader, bool isSelfPromoted = false) const;
|
||||
|
||||
@@ -527,6 +527,9 @@ void WorldSession::HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK
|
||||
sender->ToggleAFK();
|
||||
}
|
||||
|
||||
if (Guild* guild = sender->GetGuild())
|
||||
guild->SendEventAwayChanged(sender->GetGUID(), sender->isAFK(), sender->isDND());
|
||||
|
||||
sScriptMgr->OnPlayerChat(sender, CHAT_MSG_AFK, LANG_UNIVERSAL, chatMessageAFK.Text);
|
||||
}
|
||||
|
||||
@@ -560,6 +563,9 @@ void WorldSession::HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND
|
||||
sender->ToggleDND();
|
||||
}
|
||||
|
||||
if (Guild* guild = sender->GetGuild())
|
||||
guild->SendEventAwayChanged(sender->GetGUID(), sender->isAFK(), sender->isDND());
|
||||
|
||||
sScriptMgr->OnPlayerChat(sender, CHAT_MSG_DND, LANG_UNIVERSAL, chatMessageDND.Text);
|
||||
}
|
||||
|
||||
|
||||
@@ -188,6 +188,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberD
|
||||
return data;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Guild::GuildEventAwayChange::Write()
|
||||
{
|
||||
_worldPacket << Guid;
|
||||
_worldPacket.WriteBit(AFK);
|
||||
_worldPacket.WriteBit(DND);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write()
|
||||
{
|
||||
_worldPacket << Guid;
|
||||
|
||||
@@ -227,6 +227,18 @@ namespace WorldPackets
|
||||
std::string OldGuildName;
|
||||
};
|
||||
|
||||
class GuildEventAwayChange final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GuildEventAwayChange() : ServerPacket(SMSG_GUILD_EVENT_AWAY_CHANGE, 16 + 1) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Guid;
|
||||
bool AFK = false;
|
||||
bool DND = false;
|
||||
};
|
||||
|
||||
class GuildEventPresenceChange final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -1292,7 +1292,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_AWAY_CHANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_AWAY_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_DISBANDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
Reference in New Issue
Block a user