コード例 #1
0
ファイル: ChatModes.cs プロジェクト: ProtheanGod/KingMC
        static void HandleWhisper(Player p, string target, string message)
        {
            Player who = PlayerInfo.FindMatches(p, target);

            if (who == null)
            {
                return;
            }
            if (who == p)
            {
                Player.Message(p, "Trying to talk to yourself, huh?"); return;
            }

            if (who.Ignores.All)
            {
                DoFakePM(p, who, message);
            }
            else if (p != null && who.Ignores.Names.CaselessContains(p.name))
            {
                DoFakePM(p, who, message);
            }
            else
            {
                DoPM(p, who, message);
            }

            if (p != null)
            {
                p.CheckForMessageSpam();
            }
        }
コード例 #2
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();
        }
コード例 #3
0
ファイル: ChatModes.cs プロジェクト: ProtheanGod/KingMC
        static void DoConsolePM(Player p, string message)
        {
            if (message.Length < 1)
            {
                Player.Message(p, "No message entered"); return;
            }
            Player.Message(p, "[<] Console: &f" + message);
            string name = p == null ? "(console)" : p.name;

            Logger.Log(LogType.PrivateChat, "{0} @(console): {1}", name, message);

            if (p != null)
            {
                p.CheckForMessageSpam();
            }
        }
コード例 #4
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();
        }
コード例 #5
0
ファイル: ChatModes.cs プロジェクト: ProtheanGod/KingMC
        public static void MessageStaff(Player p, string message,
                                        LevelPermission perm, string group)
        {
            string displayName = p == null ? "(console)" : p.ColoredName;
            string name        = p == null ? "(console)" : p.name;
            string format      = "To " + group + " &f-{0}&f- {1}";

            if (message.Length == 0)
            {
                Player.Message(p, "No message to send."); return;
            }

            Chat.MessageWhere(format,
                              pl => (p == pl || pl.Rank >= perm) && Chat.NotIgnoring(pl, p),
                              displayName, message);

            if (p != null)
            {
                p.CheckForMessageSpam();
            }
            Logger.Log(LogType.StaffChat, "({0}): {1}: {2}", group, name, message);
            Server.IRC.Say(displayName + "%S: " + message, true);
        }