public static void SendChatAdminServerMessage(IPacketReceiver client, ChatActivableChannelsEnum channel, string message, int timestamp, string fingerprint, int senderId, string senderName, int accountId)
 {
     if (!string.IsNullOrEmpty(message))
     {
         client.Send(new ChatAdminServerMessage((sbyte)channel, message, timestamp, fingerprint, senderId, senderName, accountId));
     }
 }
        public static string ToFriendlyString(this ChatActivableChannelsEnum channel)
        {
            switch (channel)
            {
            case ChatActivableChannelsEnum.CHANNEL_ADMIN:
                return(LanguageManager.Translate("217"));

            case ChatActivableChannelsEnum.CHANNEL_ALLIANCE:
                return(LanguageManager.Translate("218"));

            case ChatActivableChannelsEnum.CHANNEL_ARENA:
                return(LanguageManager.Translate("219"));

            case ChatActivableChannelsEnum.CHANNEL_GUILD:
                return(LanguageManager.Translate("220"));

            case ChatActivableChannelsEnum.CHANNEL_NOOB:
                return(LanguageManager.Translate("221"));

            case ChatActivableChannelsEnum.CHANNEL_PARTY:
                return(LanguageManager.Translate("222"));

            case ChatActivableChannelsEnum.CHANNEL_SALES:
                return(LanguageManager.Translate("223"));

            case ChatActivableChannelsEnum.CHANNEL_SEEK:
                return(LanguageManager.Translate("224"));

            case ChatActivableChannelsEnum.CHANNEL_TEAM:
                return(LanguageManager.Translate("225"));

            default:                                                                 // Including GLOBAL
                return("");
            }
        }
 public void HandleChat(WorldClient client, ChatActivableChannelsEnum channel, string message)
 {
     if (this.CanUseChannel(client.Character, channel) && this.ChatHandlers.ContainsKey(channel))
     {
         if (message.StartsWith(ChatManager.CommandPrefix) && (message.Length < ChatManager.CommandPrefix.Length * 2 || message.Substring(ChatManager.CommandPrefix.Length, ChatManager.CommandPrefix.Length) != ChatManager.CommandPrefix))
         {
             message = message.Remove(0, ChatManager.CommandPrefix.Length);
             ServerBase <WorldServer> .Instance.CommandManager.HandleCommand(new TriggerChat(new StringStream(ChatManager.UnescapeChatCommand(message)), client.Character));
         }
         else
         {
             if (client.Character.IsMuted())
             {
                 client.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 124, new object[]
                 {
                     (int)client.Character.GetMuteRemainingTime().TotalSeconds
                 });
             }
             else
             {
                 if (client.Character.ChatHistory.RegisterAndCheckFlood(new ChatEntry(message, channel, System.DateTime.Now)))
                 {
                     this.ChatHandlers[channel](client, message);
                 }
             }
         }
     }
 }
        public string GetChannelName(ChatActivableChannelsEnum channel)
        {
            if (!m_channelsNames.ContainsKey(channel))
                return "?";

            return m_channelsNames[channel];
        }
        public bool CanUseChannel(Character character, ChatActivableChannelsEnum channel)
        {
            bool result;

            switch (channel)
            {
            case ChatActivableChannelsEnum.CHANNEL_GLOBAL:
                result = (!character.Map.IsMuted || character.UserGroup.Role >= ChatManager.AdministratorChatMinAccess);
                break;

            case ChatActivableChannelsEnum.CHANNEL_TEAM:
                result = character.IsFighting();
                break;

            case ChatActivableChannelsEnum.CHANNEL_GUILD:
                result = (character.Guild != null);
                break;

            case ChatActivableChannelsEnum.CHANNEL_PARTY:
                result = character.IsInParty();
                break;

            case ChatActivableChannelsEnum.CHANNEL_SALES:
                result = !character.IsMuted();
                break;

            case ChatActivableChannelsEnum.CHANNEL_SEEK:
                result = !character.IsMuted();
                break;

            case ChatActivableChannelsEnum.CHANNEL_NOOB:
                result = true;
                break;

            case ChatActivableChannelsEnum.CHANNEL_ADMIN:
                result = (character.UserGroup.Role >= ChatManager.AdministratorChatMinAccess);
                break;

            case ChatActivableChannelsEnum.PSEUDO_CHANNEL_PRIVATE:
                result = !character.IsMuted();
                break;

            case ChatActivableChannelsEnum.PSEUDO_CHANNEL_INFO:
                result = false;
                break;

            case ChatActivableChannelsEnum.PSEUDO_CHANNEL_FIGHT_LOG:
                result = false;
                break;

            case ChatActivableChannelsEnum.CHANNEL_ADS:
                result = !character.IsMuted();
                break;

            default:
                result = false;
                break;
            }
            return(result);
        }
Beispiel #6
0
        public bool CanUseChannel(Character character, ChatActivableChannelsEnum channel)
        {
            switch (channel)
            {
            case ChatActivableChannelsEnum.CHANNEL_GLOBAL:
            {
                if (character.Map.IsMuted && character.UserGroup.Role <= AdministratorChatMinAccess)
                {
                    character.SendServerMessage("La map est actuellement réduite au silence !");
                    return(false);
                }
                return(true);
            }

            case ChatActivableChannelsEnum.CHANNEL_TEAM:
                return(character.IsFighting());

            case ChatActivableChannelsEnum.CHANNEL_ARENA:
                return(character.IsInParty(PartyTypeEnum.PARTY_TYPE_ARENA));

            case ChatActivableChannelsEnum.CHANNEL_GUILD:
                return(character.Guild != null);

            case ChatActivableChannelsEnum.CHANNEL_ALLIANCE:
                return(false);

            case ChatActivableChannelsEnum.CHANNEL_PARTY:
                return(character.IsInParty(PartyTypeEnum.PARTY_TYPE_CLASSICAL));

            case ChatActivableChannelsEnum.CHANNEL_SALES:
                return(!character.IsMuted());

            case ChatActivableChannelsEnum.CHANNEL_SEEK:
                return(!character.IsMuted());

            case ChatActivableChannelsEnum.CHANNEL_NOOB:
                return(true);

            case ChatActivableChannelsEnum.CHANNEL_ADMIN:
                return(character.UserGroup.Role >= AdministratorChatMinAccess);

            case ChatActivableChannelsEnum.CHANNEL_ADS:
                return(!character.IsMuted());

            case ChatActivableChannelsEnum.PSEUDO_CHANNEL_PRIVATE:
                return(!character.IsMuted());

            case ChatActivableChannelsEnum.PSEUDO_CHANNEL_INFO:
                return(false);

            case ChatActivableChannelsEnum.PSEUDO_CHANNEL_FIGHT_LOG:
                return(false);

            default:
                return(false);
            }
        }
        public string GetChannelName(ChatActivableChannelsEnum channel)
        {
            if (!m_channelsNames.ContainsKey(channel))
            {
                return("?");
            }

            return(m_channelsNames[channel]);
        }
Beispiel #8
0
 public static ChatServerCopyMessage GetChatServerCopyMessage(ChatActivableChannelsEnum channel, string message, WorldClient client, WorldClient target)
 {
     return(new ChatServerCopyMessage((sbyte)ChatActivableChannelsEnum.PSEUDO_CHANNEL_PRIVATE,
                                      message,
                                      (int)DateExtensions.DateTimeToUnixTimestamp(DateTime.Now),
                                      client.Character.Record.Name,
                                      (uint)target.Character.Record.Id,
                                      target.Character.Record.Name));
 }
        private Color GetChannelColor(ChatActivableChannelsEnum channel)
        {
            if (!m_colorsRules.ContainsKey(channel))
            {
                return(Colors.Black);
            }

            return(m_colorsRules[channel]);
        }
Beispiel #10
0
        public async Task SendMessage(string message, ChatActivableChannelsEnum channel = ChatActivableChannelsEnum.CHANNEL_GLOBAL)
        {
            if (string.IsNullOrEmpty(message))
            {
                return;
            }

            await _account.Network.SendMessageAsync(new ChatClientMultiMessage(message, (uint)channel));
        }
Beispiel #11
0
        public void HandleChat(WorldClient client, ChatActivableChannelsEnum channel, string message, IEnumerable <ObjectItem> objectItems = null)
        {
            if (!ChatHandlers.ContainsKey(channel))
            {
                return;
            }

            if (message.StartsWith(CommandPrefix) &&
                (message.Length < CommandPrefix.Length * 2 || message.Substring(CommandPrefix.Length, CommandPrefix.Length) != CommandPrefix)) // ignore processing command whenever there is the preffix twice
            {
                message = message.Remove(0, CommandPrefix.Length);                                                                             // remove our prefix
                WorldServer.Instance.CommandManager.HandleCommand(new TriggerChat(new StringStream(UnescapeChatCommand(message)),
                                                                                  client.Character));
            }
            else
            {
                if (!CanUseChannel(client.Character, channel))
                {
                    return;
                }

                var badword = CanSendMessage(message);
                if (badword != string.Empty)
                {
                    client.Character.SendServerMessage($"Message non envoyé. Le terme <b>{badword}</b> est interdit sur le serveur !");
                    return;
                }

                if (client.Character.IsMuted())
                {
                    client.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 124, (int)client.Character.GetMuteRemainingTime().TotalSeconds);
                }
                else
                {
                    if (client.Character.ChatHistory.RegisterAndCheckFlood(new ChatEntry(message, channel, DateTime.Now)))
                    {
                        ChatHandlers[channel](client, message, objectItems);
                    }
                }
            }

            var document = new BsonDocument
            {
                { "SenderId", client.Character.Id },
                { "SenderName", client.Character.Name },
                { "SenderAccountId", client.Account.Id },
                { "ReceiverId", 0 },
                { "ReceiverName", "" },
                { "ReceiverAccountId", 0 },
                { "Message", message },
                { "Channel", (int)channel },
                { "Date", DateTime.Now.ToString(CultureInfo.InvariantCulture) }
            };

            MongoLogger.Instance.Insert("Chats", document);
        }
Beispiel #12
0
 public static ChatServerMessage GetChatServerMessage(ChatActivableChannelsEnum channel, string message, WorldClient client)
 {
     return(new ChatServerMessage((sbyte)channel,
                                  message,
                                  (int)DateExtensions.DateTimeToUnixTimestamp(DateTime.Now),
                                  string.Empty,
                                  client.Character.Id,
                                  client.Character.Name,
                                  client.Account.Id));
 }
Beispiel #13
0
        static void Handle(WorldClient client, string message, ChatActivableChannelsEnum channel)
        {
            var handler = ChatHandlers.FirstOrDefault(x => x.Key == channel);

            if (handler.Value != null)
            {
                handler.Value(client, message);
            }
            else
            {
                client.Character.Reply("Ce chat n'est pas géré");
            }
        }
Beispiel #14
0
        // Constructor
        public FloodSentence(string content, ChatActivableChannelsEnum channel, bool onPlayerJoined, bool onPlayerLeft)
        {
            Content = content;
            Channel = channel;

            if (Channel == ChatActivableChannelsEnum.PSEUDO_CHANNEL_PRIVATE)
            {
                OnPlayerJoined = onPlayerJoined;
                OnPlayerLeft   = onPlayerLeft;
            }
            else
            {
                OnPlayerJoined = false;
                OnPlayerLeft   = false;
            }
        }
Beispiel #15
0
        static void Handle(WorldClient client, string message, ChatActivableChannelsEnum channel)
        {
            if (message.StartsWith(CommandsHandler.CommandsPrefix))
            {
                CommandsHandler.Handle(message, client);
                return;
            }

            var handler = ChatHandlers.FirstOrDefault(x => x.Key == channel);

            if (handler.Value != null)
            {
                handler.Value(client, message);
            }
            else
            {
                client.Character.Reply("Ce chat n'est pas géré");
            }
        }
Beispiel #16
0
 private List <FloodSentence> GetSentences(ChatActivableChannelsEnum channel)
 => Configuration.Sentences.Where(s => s.Channel == channel).ToList();
 public void Say(string message, ChatActivableChannelsEnum channel)
 {
     Bot.SendToServer(new ChatClientMultiMessage(message, (sbyte)channel));
 }
Beispiel #18
0
 public ChatChannelAttribute(ChatActivableChannelsEnum channel)
 {
     this.Channel = channel;
 }
 public static void SendChatAdminServerMessage(IPacketReceiver client, Character sender, ChatActivableChannelsEnum channel, string message)
 {
     ChatHandler.SendChatAdminServerMessage(client, sender, channel, message, System.DateTime.Now.GetUnixTimeStamp(), "");
 }
 private string GetChannelName(ChatActivableChannelsEnum channel)
 {
     return(m_channelNameConverter.GetChannelName(channel));
 }
Beispiel #21
0
        public static void SendChatServerMessage(IPacketReceiver client, Character sender, ChatActivableChannelsEnum channel, string message, int timestamp, string fingerprint)
        {
            if (string.IsNullOrEmpty(message))
            {
                return;
            }

            if (sender.UserGroup.Role <= RoleEnum.Moderator)
            {
                message = message.HtmlEntities();
            }

            client.Send(new ChatServerMessage(
                            (sbyte)channel,
                            message,
                            timestamp,
                            fingerprint,
                            sender.Id,
                            sender.Name,
                            sender.Account.Id));
        }
 public static bool IsGlobalChannel(ChatActivableChannelsEnum channel)
 {
     return(channel == ChatActivableChannelsEnum.CHANNEL_SALES || channel == ChatActivableChannelsEnum.CHANNEL_SEEK);
 }
Beispiel #23
0
 /// <summary>
 /// Send a message to a specific channel
 /// </summary>
 /// <param name="content">Content of chat Message</param>
 /// <param name="channel">Channel of the message</param>
 public void SendMessage(string content, ChatActivableChannelsEnum channel)
 {
     if (content == null) throw new ArgumentNullException("content");
     SendMessage(new ChatClientMultiMessage(content, (sbyte) channel));
 }
Beispiel #24
0
 /// <summary>
 /// Send a Message to the Client
 /// </summary>
 /// <param name="content">Content of chat Message</param>
 /// <param name="senderName">Name of the Sender</param>
 /// <param name="channel">Channel of the chat Message</param>
 public void SendMessageToClient(string content, string senderName, ChatActivableChannelsEnum channel)
 {
     if (content == null) throw new ArgumentNullException("content");
     if (senderName == null) throw new ArgumentNullException("senderName");
     m_bot.SendToClient(new ChatServerMessage((sbyte) channel, content, (int) DateTime.Now.DateTimeToUnixTimestamp(), "", 0, senderName, 0));
 }
Beispiel #25
0
        public static void SendChatServerCopyWithObjectMessage(IPacketReceiver client, Character sender, Character receiver, ChatActivableChannelsEnum channel, string message,
                                                               int timestamp, string fingerprint, IEnumerable <ObjectItem> objectItems)
        {
            if (!sender.UserGroup.IsGameMaster)
            {
                message = message.HtmlEntities();
            }

            client.Send(new ChatServerCopyWithObjectMessage(
                            (sbyte)channel,
                            message,
                            timestamp,
                            fingerprint,
                            receiver.Id,
                            receiver.Name,
                            objectItems));
        }
Beispiel #26
0
 public static void SendChatServerCopyWithObjectMessage(IPacketReceiver client, Character sender, Character receiver, ChatActivableChannelsEnum channel,
                                                        string message, IEnumerable <ObjectItem> objectItems)
 {
     SendChatServerCopyWithObjectMessage(client, sender, receiver, channel, message, DateTime.Now.GetUnixTimeStamp(), "", objectItems);
 }
Beispiel #27
0
 public static void SendChatServerWithObjectMessage(IPacketReceiver client, INamedActor sender, ChatActivableChannelsEnum channel, string content, string fingerprint, IEnumerable <ObjectItem> objectItems)
 {
     client.Send(new ChatServerWithObjectMessage((sbyte)channel, content, DateTime.Now.GetUnixTimeStamp(), fingerprint, sender.Id, sender.Name, 0, objectItems));
 }
Beispiel #28
0
 public static void SendChatAdminServerMessage(IPacketReceiver client, Character sender, ChatActivableChannelsEnum channel, string message,
                                               int timestamp, string fingerprint)
 {
     SendChatAdminServerMessage(client, channel,
                                message,
                                timestamp,
                                fingerprint,
                                sender.Id,
                                sender.Name,
                                sender.Account.Id);
 }
 private static void SendChatServerMessage(IPacketReceiver client, Character sender, ChatActivableChannelsEnum channel, string message)
 {
     if (sender.AdminMessagesEnabled)
     {
         ChatHandler.SendChatAdminServerMessage(client, sender, channel, message);
     }
     else
     {
         ChatHandler.SendChatServerMessage(client, sender, channel, message);
     }
 }
Beispiel #30
0
 private static void SendChatServerWithObjectMessage(IPacketReceiver client, INamedActor sender, ChatActivableChannelsEnum channel, string message, IEnumerable <ObjectItem> objectItems)
 {
     ChatHandler.SendChatServerWithObjectMessage(client, sender, channel, message, "", objectItems);
 }
 private static void SendChatServerMessage(IPacketReceiver client, INamedActor sender, ChatActivableChannelsEnum channel, string message)
 {
     ChatHandler.SendChatServerMessage(client, sender, channel, message);
 }
 public static void SendChatServerCopyMessage(IPacketReceiver client, Character sender, Character receiver, ChatActivableChannelsEnum channel, string message, int timestamp, string fingerprint)
 {
     if (sender.UserGroup.Role <= RoleEnum.Moderator)
     {
         message = message.HtmlEntities();
     }
     client.Send(new ChatServerCopyMessage((sbyte)channel, message, timestamp, fingerprint, (uint)receiver.Id, receiver.Name));
 }
Beispiel #33
0
 public static void SendChatServerCopyMessage(IPacketReceiver client, Character sender, Character receiver, ChatActivableChannelsEnum channel, string message)
 {
     SendChatServerCopyMessage(client, sender, receiver, channel, message, DateTime.Now.GetUnixTimeStamp(), "");
 }
Beispiel #34
0
 public static void SendChatServerMessage(IPacketReceiver client, INamedActor sender, ChatActivableChannelsEnum channel, string message,
                                          int timestamp, string fingerprint)
 {
     client.Send(new ChatServerMessage(
                     (sbyte)channel,
                     message,
                     timestamp,
                     fingerprint,
                     sender.Id,
                     sender.Name,
                     0));
 }