/// <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());
                }
            }
        }
Ejemplo n.º 2
0
        /// <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());
        }
Ejemplo n.º 3
0
        /// <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);
                }
            }
        }