Esempio n. 1
0
        public void SendMessage(string msg, ChatMessageType type = ChatMessageType.Broadcast, WorldObject source = null)
        {
            if (SquelchManager.IsLegalChannel(type) && SquelchManager.Squelches.Contains(source, type))
            {
                return;
            }

            Session.Network.EnqueueSend(new GameMessageSystemChat(msg, type));
        }
Esempio n. 2
0
        /// <summary>
        /// Returns TRUE if the input player is filtered by this player
        /// </summary>
        public bool Contains(WorldObject source, ChatMessageType messageType = ChatMessageType.AllChannels)
        {
            // ensure this channel can be squelched
            if (messageType != ChatMessageType.AllChannels && !SquelchManager.IsLegalChannel(messageType))
            {
                return(false);
            }

            var squelchMask = messageType.ToMask();

            if (source is Player player)
            {
                // check account squelches

                // the client forces account squelches to be AllMessages,
                // so for these, channel mask is not required

                if (Accounts.ContainsKey(player.Session.Account))
                {
                    return(true);
                }

                // check character squelches
                Characters.TryGetValue(player.Guid.Full, out var squelchInfo);

                if (squelchInfo != null && squelchInfo.Filters[0].HasFlag(squelchMask))
                {
                    return(true);
                }
            }

            // check global squelches
            if (Globals.Filters.Count > 0 && Globals.Filters[0].HasFlag(squelchMask))
            {
                return(true);
            }

            return(false);
        }