/// <summary> /// Sends a message to everyone inside the clan room. /// </summary> /// <param name="character">The character who is sending the message.</param> /// <param name="message">The message to send.</param> public void Message(Character character, string message) { Room r = Get((long)character.ClanRoom); if (r != null) { if (r.CanTalk(character.LongName)) { lock (r.Users) { r.Users.ForEach((l) => { GameEngine.World.CharacterManager.Get(l).Session.SendData( new ClanMessagePacketComposer(message, character.LongName, r.Name, r.NextUniqueId, (byte)character.ClientRights).Serialize()); ChatUtilities.LogChat(character.Name, ChatType.Clanchat, StringUtilities.LongToString(r.Owner), message); }); } } else { character.Session.SendData(new MessagePacketComposer( "You do not have a high enough rank to talk.").Serialize()); } } }
/// <summary> /// Sends a message to the the specified friend. /// </summary> /// <param name="name">The name of the friend.</param> /// <param name="message">The message to send.</param> public void SendMessage(long name, string message) { List <Character> chars = new List <Character>(GameEngine.World.CharacterManager.Characters.Values); foreach (Character c in chars) { if (c.LongName == name) { c.Session.SendData(new RecievePMPacketComposer(this.character.LongName, (byte)this.character.ClientRights, message, this.character.Contacts.NextUniqueId).Serialize()); this.character.Session.SendData(new SendPMPacketComposer(name, message).Serialize()); ChatUtilities.LogChat(this.character.Name, ChatType.Private, c.Name, message); return; } } this.character.Session.SendData(new MessagePacketComposer("Your friend is currently unavailible.").Serialize()); }
/// <summary> /// Handles the chat information sent from the client. /// </summary> /// <param name="character">The character to handle packet for.</param> /// <param name="packet">The packet containing handle data.</param> public void Handle(Character character, Packet packet) { if (!character.Muted) { int effects = packet.ReadShort() & 0xFFFF; int length = packet.ReadByte(); string text = ChatUtilities.DecryptChat(packet, length); if (character.ClanRoom != null && text.StartsWith("/")) { GameEngine.Content.ClanChat.Message(character, text.Substring(1)); } else { character.Speak(ChatMessage.Create(effects, length, text)); ChatUtilities.LogChat(character.Name, ChatType.Normal, null, text); } } }