示例#1
0
        protected virtual void Broadcast(Mobile m, string msg)
        {
            foreach (Data data in Data.Datas.Values)
            {
                if (c_Mobiles.Contains(data.Mobile) && !data.Ignores.Contains(m))
                {
                    if (c_Style == ChatStyle.Regional && data.Mobile.Region != m.Region)
                    {
                        continue;
                    }

                    data.Mobile.SendMessage(m.AccessLevel == AccessLevel.Player ? ColorFor(data.Mobile) : Data.GetData(m).StaffC, String.Format("<{0}{1}> {2}: {3}", NameFor(m), (c_Style == ChatStyle.Regional && m.Region != null ? "-" + m.Region.Name : ""), m.Name, msg));
                }
                else if (data.Mobile.AccessLevel >= m.AccessLevel && ((data.GlobalC && !data.GIgnores.Contains(m)) || data.GListens.Contains(m)))
                {
                    data.Mobile.SendMessage(data.GlobalCC, String.Format("(Global) <{0}{1}> {2}: {3}", c_Name, (c_Style == ChatStyle.Regional && m.Region != null ? "-" + m.Region.Name : ""), m.Name, msg));
                }
            }
        }
示例#2
0
        private static void OnLogin(LoginEventArgs args)
        {
            if (Data.GetData(args.Mobile).NewMsg())
            {
                PmNotify(args.Mobile);
            }

            if (!Data.GetData(args.Mobile).WhenFull)
            {
                args.Mobile.SendMessage(Data.GetData(args.Mobile).SystemC, General.Local(258), Data.GetData(args.Mobile).Messages.Count, Data.MaxMsgs);
            }

            foreach (Data data in Data.Datas.Values)
            {
                if (data.Friends.Contains(args.Mobile) && data.FriendAlert)
                {
                    data.Mobile.SendMessage(data.SystemC, args.Mobile.RawName + " " + Local(173));
                }
            }
        }
示例#3
0
        public virtual void OnChat(Mobile m, string msg, bool spam)
        {
            if (msg == null || msg == "")
            {
                if (!CanChat(m, false))
                {
                    General.List(m, 0);
                    return;
                }

                if (c_Mobiles.Contains(m))
                {
                    Data.GetData(m).CurrentChannel = this;
                }

                General.List(m, 1);
                return;
            }

            if (!CanChat(m, true))
            {
                return;
            }

            if (c_Filter)
            {
                msg = Chat3.Filter.FilterText(m, msg);
            }

            if (!CanChat(m, false))
            {
                return;
            }

            if (!c_Mobiles.Contains(m))
            {
                m.SendMessage(Data.GetData(m).SystemC, General.Local(34));
                return;
            }

            if (c_Delay && !TrackSpam.LogSpam(m, "Chat", TimeSpan.FromSeconds(Data.ChatSpam)))
            {
                if (spam)
                {
                    m.SendMessage(Data.GetData(m).SystemC, General.Local(97));
                }
                Timer.DelayCall(TimeSpan.FromSeconds(4), new TimerStateCallback(OnChat), new object[] { m, msg });
                return;
            }

            AddHistory(m, msg);
            UpdateHistory(m);
            Events.InvokeChat(new ChatEventArgs(m, this, msg));

            if (Data.LogChat)
            {
                Logging.LogChat(String.Format(DateTime.Now + " <{0}{1}> {2}: {3}", c_Name, (c_Style == ChatStyle.Regional && m.Region != null ? "-" + m.Region.Name : ""), m.Name, msg));
            }

            Data.TotalChats++;
            Data.GetData(m).Karma++;

            Broadcast(m, msg);

            if (c_ToIrc && IrcConnection.Connection.Connected)
            {
                IrcConnection.Connection.SendUserMessage(m, "(" + c_Name + ") " + msg);
            }
        }