diff --git a/OpenBullet/Pages/StackerBlocks/PageBlockFunction.xaml.cs b/OpenBullet/Pages/StackerBlocks/PageBlockFunction.xaml.cs index 5b8dc92..8eb8003 100644 --- a/OpenBullet/Pages/StackerBlocks/PageBlockFunction.xaml.cs +++ b/OpenBullet/Pages/StackerBlocks/PageBlockFunction.xaml.cs @@ -115,6 +115,7 @@ namespace OpenBullet.Pages.StackerBlocks { "Constant", "This will just return anything written in the input string and store it in a variable, after possibly replacing all the input variables.\nUse this to chain constants and variables together." }, { "Hash", "The input string will be hashed with the selected function. Remember you can chain variables if you need a salt." }, { "HMAC", "" }, + { "RandomString", "L = Lowercase, U = Uppercase, D = Digit, S = Symbol, A = Any"}, { "Translate", "Format like headers (this: that), one per line." }, { "Compute", "Calculates the value of a math expression, for example (6+3)*5 will return 45." }, { "RSA", "Thanks to TheLittleTrain17 for this implementation" }, diff --git a/RuriLib/Blocks/BlockFunction.cs b/RuriLib/Blocks/BlockFunction.cs index 49c8704..4edf7f4 100644 --- a/RuriLib/Blocks/BlockFunction.cs +++ b/RuriLib/Blocks/BlockFunction.cs @@ -78,6 +78,9 @@ namespace RuriLib /// Generates a random integer. RandomNum, + /// Generates a random string based on a mask. + RandomString, + /// Rounds a decimal input to the upper integer. Ceil, @@ -584,6 +587,22 @@ namespace RuriLib outputString = (data.rand.Next(randomMin, randomMax)).ToString(); break; + case Function.RandomString: + var lowercase = "abcdefghijklmnopqrstuvwxyz"; + var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + var digits = "0123456789"; + var symbols = "\\!\"£$%&/()=?^'{}[]@#,;.:-_*+"; + var allchars = lowercase + uppercase + digits + symbols; + outputString = new string(localInputString + .ToCharArray() + .Select(c => c == 'L' ? lowercase[data.rand.Next(0, lowercase.Length)] : c) + .Select(c => c == 'U' ? uppercase[data.rand.Next(0, uppercase.Length)] : c) + .Select(c => c == 'D' ? digits[data.rand.Next(0, digits.Length)] : c) + .Select(c => c == 'S' ? symbols[data.rand.Next(0, symbols.Length)] : c) + .Select(c => c == 'A' ? allchars[data.rand.Next(0, allchars.Length)] : c) + .ToArray()); + break; + case Function.Ceil: outputString = Math.Ceiling(Decimal.Parse(localInputString, style, provider)).ToString(); break;