示例#1
0
        public static void MessageFrom(ChatScope scope, Player source, string msg, object arg,
                                       ChatMessageFilter filter, bool irc = false)
        {
            Player[]          players     = PlayerInfo.Online.Items;
            ChatMessageFilter scopeFilter = scopeFilters[(int)scope];

            OnChatFromEvent.Call(scope, source, msg, arg, ref filter, irc);
            foreach (Player pl in players)
            {
                if (!scopeFilter(pl, arg))
                {
                    continue;
                }
                if (filter != null && !filter(pl, arg))
                {
                    continue;
                }

                if (Ignoring(pl, source))
                {
                    continue;
                }
                pl.Message(UnescapeMessage(pl, source, msg));
            }
        }
示例#2
0
 void HandleChatSys(ChatScope scope, string msg, object arg,
                    ref ChatMessageFilter filter, bool irc)
 {
     if (irc)
     {
         MessageToIRC(scope, msg, arg, filter);
     }
 }
示例#3
0
 void HandleChat(ChatScope scope, Player source, string msg,
                 object arg, ref ChatMessageFilter filter, bool irc)
 {
     if (irc)
     {
         MessageToIRC(scope, Unescape(source, msg), arg, filter);
     }
 }
示例#4
0
 void HandleChatSys(ChatScope scope, string msg, object arg,
                    ref ChatMessageFilter filter, bool relay)
 {
     if (relay)
     {
         MessageToRelay(scope, msg, arg, filter);
     }
 }
示例#5
0
 void HandleChatFrom(ChatScope scope, Player source, string msg,
                     object arg, ref ChatMessageFilter filter, bool relay)
 {
     if (relay)
     {
         MessageToRelay(scope, Unescape(source, msg), arg, filter);
     }
 }
示例#6
0
    // Token: 0x06001944 RID: 6468 RVA: 0x000873A0 File Offset: 0x000855A0
    public void SendPrivateChatMessage(int receiverCmid, string receiverName, string message)
    {
        message = ChatMessageFilter.Cleanup(message);
        if (!string.IsNullOrEmpty(message))
        {
            Singleton <ChatManager> .Instance.AddNewPrivateMessage(receiverCmid, new InstantMessage(PlayerDataManager.Cmid, PlayerDataManager.Name, message, PlayerDataManager.AccessLevel, ChatContext.None));

            base.Operations.SendChatMessageToPlayer(receiverCmid, message);
        }
    }
示例#7
0
 public static void Call(ChatScope scope, string msg, object arg,
                         ref ChatMessageFilter filter, bool relay)
 {
     IEvent <OnChatSys>[] items = handlers.Items;
     for (int i = 0; i < items.Length; i++)
     {
         try { items[i].method(scope, msg, arg, ref filter, relay); }
         catch (Exception ex) { LogHandlerException(ex, items[i]); }
     }
 }
示例#8
0
        void OnChat(ChatScope scope, Player source, string msg,
                    object arg, ref ChatMessageFilter filter, bool relay)
        {
            if (!relay)
            {
                return;
            }

            msg = PrepareMessage(msg);
            MessageToRelay(scope, Unescape(source, msg), arg, filter);
        }
示例#9
0
        void OnChatSys(ChatScope scope, string msg, object arg,
                       ref ChatMessageFilter filter, bool relay)
        {
            if (!relay)
            {
                return;
            }

            msg = PrepareMessage(msg);
            MessageToRelay(scope, msg, arg, filter);
        }
示例#10
0
 // Token: 0x06001A9C RID: 6812 RVA: 0x0008B318 File Offset: 0x00089518
 public bool SendChatMessage(string message, ChatContext context)
 {
     message = ChatMessageFilter.Cleanup(message);
     if (!string.IsNullOrEmpty(message) && !ChatMessageFilter.IsSpamming(message))
     {
         GameStateHelper.OnChatMessage(PlayerDataManager.Cmid, PlayerDataManager.Name, message, PlayerDataManager.AccessLevel, (byte)ChatManager.CurrentChatContext);
         this.Actions.ChatMessage(message, (byte)ChatManager.CurrentChatContext);
         return(true);
     }
     return(false);
 }
示例#11
0
 public static void MessageChat(Player source, string msg,
                                ChatMessageFilter filter = null, bool irc = false)
 {
     if (source.level.SeesServerWideChat)
     {
         MessageChat(ChatScope.Global, source, msg, null, filter, irc);
     }
     else
     {
         string prefix = Server.Config.ServerWideChat ? "<Local>" : "";
         MessageChat(ChatScope.Level, source, prefix + msg, source.level, filter);
     }
 }
示例#12
0
        /// <summary> Sends a chat message from the given player (e.g. regular player chat or /me) </summary>
        /// <remarks> Chat messages will increase player's total messages sent in /info,
        /// and count towards triggering automute for chat spamming </remarks>
        /// <remarks> Only players not ignoring the given player will see this message. </remarks>
        public static void MessageChat(ChatScope scope, Player source, string msg, object arg,
                                       ChatMessageFilter filter, bool relay = false)
        {
            Player[]          players     = PlayerInfo.Online.Items;
            ChatMessageFilter scopeFilter = scopeFilters[(int)scope];
            bool counted = false;

            // Filter out bad words
            if (Server.Config.ProfanityFiltering)
            {
                msg = ProfanityFilter.Parse(msg);
            }

            OnChatEvent.Call(scope, source, msg, arg, ref filter, relay);
            foreach (Player pl in players)
            {
                if (Ignoring(pl, source))
                {
                    continue;
                }
                // Always show message to self too (unless ignoring self)

                if (pl != source)
                {
                    if (!scopeFilter(pl, arg))
                    {
                        continue;
                    }
                    if (filter != null && !filter(pl, arg))
                    {
                        continue;
                    }

                    if (!counted)
                    {
                        source.TotalMessagesSent++; counted = true;
                    }
                }
                else
                {
                    // don't send PM back to self
                    if (scope == ChatScope.PM)
                    {
                        continue;
                    }
                }

                pl.Message(UnescapeMessage(pl, source, msg));
            }
            source.CheckForMessageSpam();
        }
示例#13
0
 public static void MessageChat(Player source, string msg,
                                ChatMessageFilter filter = null, bool relay = false)
 {
     // super players don't have a level
     if (source.level == null || source.level.SeesServerWideChat)
     {
         MessageChat(ChatScope.Global, source, msg, null, filter, relay);
     }
     else
     {
         string prefix = Server.Config.ServerWideChat ? "<Local>" : "";
         MessageChat(ChatScope.Level, source, prefix + msg, source.level, filter);
     }
 }
示例#14
0
 // Token: 0x06001942 RID: 6466 RVA: 0x00087278 File Offset: 0x00085478
 public void SendClanChatMessage(string message)
 {
     message = ChatMessageFilter.Cleanup(message);
     if (!string.IsNullOrEmpty(message))
     {
         List <int> list = new List <int>();
         foreach (CommUser commUser in Singleton <ChatManager> .Instance.ClanUsers)
         {
             if (commUser.Cmid != PlayerDataManager.Cmid)
             {
                 list.Add(commUser.Cmid);
             }
         }
         this.OnClanChatMessage(PlayerDataManager.Cmid, PlayerDataManager.Name, message);
         base.Operations.SendChatMessageToClan(list, message);
     }
 }
示例#15
0
        void MessageToRelay(ChatScope scope, string msg, object arg, ChatMessageFilter filter)
        {
            ChatMessageFilter scopeFilter = Chat.scopeFilters[(int)scope];

            fakeGuest.group = Group.DefaultRank;

            if (scopeFilter(fakeGuest, arg) && (filter == null || filter(fakeGuest, arg)))
            {
                SendPublicMessage(msg); return;
            }

            fakeStaff.group = GetControllerRank();
            if (scopeFilter(fakeStaff, arg) && (filter == null || filter(fakeStaff, arg)))
            {
                SendStaffMessage(msg);
            }
        }
示例#16
0
        internal static void HandleOnChat(ChatScope scope, Player source, string msg,
                                          object arg, ref ChatMessageFilter filter, bool irc)
        {
            msg = msg.Replace("λFULL", source.name).Replace("λNICK", source.name);
            LogType logType = LogType.PlayerChat;

            if (scope == ChatScope.Perms)
            {
                logType = LogType.StaffChat;
            }
            else if (scope == ChatScope.Chatroom || scope == ChatScope.AllChatrooms)
            {
                logType = LogType.ChatroomChat;
            }
            else if (scope == ChatScope.Rank)
            {
                logType = LogType.RankChat;
            }

            if (scope != ChatScope.PM)
            {
                Logger.Log(logType, msg);
            }
            Player[]          players     = PlayerInfo.Online.Items;
            ChatMessageFilter scopeFilter = Chat.scopeFilters[(int)scope];

            foreach (Player pl in players)
            {
                if (pl == source || Chat.Ignoring(pl, source))
                {
                    continue;
                }
                if (!scopeFilter(pl, arg))
                {
                    continue;
                }
                if (filter != null && !filter(pl, arg))
                {
                    continue;
                }

                source.TotalMessagesSent++; break;
            }
        }
示例#17
0
        public static void Message(ChatScope scope, string msg, object arg,
                                   ChatMessageFilter filter, bool relay = false)
        {
            Player[]          players     = PlayerInfo.Online.Items;
            ChatMessageFilter scopeFilter = scopeFilters[(int)scope];

            OnChatSysEvent.Call(scope, msg, arg, ref filter, relay);
            foreach (Player pl in players)
            {
                if (!scopeFilter(pl, arg))
                {
                    continue;
                }
                if (filter != null && !filter(pl, arg))
                {
                    continue;
                }
                pl.Message(msg);
            }
        }
示例#18
0
 // Token: 0x06001943 RID: 6467 RVA: 0x00087320 File Offset: 0x00085520
 public bool SendLobbyChatMessage(string message)
 {
     message = ChatMessageFilter.Cleanup(message);
     if (string.IsNullOrEmpty(message))
     {
         return(false);
     }
     if (PlayerDataManager.AccessLevel >= MemberAccessLevel.Moderator && message[0] == '/' && this.DoModChatCmd(message))
     {
         GUI.FocusControl("@CurrentChatMessage");
         return(true);
     }
     if (ChatMessageFilter.IsSpamming(message))
     {
         return(false);
     }
     this.OnLobbyChatMessage(PlayerDataManager.Cmid, PlayerDataManager.Name, message);
     base.Operations.SendChatMessageToAll(message);
     return(true);
 }
示例#19
0
        void MessageToIRC(ChatScope scope, string msg, object arg, ChatMessageFilter filter)
        {
            ChatMessageFilter scopeFilter = Chat.scopeFilters[(int)scope];

            if (scopeFilter(ircDefault, arg) && (filter == null || filter(ircDefault, arg)))
            {
                bot.Say(msg, false);
            }
            else
            {
                ircOp.group = Group.Find(Server.Config.IRCControllerRank);
                if (ircOp.group == null)
                {
                    ircOp.group = Group.NobodyRank;
                }

                if (scopeFilter(ircOp, arg) && (filter == null || filter(ircOp, arg)))
                {
                    bot.Say(msg, true);
                }
            }
        }
示例#20
0
        public static void MessageChat(ChatScope scope, Player source, string msg, object arg,
                                       ChatMessageFilter filter, bool irc = false)
        {
            Player[]          players     = PlayerInfo.Online.Items;
            ChatMessageFilter scopeFilter = scopeFilters[(int)scope];

            OnChatEvent.Call(scope, source, msg, arg, ref filter, irc);
            foreach (Player pl in players)
            {
                if (Ignoring(pl, source))
                {
                    continue;
                }
                // Always show message to self too (unless ignoring self)
                if (pl != source)
                {
                    if (!scopeFilter(pl, arg))
                    {
                        continue;
                    }
                    if (filter != null && !filter(pl, arg))
                    {
                        continue;
                    }
                }
                else
                {
                    // don't send PM back to self
                    if (scope == ChatScope.PM)
                    {
                        continue;
                    }
                }

                pl.Message(UnescapeMessage(pl, source, msg));
            }
            source.CheckForMessageSpam();
        }
示例#21
0
        internal static void HandleOnChat(ChatScope scope, Player source, string msg,
                                          object arg, ref ChatMessageFilter filter, bool irc)
        {
            msg = msg.Replace("λFULL", source.name).Replace("λNICK", source.name);
            LogType logType = LogType.PlayerChat;

            if (scope == ChatScope.Perms)
            {
                logType = LogType.StaffChat;
            }
            else if (scope == ChatScope.Chatroom || scope == ChatScope.AllChatrooms)
            {
                logType = LogType.ChatroomChat;
            }
            else if (scope == ChatScope.Rank)
            {
                logType = LogType.RankChat;
            }

            if (scope != ChatScope.PM)
            {
                Logger.Log(logType, msg);
            }
        }