Core/PacketIO: Implement SMSG_GUILD_EVENT_AWAY_CHANGE

Port From (https://github.com/TrinityCore/TrinityCore/commit/cdb27ff3020f40c2a9a104a7ebba5c5c19452afc)
This commit is contained in:
hondacrx
2019-11-10 16:15:11 -05:00
parent 797504611e
commit 64be1a1603
3 changed files with 48 additions and 0 deletions
+23
View File
@@ -1091,6 +1091,29 @@ namespace Game.Guilds
member.AddFlag(GuildMemberFlags.Online); member.AddFlag(GuildMemberFlags.Online);
} }
public void SendEventAwayChanged(ObjectGuid memberGuid, bool afk, bool dnd)
{
Member member = GetMember(memberGuid);
if (member == null)
return;
if (afk)
member.AddFlag(GuildMemberFlags.AFK);
else
member.RemoveFlag(GuildMemberFlags.AFK);
if (dnd)
member.AddFlag(GuildMemberFlags.DND);
else
member.RemoveFlag(GuildMemberFlags.DND);
GuildEventAwayChange awayChange = new GuildEventAwayChange();
awayChange.Guid = memberGuid;
awayChange.AFK = afk;
awayChange.DND = dnd;
BroadcastPacket(awayChange);
}
void SendEventBankMoneyChanged() void SendEventBankMoneyChanged()
{ {
GuildEventBankMoneyChanged eventPacket = new GuildEventBankMoneyChanged(); GuildEventBankMoneyChanged eventPacket = new GuildEventBankMoneyChanged();
+8
View File
@@ -494,6 +494,10 @@ namespace Game
sender.ToggleAFK(); sender.ToggleAFK();
} }
Guild guild = sender.GetGuild();
if (guild != null)
guild.SendEventAwayChanged(sender.GetGUID(), sender.IsAFK(), sender.IsDND());
Global.ScriptMgr.OnPlayerChat(sender, ChatMsg.Afk, Language.Universal, packet.Text); Global.ScriptMgr.OnPlayerChat(sender, ChatMsg.Afk, Language.Universal, packet.Text);
} }
@@ -528,6 +532,10 @@ namespace Game
sender.ToggleDND(); sender.ToggleDND();
} }
Guild guild = sender.GetGuild();
if (guild != null)
guild.SendEventAwayChanged(sender.GetGUID(), sender.IsAFK(), sender.IsDND());
Global.ScriptMgr.OnPlayerChat(sender, ChatMsg.Dnd, Language.Universal, packet.Text); Global.ScriptMgr.OnPlayerChat(sender, ChatMsg.Dnd, Language.Universal, packet.Text);
} }
@@ -278,6 +278,23 @@ namespace Game.Network.Packets
public string OldGuildName; public string OldGuildName;
} }
public class GuildEventAwayChange : ServerPacket
{
public GuildEventAwayChange() : base(ServerOpcodes.GuildEventAwayChange) { }
public override void Write()
{
_worldPacket.WritePackedGuid(Guid);
_worldPacket.WriteBit(AFK);
_worldPacket.WriteBit(DND);
_worldPacket.FlushBits();
}
public ObjectGuid Guid;
public bool AFK;
public bool DND;
}
public class GuildEventPresenceChange : ServerPacket public class GuildEventPresenceChange : ServerPacket
{ {
public GuildEventPresenceChange() : base(ServerOpcodes.GuildEventPresenceChange) { } public GuildEventPresenceChange() : base(ServerOpcodes.GuildEventPresenceChange) { }