コード例 #1
0
        private static void EventSink_RenameRequest(Mobile from, Mobile targ, string name)
        {
            if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from))
            {
                name = name.Trim();

                if (NameVerification.Validate(
                        name,
                        1,
                        16,
                        true,
                        false,
                        true,
                        0,
                        NameVerification.Empty,
                        NameVerification.StartDisallowed,
                        Core.ML ? NameVerification.Disallowed : Array.Empty <string>()
                        ))
                {
                    if (Core.ML)
                    {
                        var disallowed = ProfanityProtection.Disallowed;

                        for (var i = 0; i < disallowed.Length; i++)
                        {
                            if (name.IndexOfOrdinal(disallowed[i]) != -1)
                            {
                                from.SendLocalizedMessage(1072622); // That name isn't very polite.
                                return;
                            }
                        }

                        from.SendLocalizedMessage(
                            1072623,
                            $"{targ.Name}\t{name}"
                            ); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~.
                    }

                    targ.Name = name;
                }
                else
                {
                    from.SendMessage("That name is unacceptable.");
                }
            }
        }
コード例 #2
0
ファイル: RenameRequests.cs プロジェクト: ifeelrobbed/ServUO
        private static void EventSink_RenameRequest(RenameRequestEventArgs e)
        {
            Mobile from = e.From;
            Mobile targ = e.Target;
            string name = e.Name;

            if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from))
            {
                name = name.Trim();

                var numExceptions = 0;
                var exceptions    = NameVerification.Empty;

                if (targ is BaseCreature)
                {
                    exceptions    = new char[] { ' ' };
                    numExceptions = 5;
                }

                if (NameVerification.Validate(name, 1, 16, true, false, true, numExceptions, exceptions, NameVerification.StartDisallowed, (Core.ML ? NameVerification.Disallowed : new string[] { })))
                {
                    if (Core.ML)
                    {
                        string[] disallowed = ProfanityProtection.Disallowed;

                        for (int i = 0; i < disallowed.Length; i++)
                        {
                            if (name.IndexOf(disallowed[i]) != -1)
                            {
                                from.SendLocalizedMessage(1072622); // That name isn't very polite.
                                return;
                            }
                        }

                        from.SendLocalizedMessage(1072623, String.Format("{0}\t{1}", targ.Name, name)); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~.
                    }

                    targ.Name = name;
                }
                else
                {
                    from.SendMessage("That name is unacceptable.");
                }
            }
        }
コード例 #3
0
        private static void SetName(Mobile m, string name)
        {
            name = name.Trim();

            if (m.Account.AccessLevel == AccessLevel.Player)
            {
                NameResultMessage result = NameVerification.ValidatePlayerName(
                    name, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote);

                m.Name = result != NameResultMessage.Allowed ? String.Format("Citizen {0}", Utility.Random(10000, 99999)) : name;
            }
            else
            {
                m.Name = name;
            }

            //return result;
        }
コード例 #4
0
        private static void EventSink_RenameRequest(RenameRequestEventArgs e)
        {
            Mobile from = e.From;
            Mobile targ = e.Target;
            string name = e.Name;

            if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from))
            {
                name = name.Trim();

                if (NameVerification.Validate(name, 1, 16, true, false, true, 0, NameVerification.Empty))
                {
                    targ.Name = name;
                }
                else
                {
                    from.SendMessage("That name is unacceptable.");
                }
            }
        }
コード例 #5
0
        public static bool EventSink_ValidatePlayerName(ValidatePlayerNameEventArgs e)
        {
            NetState state     = e.State;
            string   name      = e.Name;
            string   lowername = name.ToLower();

            NameResultMessage result = NameVerification.ValidatePlayerName(lowername, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote);

            switch (result)
            {
            default:
            case NameResultMessage.NotAllowed: SendErrorOnCharacterCreation(state, String.Format("The name {0} is not allowed.", name)); return(false);

            case NameResultMessage.InvalidCharacter: SendErrorOnCharacterCreation(state, String.Format("The name {0} contains invalid characters.", name)); return(false);

            case NameResultMessage.TooFewCharacters:
            case NameResultMessage.TooManyCharacters: SendErrorOnCharacterCreation(state, "The name must be between 2-16 characters."); return(false);

            case NameResultMessage.AlreadyExists: SendErrorOnCharacterCreation(state, String.Format("A player with the name {0} already exists.", name)); return(false);

            case NameResultMessage.Allowed: return(true);
            }
        }
コード例 #6
0
ファイル: UniqueNames.cs プロジェクト: zerodowned/last-wish
        public static bool AlreadyInUse(Mobile m, string name)
        {
            if (m == null || name == null || name.Length == 0)
            {
                return(true);
            }

            string nameToLower = name.ToLower();

            if (nameToLower == "generic player")
            {
                return(true);
            }

            /*
             * if (AllowedDupes.Contains(nameToLower))
             *  return false;
             *
             * if (Disallowed.Contains(nameToLower))
             *  return true;
             */

            if (!NameVerification.Validate(name, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
            {
                return(true);
            }

            foreach (Mobile mob in World.Mobiles.Values)
            {
                if (mob is PlayerMobile && mob != m && mob.RawName != null && mob.RawName.ToLower() == nameToLower && ((PlayerMobile)m).CreationTime > ((PlayerMobile)mob).CreationTime)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #7
0
        private static void EventSink_RenameRequest(RenameRequestEventArgs e)
        {
            Mobile from = e.From;
            Mobile targ = e.Target;
            string name = e.Name;

            if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from))
            {
                name = name.Trim();

                if (NameVerification.Validate(name, 1, 16, true, false, true, 0, NameVerification.Empty, NameVerification.StartDisallowed, (/*Core.ML ?*/ NameVerification.Disallowed /*: new string[]{}*/)) == NameResultMessage.Allowed)
                {
//					if( Core.ML )
//					{
                    string[] disallowed = ProfanityProtection.Disallowed;

                    for (int i = 0; i < disallowed.Length; i++)
                    {
                        if (name.IndexOf(disallowed[i]) != -1)
                        {
                            from.SendLocalizedMessage(1072622);                                       // That name isn't very polite.
                            return;
                        }
                    }

                    from.SendLocalizedMessage(1072623, String.Format("{0}\t{1}", targ.Name, name));                                 // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~.
//					}

                    targ.Name = name;
                }
                else
                {
                    from.SendMessage("That name is unacceptable.");
                }
            }
        }
コード例 #8
0
        public static bool CheckDupe(Mobile m, string name)
        {
            if (m == null || name == null || name.Length == 0)
            {
                return(false);
            }

            name = name.Trim();             //Trim the name and re-assign it

            if (!NameVerification.Validate(name, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
            {
                return(false);
            }

            foreach (Mobile wm in World.Mobiles.Values)
            {
                if (wm != m && !wm.Deleted && wm is PlayerMobile && Insensitive.Equals(wm.RawName, name)) //Filter Mobiles by PlayerMobile type and do the name check in one go, no need for another list.
                {
                    return(false);                                                                        // No need to clear anything since we did not make any temporary lists.
                }
            }

            return(true);
        }
コード例 #9
0
        private static void EventSink_RenameRequest(RenameRequestEventArgs e)
        {
            Mobile m    = e.From;
            Mobile targ = e.Target;
            string name = e.Name;

            if (!m.CanSee(targ) || !m.InRange(targ, 12) || !targ.CanBeRenamedBy(m))
            {
                return;
            }

            name = name.Trim();

            if (m.AccessLevel < AccessLevel.GameMaster)
            {
                if (ProfanityProtection.DisallowedAnywhere.Any(badWord => StringSearchFlags.Contains.Execute(name, badWord, true)))
                {
                    m.SendMessage("That name isn't very polite.");
                    return;
                }

                var result = NameVerification.ValidatePlayerName(
                    name, 1, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote);

                if (result != NameResultMessage.Allowed && result != NameResultMessage.AlreadyExists)
                {
                    m.SendMessage("That name isn't acceptable.");
                    return;
                }
            }

            targ.Name = name;

            // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~.
            m.SendLocalizedMessage(1072623, String.Format("{0}\t{1}", targ.Name, name));
        }
コード例 #10
0
        public static void ReserveName(CommandEventArgs e)
        {
            if (e.Arguments.Length == 0 || string.IsNullOrEmpty(e.Arguments[0]))
            {
                e.Mobile.SendMessage(0x22, String.Format("Please specify the name."));
                return;
            }

            var key = e.Arguments[0].ToLower();

            if (!NameVerification.Validate(key, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote))
            {
                e.Mobile.SendMessage(0x22, String.Format("The name \"{0}\" is invalid.", e.Arguments[0]));
            }
            else if (e.Mobile is PlayerMobile && !Names.Contains(key))
            {
                Names.Add(key);
                e.Mobile.SendMessage(0x59, String.Format("The name \"{0}\" has been reserved.", e.Arguments[0]));
            }
            else
            {
                e.Mobile.SendMessage(0x22, String.Format("The name \"{0}\" has already been reserved.", e.Arguments[0]));
            }
        }
コード例 #11
0
        private static Account CreateAccount(NetState state, string un, string pw)
        {
            if (un.Length == 0 || pw.Length == 0)
            {
                return(null);
            }

            bool isSafe = true;

            for (int i = 0; isSafe && i < un.Length; ++i)
            {
                isSafe = (un[i] >= 0x20 && un[i] < 0x80);
            }

            for (int i = 0; isSafe && i < pw.Length; ++i)
            {
                isSafe = (pw[i] >= 0x20 && pw[i] < 0x80);
            }

            if (!isSafe || (NameVerification.Validate(un, 0, int.MaxValue, true, true, false, int.MaxValue, new char[0]) != NameResultMessage.Allowed))
            {
                return(null);
            }

            if (!CanCreate(state.Address))
            {
                Console.WriteLine("Login: {0}: Account '{1}' not created, ip already has {2} account{3}.", state, un, MaxAccountsPerIP, MaxAccountsPerIP == 1 ? "" : "s");
                return(null);
            }

            Console.WriteLine("Login: {0}: Creating new account '{1}'", state, un);

            Account a = new Account(un, pw);

            return(a);
        }
コード例 #12
0
        public static void ValidateAllNames_OnCommand(CommandEventArgs e)
        {
            Dictionary <string, List <PlayerMobile> > table = new Dictionary <string, List <PlayerMobile> >(World.Mobiles.Values.Count);

            foreach (Mobile m in World.Mobiles.Values)
            {
                if (!(m is PlayerMobile))
                {
                    continue;
                }

                string rawName = m.RawName.ToLower().Trim();

                if (rawName == "generic player")
                {
                    continue;
                }

                if (m.AccessLevel > AccessLevel.Player)
                {
                    continue;
                }

                m.RawName = "testtest1233";

                if (!NameVerification.Validate(rawName, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
                {
                    m.RawName = "testtest1234";
                    Console.WriteLine(rawName);
                    if (table.ContainsKey(rawName))
                    {
                        List <PlayerMobile> players = table[rawName];
                        players.Add(m as PlayerMobile);
                    }
                    else
                    {
                        List <PlayerMobile> newList = new List <PlayerMobile>();
                        newList.Add(m as PlayerMobile);
                        table.Add(rawName, newList);
                    }
                }
                else
                {
                    m.RawName = rawName;
                }

                Queue <PlayerMobile> toRename = new Queue <PlayerMobile>();

                foreach (KeyValuePair <string, List <PlayerMobile> > entry in table)
                {
                    var list = entry.Value;

                    if (list.Count == 0)
                    {
                        continue;
                    }
                    else if (list.Count == 1)
                    {
                        toRename.Enqueue(list[0]);
                    }
                    else
                    {
                        list.Sort(new Comparison <PlayerMobile>(SortByGameTime));

                        for (int i = 1; i < list.Count; i++)
                        {
                            toRename.Enqueue(list[i]);
                        }
                    }
                }

                while (toRename.Count > 0)
                {
                    PlayerMobile pm = toRename.Dequeue();
                    pm.RawName = "Generic Player";
                }

                toRename.Clear();
            }
        }