Esempio n. 1
0
        public static bool CheckProfanity(string s, int maxLength)
        {
            return(NameVerification.Validate(s, 1, 50, true, true, false, int.MaxValue, ProfanityProtection.Exceptions, NameVerification.DisallowedWords, NameVerification.StartDisallowed, NameVerification.DisallowedAnywhere) == NameResultMessage.Allowed);

/*
 *                      //With testing on OSI, Guild stuff seems to follow a 'simpler' method of profanity protection
 *                      if( s.Length < 1 || s.Length > maxLength )
 *                              return false;
 *
 *                      char[] exceptions = ProfanityProtection.Exceptions;
 *
 *                      s = s.ToLower();
 *
 *                      for ( int i = 0; i < s.Length; ++i )
 *                      {
 *                              char c = s[i];
 *
 *                              if ( (c < 'a' || c > 'z') && (c < '0' || c > '9'))
 *                              {
 *                                      bool except = false;
 *
 *                                      for( int j = 0; !except && j < exceptions.Length; j++ )
 *                                              if( c == exceptions[j] )
 *                                                      except = true;
 *
 *                                      if( !except )
 *                                              return false;
 *                              }
 *                      }
 *
 *                      string[] disallowed = ProfanityProtection.DisallowedWords;
 *
 *                      for( int i = 0; i < disallowed.Length; i++ )
 *                              if ( s.IndexOf( disallowed[i] ) != -1 )
 *                                      return false;
 *
 *                      string[] disallowed = ProfanityProtection.DisallowedAnywhere;
 *
 *                      for( int i = 0; i < disallowed.Length; i++ )
 *                              if ( s.IndexOf( disallowed[i] ) != -1 )
 *                                      return false;
 *
 *
 *                      return true;
 */
        }
Esempio n. 2
0
        private static void OnLogin(LoginEventArgs e)
        {
            PlayerMobile mob = e.Mobile as PlayerMobile;

            if (mob == null)
            {
                return;                                                          // pseudoseer controlled basecreature
            }
            if (AccessLevelToggler.GetRawAccessLevel(mob) == AccessLevel.Player) //Incase [staff was used
            {
                NameResultMessage result = NameVerification.Validate(mob.RawName, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote);
                if (result != NameResultMessage.Allowed)
                {
                    mob.SendGump(new NameChangeGump(mob));
                }
            }
        }
Esempio n. 3
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 : new string[] { }
                        ))
                {
                    if (Core.ML)
                    {
                        var disallowed = ProfanityProtection.Disallowed;

                        for (var 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,
                            $"{targ.Name}\t{name}"
                            ); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~.
                    }

                    targ.Name = name;
                }
                else
                {
                    from.SendMessage("That name is unacceptable.");
                }
            }
        }
        protected override void OnAccept(GumpButton button)
        {
            if (String.IsNullOrWhiteSpace(InputText) || !NameVerification.Validate(
                    InputText,
                    2,
                    20,
                    true,
                    false,
                    true,
                    1,
                    NameVerification.SpaceDashPeriodQuote))
            {
                Html = ("The name \"" + InputText + "\" is invalid.\n\n").WrapUOHtmlColor(Color.OrangeRed, HtmlColor) +
                       "It appears that another character is already using the name \"" +                     //
                       User.RawName.WrapUOHtmlColor(Color.LawnGreen, HtmlColor) + "\"!\n\n" +                 //
                       "Please enter a new name for your character...";

                InputText = NameList.RandomName(User.Female ? "female" : "male");

                Refresh(true);
                return;
            }

            if (InputText == User.RawName || PlayerNames.FindPlayers(
                    InputText,
                    p => p != User && p.GameTime > ((PlayerMobile)User).GameTime)
                .Any())
            {
                Html = "It appears that another character is already using the name \"" +                 //
                       InputText.WrapUOHtmlColor(Color.LawnGreen, HtmlColor) + "\"!\n\n" +                //
                       "Please enter a new name for your character...";

                InputText = NameList.RandomName(User.Female ? "female" : "male");

                Refresh(true);
                return;
            }

            User.RawName = InputText;

            PlayerNames.Register((PlayerMobile)User);

            base.OnAccept(button);
        }
Esempio n. 5
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (from == null)
            {
                return;
            }

            string name = GetString(info, 1);

            if (name != null)
            {
                name = name.Trim();
            }
            else
            {
                from.SendMessage(0X22, "You must enter a name.");
                from.SendGump(new NameChangeGump(from));
            }

            if (name != "")
            {
                if (!NameVerification.Validate(name, 2, 16, true, false, true, 1, NameVerification.SpaceOnly))
                {
                    from.SendMessage(0X22, "That name is unacceptable or already taken.");
                    from.SendGump(new NameChangeGump(from));
                    return;
                }
                if (CharacterCreation.CheckDupe(from, name))
                {
                    from.SendMessage(0X22, "Your name is now {0}.", name);
                    from.Name     = name;
                    from.CantWalk = false;
                    return;
                }
            }
            else
            {
                from.SendMessage(0X22, "You must enter a name.");
            }

            from.SendGump(new NameChangeGump(from));
        }
Esempio n. 6
0
            public override void OnResponse(Mobile from, string text)
            {
                // Pattern match for invalid characters
                Regex InvalidPatt = new Regex("[^-a-zA-Z0-9' ]");

                if (InvalidPatt.IsMatch(text))
                {
                    // Invalid chars
                    from.SendMessage("You may only engrave numbers, letters, apostrophes and hyphens.");
                }
                else if (text.Length > 24)
                {
                    // Invalid length
                    from.SendMessage("You may only engrave a maximum of 24 characters.");
                }
                else if (!NameVerification.Validate(text, 2, 24, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
                {
                    // Invalid for some other reason
                    from.SendMessage("You may not name it this here.");
                }
                else if (Utility.RandomDouble() < (100 - from.Skills[SkillName.Carpentry].Base) / 100)
                {
                    // Failed!!
                    from.SendMessage("You fail to engrave the piece, ruining it in the process!");
                    m_container.Delete();
                }
                else
                {
                    // Make the change
                    m_container.Name = text;
                    from.SendMessage("You successfully engrave the container.");

                    // Decrement UsesRemaining of graver
                    m_graver.UsesRemaining--;

                    // Check for 0 charges and delete if has none left
                    if (m_graver.UsesRemaining == 0)
                    {
                        m_graver.Delete();
                        from.SendMessage("You have worn out your tool!");
                    }
                }
            }
Esempio n. 7
0
            public override void OnResponse(Mobile from, string text)
            {
                // Pattern match for invalid characters
                Regex InvalidPatt = new Regex("[^-a-zA-Z0-9' ]");

                if (m_ncdeed == null || m_ncdeed.Deleted == true)
                {
                    // error
                    from.SendLocalizedMessage(1042001);                      // Must be in pack to use!!
                }
                // Make sure is in pack (still)
                else if (!m_ncdeed.IsChildOf(from.Backpack))
                {
                    from.SendLocalizedMessage(1042001);                      // Must be in pack to use!!
                }
                else if (InvalidPatt.IsMatch(text))
                {
                    // Invalid chars
                    from.SendMessage("You may only use numbers, letters, apostrophes, hyphens and spaces in your name.");
                }
                else if (!NameVerification.Validate(text, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
                {
                    // Invalid for some other reason
                    from.SendMessage("That name is not allowed here.");
                }
                else
                {
                    // Log change
                    try {
                        StreamWriter LogFile = new StreamWriter("logs/namechange.log", true);
                        LogFile.WriteLine("{0}: {1},{2},{3}", DateTime.Now, from.Account, from.Name, text);
                        LogFile.Close();
                    } catch {
                    }

                    // Make the change
                    from.Name = text;
                    from.SendMessage("You have successfully changed your name to {0}.", text);

                    // Destroy deed
                    m_ncdeed.Delete();
                }
            }
Esempio n. 8
0
            public override void OnResponse(Mobile from, string text)
            {
                if (!m_Vendor.CanInteractWith(from, true))
                {
                    return;
                }

                string name = text.Trim();

                if (!NameVerification.Validate(name, 1, 20, true, true, true, 0, NameVerification.Empty))
                {
                    m_Vendor.SayTo(from, "That name is unacceptable.");
                    return;
                }

                m_Vendor.ShopName = Utility.FixHtml(name);

                from.SendGump(new NewPlayerVendorOwnerGump(m_Vendor));
            }
Esempio n. 9
0
 public override void OnResponse(Mobile from, string text)
 {
     if (m_Item == null || m_Item.Deleted || !m_Item.IsChildOf(from.Backpack))
     {
         from.SendLocalizedMessage(1042001);
     }
     else
     {
         text = text.Trim();
         if (NameVerification.Validate(text, 2, 10, true, false, true, 1, NameVerification.SpaceDashPeriodQuote) != NameResultMessage.Allowed)
         {
             from.SendMessage("Titles must contain 2-10 alphabetic characters.");
         }
         else
         {
             from.Title = text;
             m_Item.Delete();
         }
     }
 }
Esempio n. 10
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, new string[] {}))
                {
                    targ.Name = name;
                }
                else
                {
                    from.SendMessage("That name is unacceptable.");
                }
            }
        }
Esempio n. 11
0
            public override void OnResponse(Mobile from, string text)
            {
                Regex InvalidPatt = new Regex("[^-a-zA-Z0-9' ]");

                if (InvalidPatt.IsMatch(text))
                {
                    // Invalid chars
                    from.SendMessage("You may only use numbers, letters, apostrophes, hyphens and spaces in the name to be changed.");
                }
                else if (!NameVerification.Validate(text, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote, NameVerification.BuildList(true, true, false, true)))
                {
                    // Invalid for some other reason
                    from.SendMessage("That title is not allowed here.");
                }
                else
                {
                    vendor.Title = text;
                    from.SendMessage("Thou hast successfully changed thy servant's title.");
                    m_deed.Delete();
                }
            }
Esempio n. 12
0
            public override void OnResponse(Mobile from, string text)
            {
                PlayerMobile pm = (PlayerMobile)from;

                text = text.Trim();
                if (!NameVerification.Validate(text, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
                {
                    pm.SendMessage("That name is either already taken or otherwise unnacceptable.");
                    return;
                }

                if (pm.PreviousNames == null)
                {
                    pm.PreviousNames = new List <string>();
                }

                pm.PreviousNames.Add(pm.RawName);

                pm.Name = text;
                pm.SendMessage("You will henceforth by known as {0}.", text);
                m_NameChangeDeed.Delete();
            }
Esempio n. 13
0
            public override void OnResponse(Mobile from, string text)
            {
                char[] exceptions  = new char[] { ' ', '-', '.', '\'', ':', ',' };
                Regex  InvalidPatt = new Regex("[^-a-zA-Z0-9':, ]");

                if (InvalidPatt.IsMatch(text))
                {
                    // Invalid chars
                    from.SendMessage("You may only use numbers, letters, apostrophes, hyphens, colons, commas, and spaces in the inscription.");
                }
                else if (!NameVerification.Validate(text, 2, 32, true, true, true, 4, exceptions, NameVerification.BuildList(true, true, false, true)))
                {
                    // Invalid for some other reason
                    from.SendMessage("That inscription is not allowed here.");
                }
                else
                {
                    m_rose.Name         = text;
                    m_rose.Personalized = true;
                    from.SendMessage("Thou hast successfully inscribed thy rose.");
                }
            }
Esempio n. 14
0
        static bool HasValidName(Mobile m)
        {
            if (m.AccessLevel != AccessLevel.Player)
            {
                return(true);
            }

            if (m.RawName == "Generic Player" || !NameVerification.Validate(m.RawName, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote))
            {
                return(false);
            }

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

            return(true);
        }
Esempio n. 15
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            int val = info.ButtonID;

            if (val == 2)
            {
                TextRelay first = info.GetTextEntry(1);
                string    name  = first != null?first.Text.Trim() : String.Empty;

                string lowername = name != null?name.ToLower() : String.Empty;

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

                if (result == NameResultMessage.Allowed)
                {
                    AllowName(name);
                }
                else
                {
                    m_From.SendGump(new NameChangeGump(m_From, result, name));
                }
            }
        }
Esempio n. 16
0
    public override void OnResponse(NetState sender, RelayInfo info)
    {
        if (m_Sender?.Deleted != false || info.ButtonID != 1 || m_Sender.RootParent != sender.Mobile)
        {
            return;
        }

        var m         = sender.Mobile;
        var nameEntry = info.GetTextEntry(0);

        var newName = nameEntry?.Text.Trim();

        if (!NameVerification.Validate(newName, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote))
        {
            m.SendMessage("That name is unacceptable.");
            return;
        }

        m.RawName = newName;
        m.SendMessage("Your name has been changed!");
        m.SendMessage($"You are now known as {newName}");
        m_Sender.Delete();
    }
        public override void OnResponse(Mobile from, string text)
        {
            if (m_Item == null || m_Item.Deleted || !m_Item.IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);
            }
            else
            {
                text = text.Trim();
                if (text == from.RawName)
                {
                    from.SendMessage("Please choose a unique name.");
                }
                else
                {
                    NameResultMessage result = NameVerification.ValidatePlayerName(text, 2, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote);
                    if (result == NameResultMessage.Allowed)
                    {
                        from.Name = text;
                        m_Item.Delete();
                    }
                    else
                    {
                        switch (result)
                        {
                        case NameResultMessage.InvalidCharacter: from.SendMessage("The chosen name has an invalid character."); break;

                        case NameResultMessage.TooFewCharacters:
                        case NameResultMessage.TooManyCharacters: from.SendMessage("Names must contain 2-16 alphabetic characters."); break;

                        case NameResultMessage.AlreadyExists:
                        case NameResultMessage.NotAllowed: from.SendMessage("This name is not available or not allowed."); break;
                        }
                    }
                }
            }
        }
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1) // Chose Name
            {
                bool isValid = true;

                string newName = (string)info.GetTextEntry(0).Text;

                if (m_Item.Deleted)
                {
                    isValid = false;
                }

                if (!m_Item.IsChildOf(m_From.Backpack)) // Make sure its in their pack
                {
                    isValid = false;

                    m_From.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
                }


                if (!NameVerification.Validate(newName, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
                {
                    isValid = false;

                    m_From.SendLocalizedMessage(1005572); // This is not an acceptable name
                }

                if (isValid)
                {
                    m_From.Name = newName;

                    m_Item.Delete();
                }
            }
        }
Esempio n. 19
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            if (m_Sender == null || m_Sender.Deleted || info.ButtonID != 1 || m_Sender.RootParent != sender.Mobile)
            {
                return;
            }

            Mobile    m         = sender.Mobile;
            TextRelay nameEntry = info.GetTextEntry(0);

            string newName = nameEntry == null ? null : nameEntry.Text.Trim();

            if (!NameVerification.Validate(newName, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
            {
                m.SendLocalizedMessage(501144); // That name is not permissible.
            }
            else
            {
                m.RawName = newName;
                m.SendMessage("Your name has been changed!");
                m.SendMessage(string.Format("You are now known as {0}", newName));
                m_Sender.Delete();
            }
        }
Esempio n. 20
0
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            if (!AuctionSystem.Running)
            {
                sender.Mobile.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[15]);

                m_Auction.Cancel();

                return;
            }

            int buttonid = info.ButtonID;

            //right click
            if (buttonid == 0)
            {
                m_Auction.Cancel();
                m_User.SendGump(new AuctionGump(m_User));
                return;
            }

            if (buttonid > 1)
            {
                m_User.SendMessage("Invalid option.  Please try again.");
                return;
            }
            bool   allowBuyNow  = info.Switches.Length > 0;          // Just one switch
            String errormessage = "";

            switch (info.ButtonID)
            {
            case 0:                     // Cancel the auction

                m_Auction.Cancel();
                m_User.SendGump(new AuctionGump(m_User));
                break;

            case 1:                     // Commit the auction

                // Collect information
                int    minbid      = 100;                // text 0
                int    reserve     = minbid;             // text 1
                int    days        = 7;                  // text 2
                string name        = m_Auction.ItemName; // text 3
                string description = " ";                // text 4
                string weblink     = " ";                // text 5
                int    buynow      = 0;                  // text 6

                // The 3D client sucks

                string[] tr = new string[7];

                foreach (TextRelay t in info.TextEntries)
                {
                    try
                    {
                        tr[t.EntryID] = t.Text;
                    }
                    catch (Exception e)
                    {
                        errormessage = e.Message;
                    }
                }


                try { minbid = (int)uint.Parse(tr[0], NumberStyles.AllowThousands); }
                catch {}

                try { reserve = (int)uint.Parse(tr[1], NumberStyles.AllowThousands); }
                catch { }

                try { days = (int)uint.Parse(tr[2]); }
                catch {}

                try { buynow = (int)uint.Parse(tr[6], NumberStyles.AllowThousands); }
                catch {}

                if (buynow < 1)
                {
                    allowBuyNow = false;
                }

                if (tr[3] != null)
                {
                    if (NameVerification.Validate(tr[3], 2, 40, true, true, true, 2, NameVerification.Empty))
                    {
                        string[] disallowed = ProfanityProtection.Disallowed;

                        for (int i = 0; i < disallowed.Length; i++)
                        {
                            if (tr[3].IndexOf(disallowed[i]) != -1)
                            {
                                m_User.SendLocalizedMessage(1072622); // That name isn't very polite.
                                goto case 0;                          // Pretty much cancel the auction
                            }
                        }
                    }
                    else
                    {
                        name = tr[3];
                    }
                    name = tr[3];
                }

                if (tr[4] != null)
                {
                    if (NameVerification.Validate(tr[4], 0, 100, true, true, true, 2, NameVerification.Empty))
                    {
                        string[] disallowed = ProfanityProtection.Disallowed;

                        for (int i = 0; i < disallowed.Length; i++)
                        {
                            if (tr[4].IndexOf(disallowed[i]) != -1)
                            {
                                m_User.SendLocalizedMessage(1072622); // That name isn't very polite.
                                goto case 0;                          // Pretty much cancel the auction
                            }
                        }
                    }
                    else
                    {
                        description = tr[4];
                        //name = tr[3];
                    }
                    description = tr[4];
                }

                if (tr[5] != null)
                {
                    weblink = tr[5];
                }

                bool ok = true;

                if (minbid < 1)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[109]);
                    ok = false;
                }
                if (reserve < 1)
                {
                    reserve = minbid;
                }

                if (reserve < minbid)
                {
                    reserve = minbid;
                    m_User.SendMessage(214, AuctionSystem.ST[110]);
                    ok = false;
                }

                if (days < AuctionSystem.MinAuctionDays && m_User.AccessLevel < AccessLevel.GameMaster || days < 1)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[111], AuctionSystem.MinAuctionDays);
                    ok = false;
                }

                if (days > AuctionSystem.MaxAuctionDays && m_User.AccessLevel < AccessLevel.GameMaster)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[112], AuctionSystem.MaxAuctionDays);
                    ok = false;
                }

                if (name.Length == 0)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[113]);
                    ok = false;
                }

                if (minbid * AuctionConfig.MaxReserveMultiplier < reserve && m_User.AccessLevel < AccessLevel.GameMaster)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[114]);
                    ok = false;
                }

                if (allowBuyNow && buynow < reserve)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[209]);
                    ok = false;
                }

                if (ok && AuctionConfig.CostOfAuction > 0.0)
                {
                    int toPay = 0;

                    if (AuctionConfig.CostOfAuction <= 1.0)
                    {
                        toPay = (int)(Math.Max(minbid, reserve) * AuctionConfig.CostOfAuction);
                    }
                    else
                    {
                        toPay = (int)AuctionConfig.CostOfAuction;
                    }

                    if (toPay > 0)
                    {
                        if (Server.Mobiles.Banker.Withdraw(m_User, toPay))
                        {
                            m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[228], toPay);
                        }
                        else
                        {
                            m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[229], toPay);
                            goto case 0;     // Pretty much cancel the auction
                        }
                    }
                }

                m_Auction.MinBid      = minbid;
                m_Auction.Reserve     = reserve;
                m_Auction.ItemName    = name;
                m_Auction.Duration    = TimeSpan.FromDays(days);
                m_Auction.Description = description;
                m_Auction.WebLink     = weblink;
                m_Auction.BuyNow      = allowBuyNow ? buynow : 0;

                if (ok && AuctionSystem.Running)
                {
                    World.Broadcast(0x35, true, "A {0} just became available on [Myauction for {1}", m_Auction.ItemName, minbid);
                    m_Auction.Confirm();
                    m_User.SendGump(new AuctionViewGump(m_User, m_Auction, new AuctionGumpCallback(AuctionCallback)));
                }
                else if (AuctionSystem.Running)
                {
                    m_User.SendGump(new NewAuctionGump(m_User, m_Auction));
                }
                else
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[115]);
                }

                break;
            }
        }
Esempio n. 21
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            if (info.ButtonID == (int)Buttons.Okay &&
                !String.IsNullOrEmpty(info.GetTextEntry((int)Buttons.NameEntry).Text))
            {
                Mobile from = sender.Mobile;

                if (!Directory.Exists(savePath))
                {
                    Directory.CreateDirectory(savePath);
                }

                String desiredSurname = info.GetTextEntry((int)Buttons.NameEntry).Text;
                desiredSurname = (string)(char.ToUpper(desiredSurname[0]) + desiredSurname.Substring(1));

                Regex rx         = new Regex(" ");
                Match match      = rx.Match(from.Name);
                bool  hasSurname = match.Success;

                rx    = new Regex(" |1|2|3|4|5|6|7|8|9|0");
                match = rx.Match(desiredSurname);

                bool invalidName = !NameVerification.Validate
                                       (desiredSurname, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote) || match.Success;

                if (desiredSurname.Length > 16)
                {
                    from.SendMessage("Your surname may be no longer than (16) characters.");
                    return;
                }

                if (invalidName)
                {
                    from.SendMessage("That is not an acceptable surname.");
                    return;
                }

                if (hasSurname)
                {
                    from.SendMessage("You already have a surname and may not register another.");
                    return;
                }

                if (surnames.Contains(desiredSurname))
                {
                    DetermineOrigin(desiredSurname);
                    InstantiateRequest(desiredSurname, caller as PlayerMobile);
                }

                if (!String.IsNullOrEmpty(desiredSurname) && !surnames.Contains(desiredSurname) &&
                    !invalidName && !hasSurname)
                {
                    from.Name += " " + desiredSurname;

                    using (StreamWriter writer = new StreamWriter(surnameFile))
                    {
                        XmlTextWriter xml = new XmlTextWriter(writer);

                        xml.Formatting  = Formatting.Indented;
                        xml.IndentChar  = '\t';
                        xml.Indentation = 1;

                        xml.WriteStartDocument(true);
                        xml.WriteStartElement("surnames");

                        for (int n = 0; n < surnames.Count; n++)
                        {
                            xml.WriteStartElement("surname");
                            xml.WriteAttributeString("origin", origins[n].ToString());
                            xml.WriteString(surnames[n]);
                            xml.WriteEndElement();
                        }

                        xml.WriteStartElement("surname");
                        xml.WriteAttributeString("origin", caller.Serial.ToString());
                        xml.WriteString(desiredSurname);
                        xml.WriteEndElement();

                        xml.WriteEndElement();
                        xml.WriteEndDocument();
                        xml.Close();
                    }
                }
            }
        }
Esempio n. 22
0
        protected NameResultMessage VerifyName(PlayerMobile m, string name, bool message)
        {
            if (m == null || m.Deleted)
            {
                return(NameResultMessage.NotAllowed);
            }

            if (String.IsNullOrWhiteSpace(name))
            {
                if (message)
                {
                    m.SendMessage("The name you chose is too short.");
                }

                return(NameResultMessage.TooFewCharacters);
            }

            string kw;

            if (AntiAdverts.Detect(name, out kw))
            {
                if (message)
                {
                    m.SendMessage("The name you chose is not allowed.");
                }

                return(NameResultMessage.NotAllowed);
            }

            NameResultMessage res = NameVerification.ValidatePlayerName(
                name,
                1,
                16,
                true,
                false,
                true,
                0,
                NameVerification.Empty,
                NameVerification.DisallowedWords,
                NameVerification.StartDisallowed,
                NameVerification.DisallowedAnywhere);

            switch (res)
            {
            case NameResultMessage.InvalidCharacter:
            {
                if (message)
                {
                    m.SendMessage("The name you chose contains invalid characters.");
                }
            }
                return(res);

            case NameResultMessage.NotAllowed:
            {
                if (message)
                {
                    m.SendMessage("The name you chose is not allowed.");
                }
            }
                return(res);

            case NameResultMessage.TooFewCharacters:
            {
                if (message)
                {
                    m.SendMessage("The name you chose is too short.");
                }
            }
                return(res);

            case NameResultMessage.TooManyCharacters:
            {
                if (message)
                {
                    m.SendMessage("The name you chose is too long.");
                }
            }
                return(res);
            }

            if (ProfanityProtection.DisallowedWords.Any(t => name.IndexOf(t, StringComparison.OrdinalIgnoreCase) != -1))
            {
                // That name isn't very polite.
                m.SendLocalizedMessage(1072622);

                return(NameResultMessage.NotAllowed);
            }

            return(NameResultMessage.Allowed);
        }
Esempio n. 23
0
        public static void OpenChatWindowRequest(NetState state, PacketReader pvSrc)
        {
            Mobile from = state.Mobile;

            if (!m_Enabled)
            {
                from.SendMessage("The chat system has been disabled.");
                return;
            }

            pvSrc.Seek(2, System.IO.SeekOrigin.Begin);
            string chatName = pvSrc.ReadUnicodeStringSafe((0x40 - 2) >> 1).Trim();

            Account acct = state.Account as Account;

            string accountChatName = null;

            if (acct != null)
            {
                accountChatName = acct.GetTag("ChatName");
            }

            if (accountChatName != null)
            {
                accountChatName = accountChatName.Trim();
            }

            if (accountChatName != null && accountChatName.Length > 0)
            {
                if (chatName.Length > 0 && chatName != accountChatName)
                {
                    from.SendMessage("You cannot change chat nickname once it has been set.");
                }
            }
            else
            {
                if (chatName == null || chatName.Length == 0)
                {
                    SendCommandTo(from, ChatCommand.AskNewNickname);
                    return;
                }

                if (NameVerification.Validate(chatName, 2, 31, true, true, true, 0, NameVerification.SpaceDashPeriodQuote) && chatName.ToLower().IndexOf("system") == -1)
                {
                    // TODO: Optimize this search

                    foreach (Account checkAccount in Accounts.Table.Values)
                    {
                        string existingName = checkAccount.GetTag("ChatName");

                        if (existingName != null)
                        {
                            existingName = existingName.Trim();

                            if (Insensitive.Equals(existingName, chatName))
                            {
                                from.SendMessage("Nickname already in use.");
                                SendCommandTo(from, ChatCommand.AskNewNickname);
                                return;
                            }
                        }
                    }

                    accountChatName = chatName;

                    if (acct != null)
                    {
                        acct.AddTag("ChatName", chatName);
                    }
                }
                else
                {
                    from.SendAsciiMessage("That name is disallowed.");
                    SendCommandTo(from, ChatCommand.AskNewNickname);
                    return;
                }
            }

            SendCommandTo(from, ChatCommand.OpenChatWindow, accountChatName);
            ChatUser.AddChatUser(from);
        }
Esempio n. 24
0
        public virtual bool CanMessage(PlayerMobile user, string text, bool message = true)
        {
            if (!Available)
            {
                if (message)
                {
                    InternalMessage(user, "The channel '{0}' is currently unavailable.", Name);
                }

                return(false);
            }

            if (!IsUser(user) && user.AccessLevel < AccessLevel.Counselor)
            {
                if (message)
                {
                    InternalMessage(user, "You are not in the channel '{0}'", Name);
                }

                return(false);
            }

            if (user.AccessLevel < Access)
            {
                if (message)
                {
                    InternalMessage(user, "You do not have sufficient access to speak in the channel '{0}'", Name);
                }

                return(false);
            }

            if (IsUser(user) && user.AccessLevel < AccessLevel.Counselor && Users[user] > DateTime.Now)
            {
                if (message)
                {
                    InternalMessage(user, "Spam detected, message blocked.");
                }

                return(false);
            }

            if (!NameVerification.Validate(
                    text,
                    0,
                    Int32.MaxValue,
                    true,
                    true,
                    false,
                    Int32.MaxValue,
                    ProfanityProtection.Exceptions,
                    ProfanityProtection.Disallowed,
                    ProfanityProtection.StartDisallowed))
            {
                switch (ProfanityAction)
                {
                case ProfanityAction.None:
                    return(true);

                case ProfanityAction.Criminal:
                    user.Criminal = true;
                    return(true);

                case ProfanityAction.CriminalAction:
                    user.CriminalAction(true);
                    return(true);

                case ProfanityAction.Disallow:
                    return(false);

                case ProfanityAction.Disconnect:
                    Kick(user, false, message);
                    return(false);

                case ProfanityAction.Other:
                    return(OnProfanityDetected(user, text, message));
                }
            }

            return(true);
        }
Esempio n. 25
0
        protected virtual void ApplyName(Mobile m, TEntity t, string name)
        {
            if (m == null || t == null)
            {
                return;
            }

            if (String.IsNullOrWhiteSpace(name))
            {
                m.SendMessage(0x22, "You cannot use a blank name.");
                OpenGump(m, t);
                return;
            }

            name = Utility.FixHtml(name.Trim());

            if (!NameVerification.Validate(name, 2, 20, true, t is Item, true, 1, NameVerification.SpaceDashPeriodQuote))
            {
                m.SendMessage(0x22, "That name is unacceptable.");
                OpenGump(m, t);
                return;
            }

            var item = t as Item;

            if (item != null)
            {
                if (item.Name == name)
                {
                    m.SendMessage(0x22, "The item is already named {0}.", name);
                    OpenGump(m, t);
                    return;
                }

                item.Name = name;

                m.SendMessage(0x55, "The item has been renamed.");
                Delete();
                return;
            }

            var mob = t as Mobile;

            if (mob != null)
            {
                if (mob.RawName == name)
                {
                    m.SendMessage(0x22, "{0} are already named {1}.", mob == m ? "You" : "They", name);
                    OpenGump(m, t);
                    return;
                }

                mob.RawName = name;

                m.SendMessage(0x55, "{0} name has been changed.", mob == m ? "Your" : "Their");
                Delete();

                if (mob is PlayerMobile)
                {
                    var pm = (PlayerMobile)mob;

                    PlayerNames.Register(pm);
                    PlayerNames.ValidateSharedName(pm);
                }

                return;
            }

            m.SendMessage(0x22, "Could not rename that object.");
        }
            public override void OnResponse(Mobile from, string text)
            {
                // Pattern match for invalid characters
                Regex InvalidPatt = new Regex("[^-a-zA-Z0-9' ]");

                if (InvalidPatt.IsMatch(text))
                {
                    // Invalid chars
                    from.SendMessage("You may only embroider numbers, letters, apostrophes and hyphens.");
                }
                else if (m_clothing.Name != null)
                {
                    // Already embroidered
                    from.SendMessage("This piece has already been embroidered.");
                }
                else if (text.Length > 24)
                {
                    // Invalid length
                    from.SendMessage("You may only embroider a maximum of 24 characters.");
                }
                else if (!NameVerification.Validate(text, 2, 24, true, true, true, 1, NameVerification.SpaceDashPeriodQuote))
                {
                    // Invalid for some other reason
                    from.SendMessage("You may not embroider it with this.");
                }
                else if (Utility.RandomDouble() < ((100 - ((from.Skills[SkillName.Tailoring].Base + from.Skills[SkillName.Inscribe].Base) / 2)) * 2) / 100)
                {
                    // Failed!!
                    from.SendMessage("You fail to embroider the piece, ruining it in the process!");
                    m_clothing.Delete();
                }
                else
                {
                    // Make the change
                    m_clothing.Name = text + "\n\n";
                    from.SendMessage("You successfully embroider the clothing.");

                    // Decrement UsesRemaining of graver
                    m_embroidery.UsesRemaining--;

                    // Check for 0 charges and delete if has none left
                    if (m_embroidery.UsesRemaining == 0)
                    {
                        m_embroidery.Delete();
                        from.SendMessage("You have used up your embroidery!");
                    }

                    // Consume single charge from scribe pen...

                    Item[] skits = ((Container)from.Backpack).FindItemsByType(typeof(SewingKit), true);

                    if (--((SewingKit)skits[0]).UsesRemaining == 0)
                    {
                        from.SendMessage("You have worn out your tool!");
                        skits[0].Delete();
                    }

                    // we want to hide the [Exceptional] attribute
                    m_clothing.HideAttributes = true;
                }
            }
Esempio n. 27
0
        public override void OnResponse(Network.NetState sender, RelayInfo info)
        {
            if (info.ButtonID != (int)Buttons.btnApply)
            {
                return;
            }
            try
            {
                Mobile m = sender.Mobile;

                TextRelay name = info.GetTextEntry((int)Buttons.TextEntry);

                string text = name.Text.Trim();

                short a;
                if (text.Length < 1 || Int16.TryParse(text.Substring(0, 1), out a) || !NameVerification.Validate(text, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote, NameVerification.Disallowed, NameVerification.StartDisallowed))
                {
                    m.SendMessage("That name is either already taken or otherwise unnacceptable. Please choose a different name.");

                    if (m.HasGump(typeof(NameChangeGump)))
                    {
                        m.CloseGump(typeof(NameChangeGump));
                    }

                    m.SendGump(new NameChangeGump(m, text));

                    return;
                }

                m.Name = text;
                m.SendMessage("You will henceforth be known as {0}.", text);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Name Change Gump OnResponse: {0}", ex.Message);
            }
        }