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);
}
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()
{
GuildEventBankMoneyChanged eventPacket = new GuildEventBankMoneyChanged();
+8
View File
@@ -494,6 +494,10 @@ namespace Game
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);
}
@@ -528,6 +532,10 @@ namespace Game
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);
}
@@ -278,6 +278,23 @@ namespace Game.Network.Packets
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 GuildEventPresenceChange() : base(ServerOpcodes.GuildEventPresenceChange) { }