protected override void InternalParse() { GuildEvents _event = (GuildEvents)Reader.ReadByte(); Output.AppendFormatLine("Event: {0} ({0:D})", _event); byte nStrings = Reader.ReadByte(); Output.AppendLine("Strings: " + nStrings); for (byte i = 0; i < nStrings; ++i) { Output.AppendFormatLine(" {0}) {1}", i, Reader.ReadCString()); } switch (_event) { case GuildEvents.GE_JOINED: case GuildEvents.GE_LEFT: case GuildEvents.GE_SIGNED_ON: case GuildEvents.GE_SIGNED_OFF: case GuildEvents.GE_REMOVED: Output.AppendLine("Guid: " + Reader.ReadGuid()); break; } }
//Event public void SendBroadcastEvent(GuildEvents guildEvent, ulong guid = 0, params object[] str) { int strCount = str.Count(); if (strCount > 3) { return; } PacketWriter writer = new PacketWriter(Opcodes.SMSG_GuildEvent); writer.WriteUInt8((byte)guildEvent); writer.WriteUInt8((byte)strCount); foreach (string text in str) { writer.WriteCString(text); } if (guid != 0) { writer.WriteUInt64(guid); } BroadcastPacket(writer); }
/// <summary> /// When overridden in the derived class, logs an event from a guild. /// </summary> /// <param name="eventCreator">The guild member that created the event.</param> /// <param name="guildEvent">The type of event that took place.</param> /// <param name="eventTarget">Optionally contains the other guild member that the event involves. This member /// may or may not actually be in the guild at this point.</param> /// <param name="arg0">The optional first argument string.</param> /// <param name="arg1">The optional second argument string.</param> /// <param name="arg2">The optional third argument string.</param> protected override void InternalLogEvent(IGuildMember eventCreator, GuildEvents guildEvent, IGuildMember eventTarget, string arg0, string arg1, string arg2) { var guildID = eventCreator.Guild.ID; var charID = (CharacterID)eventCreator.ID; var eventID = (byte)guildEvent; var targetID = (eventTarget == null ? null : (CharacterID?)eventTarget.ID); var args = new InsertGuildEventQuery.QueryArgs(guildID, charID, targetID, eventID, arg0, arg1, arg2); _insertGuildEventQuery.Execute(args); }
/// <summary> /// Logs an event from a guild. /// </summary> /// <param name="eventCreator">The guild member that created the event.</param> /// <param name="guildEvent">The type of event that took place.</param> /// <param name="eventTarget">Optionally contains the other guild member that the event involves. This member /// may or may not actually be in the guild at this point.</param> /// <param name="arg0">The optional first argument string.</param> /// <param name="arg1">The optional second argument string.</param> /// <param name="arg2">The optional third argument string.</param> /// <exception cref="ArgumentNullException"><paramref name="eventCreator"/> is null.</exception> public void LogEvent(IGuildMember eventCreator, GuildEvents guildEvent, IGuildMember eventTarget, string arg0, string arg1, string arg2) { if (eventCreator == null) { throw new ArgumentNullException("eventCreator"); } Debug.Assert(EnumHelper <GuildEvents> .IsDefined(guildEvent)); InternalLogEvent(eventCreator, guildEvent, eventTarget, arg0, arg1, arg2); }
/// <summary> /// Logs an event from a guild. /// </summary> /// <param name="guildManager">The <see cref="IGuildManager"/>.</param> /// <param name="eventCreator">The guild member that created the event.</param> /// <param name="guildEvent">The type of event that took place.</param> /// <exception cref="ArgumentNullException"><paramref name="eventCreator"/> is null.</exception> public static void LogEvent(this IGuildManager guildManager, IGuildMember eventCreator, GuildEvents guildEvent) { guildManager.LogEvent(eventCreator, guildEvent, null, null, null, null); }
/// <summary> /// Logs an event from a guild. /// </summary> /// <param name="guildManager">The <see cref="IGuildManager"/>.</param> /// <param name="eventCreator">The guild member that created the event.</param> /// <param name="guildEvent">The type of event that took place.</param> /// <param name="eventTarget">Optionally contains the other guild member that the event involves. This member /// may or may not actually be in the guild at this point.</param> /// <param name="arg0">The optional first argument string.</param> /// <exception cref="ArgumentNullException"><paramref name="eventCreator"/> is null.</exception> public static void LogEvent(this IGuildManager guildManager, IGuildMember eventCreator, GuildEvents guildEvent, IGuildMember eventTarget, string arg0) { guildManager.LogEvent(eventCreator, guildEvent, eventTarget, arg0, null, null); }
/// <summary> /// Sends event connected with guilds to all guild members. Use this one for promotion/demotion events. /// </summary> /// <param name="guild">guild</param> /// <param name="guildEvent">event that happened</param> /// <param name="affectedMember">The <see cref="GuildMember"/> which was affected</param> /// <param name="influencer">one who caused this event</param> public static void SendEventToGuild(Guild guild, GuildEvents guildEvent, GuildMember affectedMember, GuildMember influencer) { using (var packet = CreateEventPacket(guild, guildEvent, affectedMember, influencer)) { guild.SendAll(packet); } }
private static RealmPacketOut CreateEventPacket(Guild guild, GuildEvents guildEvent, GuildMember affectedMember) { return CreateEventPacket(guild, guildEvent, affectedMember, null); }
/// <summary> /// Sends event connected with guilds to all guild members, except one /// </summary> /// <param name="guild">guild</param> /// <param name="guildEvent">event that happened</param> /// <param name="affectedMember">The <see cref="GuildMember"/> which was affected</param> /// <param name="ignoredCharacter">character to be ignored</param> public static void SendEventToGuild(Guild guild, GuildEvents guildEvent, GuildMember affectedMember, Character ignoredCharacter) { using (RealmPacketOut packet = CreateEventPacket(guild, guildEvent, affectedMember)) { guild.Broadcast(packet, ignoredCharacter); } }
/// <summary> /// Sends event connected with guilds to all guild members /// </summary> /// <param name="guild">guild</param> /// <param name="guildEvent">event that happened</param> /// <param name="affectedMember">The <see cref="GuildMember"/> which was affected</param> public static void SendEventToGuild(Guild guild, GuildEvents guildEvent, GuildMember affectedMember) { using (var packet = CreateEventPacket(guild, guildEvent, affectedMember)) { guild.Broadcast(packet); } }
/// <summary> /// Sends event connected with guilds to all guild members /// </summary> /// <param name="guild">guild</param> /// <param name="guildEvent">event that happened</param> public static void SendEventToGuild(Guild guild, GuildEvents guildEvent) { using (var packet = CreateEventPacket(guild, guildEvent, null)) { guild.Broadcast(packet); } }
/// <summary> /// Sends events connected with guilds /// </summary> /// <param name="client">the client to send to</param> /// <param name="guild">guild</param> /// <param name="guildEvent">event that happened</param> /// <param name="affectedMember">The <see cref="GuildMember"/> which was affected</param> public static void SendEvent(IPacketReceiver client, Guild guild, GuildEvents guildEvent, GuildMember affectedMember) { using (RealmPacketOut packet = CreateEventPacket(guild, guildEvent, affectedMember)) { client.Send(packet); } }
/// <summary> /// Sends event connected with guilds to all guild members, except one /// </summary> /// <param name="guild">guild</param> /// <param name="guildEvent">event that happened</param> /// <param name="ignoredCharacter">character to be ignored</param> public static void SendEventToGuild(Guild guild, GuildEvents guildEvent, Character ignoredCharacter) { using (RealmPacketOut packet = CreateEventPacket(guild, guildEvent, null)) { guild.SendAll(packet, ignoredCharacter); } }
/// <summary> /// When overridden in the derived class, logs an event from a guild. /// </summary> /// <param name="eventCreator">The guild member that created the event.</param> /// <param name="guildEvent">The type of event that took place.</param> /// <param name="eventTarget">Optionally contains the other guild member that the event involves. This member /// may or may not actually be in the guild at this point.</param> /// <param name="arg0">The optional first argument string.</param> /// <param name="arg1">The optional second argument string.</param> /// <param name="arg2">The optional third argument string.</param> protected abstract void InternalLogEvent(IGuildMember eventCreator, GuildEvents guildEvent, IGuildMember eventTarget, string arg0, string arg1, string arg2);
/// <summary> /// TODO: Fix for 3.3 /// </summary> /// <param name="guild"></param> /// <param name="guildEvent"></param> /// <param name="affectedMember"></param> /// <param name="influencer"></param> /// <returns></returns> private static RealmPacketOut CreateEventPacket(Guild guild, GuildEvents guildEvent, GuildMember affectedMember, GuildMember influencer) { var packet = new RealmPacketOut(RealmServerOpCode.SMSG_GUILD_EVENT); packet.WriteByte((byte)guildEvent); // Next byte is strings count switch (guildEvent) { case GuildEvents.PROMOTION: case GuildEvents.DEMOTION: packet.Write((byte)3); packet.WriteCString(influencer.Name); packet.WriteCString(affectedMember.Name); packet.WriteCString(affectedMember.Rank.Name); break; case GuildEvents.MOTD: if (guild.MOTD != null) { packet.Write((byte)1); packet.WriteCString(guild.MOTD); } else { packet.Write((byte)0); } break; case GuildEvents.JOINED: case GuildEvents.LEFT: case GuildEvents.ONLINE: case GuildEvents.OFFLINE: packet.Write((byte)1); packet.WriteCString(affectedMember.Name); break; case GuildEvents.REMOVED: packet.Write((byte)2); packet.WriteCString(influencer.Name); packet.WriteCString(affectedMember.Name); break; case GuildEvents.LEADER_CHANGED: packet.Write((byte)2); packet.WriteCString(affectedMember.Name); packet.WriteCString(influencer.Name); break; default: packet.Write((byte)0); break; } return packet; }