From daeba5c83aa26a15fe4964dcba7815870ea78138 Mon Sep 17 00:00:00 2001 From: Nemesh Date: Sun, 25 Apr 2021 00:47:43 +0300 Subject: [PATCH] v.0.6.1 --- .vs/FloatToolGUI/v16/.suo | Bin 115712 -> 139264 bytes FloatToolGUI/Benchmark.Designer.cs | 166 ++- FloatToolGUI/Benchmark.cs | 199 +-- FloatToolGUI/Calculation.cs | 198 +++ FloatToolGUI/FloatToolGUI.csproj | 21 +- FloatToolGUI/Logger.cs | 31 + FloatToolGUI/Main.Designer.cs | 32 +- FloatToolGUI/Main.cs | 414 +++--- FloatToolGUI/Main.resx | 1124 ++++++++++++----- FloatToolGUI/Properties/Resources.Designer.cs | 10 + FloatToolGUI/Properties/Resources.resx | 3 + FloatToolGUI/Resources/Inter-Regular.ttf | Bin 0 -> 287928 bytes FloatToolGUI/SettingsForm.Designer.cs | 50 +- FloatToolGUI/SettingsForm.cs | 17 +- FloatToolGUI/Utils.cs | 50 +- FloatToolGUI/{Resources => }/itemData.json | 828 +++++++++++- 16 files changed, 2253 insertions(+), 890 deletions(-) create mode 100644 FloatToolGUI/Calculation.cs create mode 100644 FloatToolGUI/Logger.cs create mode 100644 FloatToolGUI/Resources/Inter-Regular.ttf rename FloatToolGUI/{Resources => }/itemData.json (90%) diff --git a/.vs/FloatToolGUI/v16/.suo b/.vs/FloatToolGUI/v16/.suo index b7edae528e25451f96ecebd35c1a39ebbc788a03..3a8359b913fd644c6ba8305dcc6ab8fc516dd4a8 100644 GIT binary patch delta 10443 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 Tj!;YPL?aXn&y!2(zLEbA|5-RR diff --git a/FloatToolGUI/Benchmark.Designer.cs b/FloatToolGUI/Benchmark.Designer.cs index d9ee385..bdd6302 100644 --- a/FloatToolGUI/Benchmark.Designer.cs +++ b/FloatToolGUI/Benchmark.Designer.cs @@ -41,20 +41,24 @@ private void InitializeComponent() this.panel1 = new System.Windows.Forms.Panel(); this.label7 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); + this.panel10 = new System.Windows.Forms.Panel(); + this.label17 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); this.Updater = new System.Windows.Forms.Timer(this.components); this.customProgressBar1 = new FloatToolGUI.CustomProgressBar(); this.panel4 = new System.Windows.Forms.Panel(); this.label8 = new System.Windows.Forms.Label(); this.closeBtn = new System.Windows.Forms.Button(); this.panel3 = new System.Windows.Forms.Panel(); - this.panel10 = new System.Windows.Forms.Panel(); - this.label17 = new System.Windows.Forms.Label(); - this.label18 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); this.flowLayoutPanel1.SuspendLayout(); this.panel1.SuspendLayout(); + this.panel10.SuspendLayout(); this.panel4.SuspendLayout(); this.panel3.SuspendLayout(); - this.panel10.SuspendLayout(); + this.panel2.SuspendLayout(); this.SuspendLayout(); // // startBenchmarkBtn @@ -62,7 +66,7 @@ private void InitializeComponent() this.startBenchmarkBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.startBenchmarkBtn.FlatAppearance.BorderSize = 0; this.startBenchmarkBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.startBenchmarkBtn.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.startBenchmarkBtn.Font = new System.Drawing.Font("Inter", 14.25F); this.startBenchmarkBtn.ForeColor = System.Drawing.Color.White; this.startBenchmarkBtn.Location = new System.Drawing.Point(394, 255); this.startBenchmarkBtn.Name = "startBenchmarkBtn"; @@ -78,7 +82,7 @@ private void InitializeComponent() this.submitScoreBtn.Enabled = false; this.submitScoreBtn.FlatAppearance.BorderSize = 0; this.submitScoreBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.submitScoreBtn.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 12F); + this.submitScoreBtn.Font = new System.Drawing.Font("Inter", 12F); this.submitScoreBtn.ForeColor = System.Drawing.Color.White; this.submitScoreBtn.Location = new System.Drawing.Point(394, 221); this.submitScoreBtn.Name = "submitScoreBtn"; @@ -91,11 +95,10 @@ private void InitializeComponent() // cpuNameLabel // this.cpuNameLabel.AutoSize = true; - this.cpuNameLabel.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 11F); this.cpuNameLabel.ForeColor = System.Drawing.Color.White; this.cpuNameLabel.Location = new System.Drawing.Point(390, 9); this.cpuNameLabel.Name = "cpuNameLabel"; - this.cpuNameLabel.Size = new System.Drawing.Size(137, 19); + this.cpuNameLabel.Size = new System.Drawing.Size(144, 19); this.cpuNameLabel.TabIndex = 3; this.cpuNameLabel.Text = "AMD Ryzen 5 2600"; this.cpuNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -103,11 +106,10 @@ private void InitializeComponent() // threadCountLabel // this.threadCountLabel.AutoSize = true; - this.threadCountLabel.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.threadCountLabel.ForeColor = System.Drawing.Color.White; this.threadCountLabel.Location = new System.Drawing.Point(390, 28); this.threadCountLabel.Name = "threadCountLabel"; - this.threadCountLabel.Size = new System.Drawing.Size(93, 20); + this.threadCountLabel.Size = new System.Drawing.Size(91, 19); this.threadCountLabel.TabIndex = 3; this.threadCountLabel.Text = "12 Потоков"; this.threadCountLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -115,11 +117,10 @@ private void InitializeComponent() // versionLabel2 // this.versionLabel2.AutoSize = true; - this.versionLabel2.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.versionLabel2.ForeColor = System.Drawing.Color.White; this.versionLabel2.Location = new System.Drawing.Point(390, 48); this.versionLabel2.Name = "versionLabel2"; - this.versionLabel2.Size = new System.Drawing.Size(93, 20); + this.versionLabel2.Size = new System.Drawing.Size(90, 19); this.versionLabel2.TabIndex = 3; this.versionLabel2.Text = "v.0.5.0 beta"; this.versionLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -127,11 +128,10 @@ private void InitializeComponent() // label4 // this.label4.AutoSize = true; - this.label4.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label4.ForeColor = System.Drawing.Color.White; this.label4.Location = new System.Drawing.Point(390, 151); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(84, 20); + this.label4.Size = new System.Drawing.Size(83, 19); this.label4.TabIndex = 3; this.label4.Text = "Скорость:"; this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -139,11 +139,10 @@ private void InitializeComponent() // speedLabel // this.speedLabel.AutoSize = true; - this.speedLabel.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.speedLabel.ForeColor = System.Drawing.Color.White; this.speedLabel.Location = new System.Drawing.Point(390, 171); this.speedLabel.Name = "speedLabel"; - this.speedLabel.Size = new System.Drawing.Size(45, 20); + this.speedLabel.Size = new System.Drawing.Size(43, 19); this.speedLabel.TabIndex = 3; this.speedLabel.Text = "0 к/с"; this.speedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -154,6 +153,7 @@ private void InitializeComponent() this.flowLayoutPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(26)))), ((int)(((byte)(26))))); this.flowLayoutPanel1.Controls.Add(this.panel1); this.flowLayoutPanel1.Controls.Add(this.panel10); + this.flowLayoutPanel1.Controls.Add(this.panel2); this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Left; this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.flowLayoutPanel1.ForeColor = System.Drawing.Color.White; @@ -178,11 +178,11 @@ private void InitializeComponent() // label7 // this.label7.AutoSize = true; - this.label7.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 8F); + this.label7.Font = new System.Drawing.Font("Inter", 8F); this.label7.ForeColor = System.Drawing.Color.White; this.label7.Location = new System.Drawing.Point(3, 18); this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(128, 14); + this.label7.Size = new System.Drawing.Size(142, 14); this.label7.TabIndex = 3; this.label7.Text = "1021779 к/с (v.0.5.0 beta)"; this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -190,16 +190,53 @@ private void InitializeComponent() // label6 // this.label6.AutoSize = true; - this.label6.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 8F); + this.label6.Font = new System.Drawing.Font("Inter", 8F); this.label6.ForeColor = System.Drawing.Color.White; this.label6.Location = new System.Drawing.Point(3, 3); this.label6.Margin = new System.Windows.Forms.Padding(0); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(260, 14); + this.label6.Size = new System.Drawing.Size(281, 14); this.label6.TabIndex = 3; this.label6.Text = "AMD Ryzen 5 2600 Six-Core Processor (12 Threads)"; this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // panel10 + // + this.panel10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(125)))), ((int)(((byte)(195))))); + this.panel10.Controls.Add(this.label17); + this.panel10.Controls.Add(this.label18); + this.panel10.ForeColor = System.Drawing.Color.Black; + this.panel10.Location = new System.Drawing.Point(10, 52); + this.panel10.Margin = new System.Windows.Forms.Padding(0, 2, 0, 3); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(350, 35); + this.panel10.TabIndex = 19; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("Inter", 8F); + this.label17.ForeColor = System.Drawing.Color.White; + this.label17.Location = new System.Drawing.Point(3, 18); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(141, 14); + this.label17.TabIndex = 3; + this.label17.Text = "934030 к/с (v.0.5.0 beta)"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Font = new System.Drawing.Font("Inter", 8F); + this.label18.ForeColor = System.Drawing.Color.White; + this.label18.Location = new System.Drawing.Point(3, 3); + this.label18.Margin = new System.Windows.Forms.Padding(0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(310, 14); + this.label18.TabIndex = 3; + this.label18.Text = "Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz (4 Threads)"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // // Updater // this.Updater.Enabled = true; @@ -215,7 +252,7 @@ private void InitializeComponent() this.customProgressBar1.Minimum = 0; this.customProgressBar1.Name = "customProgressBar1"; this.customProgressBar1.ProgressColor = System.Drawing.Color.Green; - this.customProgressBar1.ProgressFont = new System.Drawing.Font("Microsoft JhengHei UI", 11.25F, System.Drawing.FontStyle.Bold); + this.customProgressBar1.ProgressFont = new System.Drawing.Font("Inter", 11.25F, System.Drawing.FontStyle.Bold); this.customProgressBar1.Size = new System.Drawing.Size(304, 24); this.customProgressBar1.TabIndex = 0; this.customProgressBar1.Value = 0F; @@ -233,6 +270,7 @@ private void InitializeComponent() this.panel4.Controls.Add(this.label4); this.panel4.Controls.Add(this.speedLabel); this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Font = new System.Drawing.Font("Inter", 11F); this.panel4.Location = new System.Drawing.Point(0, 40); this.panel4.Name = "panel4"; this.panel4.Size = new System.Drawing.Size(704, 333); @@ -242,12 +280,12 @@ private void InitializeComponent() // this.label8.AutoSize = true; this.label8.BackColor = System.Drawing.Color.Transparent; - this.label8.Font = new System.Drawing.Font("Microsoft JhengHei Light", 22F); + this.label8.Font = new System.Drawing.Font("Inter", 22F); this.label8.ForeColor = System.Drawing.Color.White; this.label8.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.label8.Location = new System.Drawing.Point(1, 0); this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(154, 38); + this.label8.Size = new System.Drawing.Size(160, 36); this.label8.TabIndex = 0; this.label8.Text = "Бенчмарк"; this.label8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragWindowMouseDown); @@ -260,7 +298,7 @@ private void InitializeComponent() this.closeBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.closeBtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Black; this.closeBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.closeBtn.Font = new System.Drawing.Font("Microsoft JhengHei Light", 16F); + this.closeBtn.Font = new System.Drawing.Font("Inter", 16F); this.closeBtn.ForeColor = System.Drawing.Color.White; this.closeBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.closeBtn.Location = new System.Drawing.Point(664, 0); @@ -283,41 +321,42 @@ private void InitializeComponent() this.panel3.TabIndex = 5; this.panel3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragWindowMouseDown); // - // panel10 - // - this.panel10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(125)))), ((int)(((byte)(195))))); - this.panel10.Controls.Add(this.label17); - this.panel10.Controls.Add(this.label18); - this.panel10.Location = new System.Drawing.Point(10, 52); - this.panel10.Margin = new System.Windows.Forms.Padding(0, 2, 0, 3); - this.panel10.Name = "panel10"; - this.panel10.Size = new System.Drawing.Size(350, 35); - this.panel10.TabIndex = 19; - // - // label17 - // - this.label17.AutoSize = true; - this.label17.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 8F); - this.label17.ForeColor = System.Drawing.Color.White; - this.label17.Location = new System.Drawing.Point(3, 18); - this.label17.Name = "label17"; - this.label17.Size = new System.Drawing.Size(126, 14); - this.label17.TabIndex = 3; - this.label17.Text = "934030 к/с (v.0.5.0 beta)"; - this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // label18 - // - this.label18.AutoSize = true; - this.label18.Font = new System.Drawing.Font("Microsoft JhengHei UI Light", 8F); - this.label18.ForeColor = System.Drawing.Color.White; - this.label18.Location = new System.Drawing.Point(3, 3); - this.label18.Margin = new System.Windows.Forms.Padding(0); - this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(289, 14); - this.label18.TabIndex = 3; - this.label18.Text = "Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz (4 Threads)"; - this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(118)))), ((int)(((byte)(185)))), ((int)(((byte)(0))))); + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.label2); + this.panel2.ForeColor = System.Drawing.Color.Black; + this.panel2.Location = new System.Drawing.Point(10, 92); + this.panel2.Margin = new System.Windows.Forms.Padding(0, 2, 0, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(350, 35); + this.panel2.TabIndex = 20; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Inter", 8F); + this.label1.ForeColor = System.Drawing.Color.Black; + this.label1.Location = new System.Drawing.Point(3, 18); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(133, 14); + this.label1.TabIndex = 3; + this.label1.Text = "10000 к/с (CUDA alpha)"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Inter", 8F); + this.label2.ForeColor = System.Drawing.Color.Black; + this.label2.Location = new System.Drawing.Point(3, 3); + this.label2.Margin = new System.Windows.Forms.Padding(0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(259, 14); + this.label2.TabIndex = 3; + this.label2.Text = "NVidia GeForce GTX 1660 Ti (1536 CUDA Cores)"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // Benchmark // @@ -334,12 +373,14 @@ private void InitializeComponent() this.flowLayoutPanel1.ResumeLayout(false); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); + this.panel10.ResumeLayout(false); + this.panel10.PerformLayout(); this.panel4.ResumeLayout(false); this.panel4.PerformLayout(); this.panel3.ResumeLayout(false); this.panel3.PerformLayout(); - this.panel10.ResumeLayout(false); - this.panel10.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); this.ResumeLayout(false); } @@ -366,5 +407,8 @@ private void InitializeComponent() private System.Windows.Forms.Panel panel10; private System.Windows.Forms.Label label17; private System.Windows.Forms.Label label18; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; } } \ No newline at end of file diff --git a/FloatToolGUI/Benchmark.cs b/FloatToolGUI/Benchmark.cs index d169714..dbc354c 100644 --- a/FloatToolGUI/Benchmark.cs +++ b/FloatToolGUI/Benchmark.cs @@ -14,48 +14,12 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; +using static FloatToolGUI.Calculation; namespace FloatToolGUI { public partial class Benchmark : Form { - private static bool NextCombination(IList num, int n, int k) - { - bool finished; - var changed = finished = false; - if (k <= 0) return false; - for (var i = k - 1; !finished && !changed; i--) - { - if (num[i] < n - 1 - (k - 1) + i) - { - num[i]++; - if (i < k - 1) - for (var j = i + 1; j < k; j++) - num[j] = num[j - 1] + 1; - changed = true; - } - finished = i == 0; - } - return changed; - } - - private static IEnumerable Combinations(IEnumerable elements, int k, int start, int skip) - { - var elem = elements.ToArray(); - var size = elem.Length; - if (k > size) yield break; - var numbers = new int[k]; - for (var i = 0; i < k; i++) - numbers[i] = i; - int step = 0; - do - { - if ((step + start) % skip == 0) - yield return numbers.Select(n => elem[n]); - step++; - } while (NextCombination(numbers, size, k)); - } - public enum SearchMode { Less, @@ -64,62 +28,6 @@ public enum SearchMode } SearchMode CurrentSearchMode = SearchMode.Equal; - public static string setprecission(double number, int figures) - { - int e = 0; - while (number >= 10.0) - { - e += 1; - number /= 10; - } - while (number < 1.0) - { - e -= 1; - number *= 10; - } - figures--; - number = (float)Math.Round(number, figures); - figures += 0 - e; - while (e > 0) - { - number *= 10; - e -= 1; - } - while (e < 0) - { - number /= 10; - e += 1; - } - if (figures < 0) - figures = 0; - return number.ToString($"f{figures}", CultureInfo.InvariantCulture); - } - static public decimal craft(List ingridients, float minFloat, float maxFloat) - { - decimal avgFloat = 0; - foreach (InputSkin f in ingridients) - { - avgFloat += (decimal)f.WearValue; - } - avgFloat /= 10; - return ((decimal)(maxFloat - minFloat) * avgFloat) + (decimal)minFloat; - } - static public string craftF(List ingridients, float minFloat, float maxFloat) - { - float avgFloat = 0; - float[] arrInput = new float[10]; - for (int i = 0; i < 10; i++) - { - arrInput[i] = Convert.ToSingle(ingridients[i].WearValue); - } - foreach (float f in arrInput) - { - avgFloat += Convert.ToSingle(f); - } - avgFloat /= 10; - return setprecission(((maxFloat - minFloat) * avgFloat) + minFloat, 10); - } - public void parseCraft(List inputs, List outputs, string want) { //List results = new List(); @@ -162,6 +70,7 @@ private void runCycle() private void StartCalculation() { + Logger.Log($"[{DateTime.Now}]: Started benchmark"); currComb = 0; List outcomes = new List(); outcomes.Add(new Skin("AK-47 | Safari Mesh", 0.06f, 0.8f, Quality.Industrial)); @@ -218,7 +127,7 @@ private void StartCalculation() timer.Stop(); TimeSpan timespan = timer.Elapsed; - + Logger.Log($"[{DateTime.Now}]: Benchmark ended, speed = {Math.Round(currComb / timespan.TotalSeconds)}"); Invoke((MethodInvoker)(() => { submitScoreBtn.Enabled = true; @@ -232,14 +141,16 @@ private void StartCalculation() public Benchmark(string version) { InitializeComponent(); + Logger.Log($"[{DateTime.Now}]: Opened benchmark window"); versionLabel2.Text = version; threadCountLabel.Text = $"{Environment.ProcessorCount} Threads"; ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor"); foreach (ManagementObject mo in mos.Get()) cpuNameLabel.Text = mo["Name"].ToString().Trim(); - + Logger.Log($"[{DateTime.Now}]: CPU Name: {cpuNameLabel.Text} ({threadCountLabel.Text})"); thread1 = new Thread(runCycle); LoadStats(); + } private void startBenchmarkBtn_Click(object sender, EventArgs e) @@ -254,23 +165,23 @@ private void Updater_Tick(object sender, EventArgs e) customProgressBar1.Value = currComb; } - string uri = "https://prevterapi.000webhostapp.com/"; + string uri = "http://prevter.tk/"; - private void AddCpuToList(string cpu, string speed, string ver) + private void AddCpuToList(string cpu, string speed, string ver, bool bigMargin) { - Color backColor = cpu.Contains("AMD") ? Color.FromArgb(157, 0, 20) : (cpu.Contains("Intel") ? Color.FromArgb(0, 125, 195) : Color.FromArgb(56, 56, 56)); - Color foreColor = Color.White; + Color backColor = cpu.Contains("AMD") ? Color.FromArgb(157, 0, 20) : (cpu.Contains("Intel") ? Color.FromArgb(0, 125, 195) : (cpu.Contains("NVidia") ? Color.FromArgb(118, 185, 0) : Color.FromArgb(56, 56, 56))); + Color foreColor = cpu.Contains("NVidia") ? Color.Black : Color.White; var tmpPanel = new Panel { BackColor = backColor, Size = new Size(350, 35), - Margin = new Padding(0,0,0,5) + Margin = new Padding(0,0,0,bigMargin?20:5) }; tmpPanel.Controls.Add(new Label { Location = new Point(3,3), - Font = new Font("Microsoft JhengHei UI Light", 8f), + Font = new Font("Inter", 8f), Text = cpu, AutoSize = true, ForeColor = foreColor @@ -278,7 +189,7 @@ private void AddCpuToList(string cpu, string speed, string ver) tmpPanel.Controls.Add(new Label { Location = new Point(3, 18), - Font = new Font("Microsoft JhengHei UI Light", 8f), + Font = new Font("Inter", 8f), Text = $"{speed} к/с ({ver})", AutoSize = true, ForeColor = foreColor @@ -288,40 +199,69 @@ private void AddCpuToList(string cpu, string speed, string ver) private void LoadStats() { - flowLayoutPanel1.Controls.Clear(); - WebRequest request = WebRequest.Create($"{uri}getBenchmarks.php"); - request.Credentials = CredentialCache.DefaultCredentials; - WebResponse response = request.GetResponse(); - - using (Stream dataStream = response.GetResponseStream()) + try { - StreamReader reader = new StreamReader(dataStream); - string responseFromServer = reader.ReadToEnd(); - Console.WriteLine(responseFromServer); - if(responseFromServer.Contains('|')) + flowLayoutPanel1.Controls.Clear(); + WebRequest request = WebRequest.Create($"{uri}getBenchmarks.php"); + request.Credentials = CredentialCache.DefaultCredentials; + WebResponse response = request.GetResponse(); + + using (Stream dataStream = response.GetResponseStream()) { - foreach (var cpu in responseFromServer.Remove(responseFromServer.Length - 1).Split('&')) + StreamReader reader = new StreamReader(dataStream); + string responseFromServer = reader.ReadToEnd(); + Logger.Log($"[{DateTime.Now}]: Loaded benchmark scores"); + Console.WriteLine(responseFromServer); + if(responseFromServer.Contains('|')) { - var items = cpu.Split('|'); - AddCpuToList(items[0], items[1], items[2]); + var results = responseFromServer.Remove(responseFromServer.Length - 1).Split('&'); + int index = 0; + foreach (var cpu in results) + { + index++; + var items = cpu.Split('|'); + AddCpuToList(items[0], items[1], items[2], index== results.Length); + } } } + response.Close(); + } + catch(Exception ex) + { + flowLayoutPanel1.Controls.Add(new Label + { + Text = "Произошла ошибка подключения", + AutoSize = true, + ForeColor = Color.White + }); + + Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{Environment.NewLine}{ex.StackTrace}"); + Logger.SaveCrashReport(); } - response.Close(); } private void submitScoreBtn_Click(object sender, EventArgs e) { - submitScoreBtn.Enabled = false; - HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{uri}addBenchmark.php?cpu={cpuNameLabel.Text} ({threadCountLabel.Text})&speed={speedLabel.Text.Split(' ')[0]}"); - req.UserAgent = $"FloatTool/{versionLabel2.Text}"; - HttpWebResponse res = (HttpWebResponse)req.GetResponse(); - res.Close(); - MessageBox.Show("Ваш результат был принят."); + try + { + submitScoreBtn.Enabled = false; + HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{uri}addBenchmark.php?cpu={cpuNameLabel.Text} ({threadCountLabel.Text})&speed={speedLabel.Text.Split(' ')[0]}"); + req.UserAgent = $"FloatTool/{versionLabel2.Text}"; + HttpWebResponse res = (HttpWebResponse)req.GetResponse(); + res.Close(); + MessageBox.Show("Ваш результат был принят."); + Logger.Log($"[{DateTime.Now}] Recorded benchmark score: {speedLabel.Text.Split(' ')[0]}"); + } + catch (Exception ex) + { + Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{Environment.NewLine}{ex.StackTrace}"); + Logger.SaveCrashReport(); + } } private void closeBtn_Click(object sender, EventArgs e) { + Logger.Log($"[{DateTime.Now}]: Benchmark window closed"); Close(); } @@ -342,20 +282,5 @@ private void DragWindowMouseDown(object sender, MouseEventArgs e) SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); } } - - private void panel7_Paint(object sender, PaintEventArgs e) - { - - } - - private void panel9_Paint(object sender, PaintEventArgs e) - { - - } - - private void panel7_Paint_1(object sender, PaintEventArgs e) - { - - } } } diff --git a/FloatToolGUI/Calculation.cs b/FloatToolGUI/Calculation.cs new file mode 100644 index 0000000..562c3e7 --- /dev/null +++ b/FloatToolGUI/Calculation.cs @@ -0,0 +1,198 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FloatToolGUI +{ + static class Calculation + { + /// + /// Calculates wear value based of input skins and min/max value of outcome + /// + /// List of 10 skins + /// Minimal wear value of skin that is going to be crafted + /// Maximum wear value of skin that is going to be crafted + /// Wear value represented in decimal type + static public decimal craft(List ingridients, float minFloat, float maxFloat) + { + decimal avgFloat = 0; + foreach (InputSkin f in ingridients) + { + avgFloat += (decimal)f.WearValue; + } + avgFloat /= 10; + return ((decimal)(maxFloat - minFloat) * avgFloat) + (decimal)minFloat; + } + + /// + /// Does same job as craft(List, float, float), but uses float as type + /// + /// List of 10 skins + /// Minimal wear value of skin that is going to be crafted + /// Maximum wear value of skin that is going to be crafted + /// Float wear value in string + static public string craftF(List ingridients, float minFloat, float maxFloat) + { + float avgFloat = 0; + float[] arrInput = new float[10]; + for (int i = 0; i < 10; i++) + { + arrInput[i] = Convert.ToSingle(ingridients[i].WearValue); + } + foreach (float f in arrInput) + { + avgFloat += Convert.ToSingle(f); + } + avgFloat /= 10; + return setprecission(((maxFloat - minFloat) * avgFloat) + minFloat, 10); + } + + public static string setprecission(double number, int figures) + { + int e = 0; + while (number >= 10.0) + { + e += 1; + number /= 10; + } + while (number < 1.0) + { + e -= 1; + number *= 10; + } + figures--; + number = (float)Math.Round(number, figures); + figures += 0 - e; + while (e > 0) + { + number *= 10; + e -= 1; + } + while (e < 0) + { + number /= 10; + e += 1; + } + if (figures < 0) + figures = 0; + return number.ToString($"f{figures}", CultureInfo.InvariantCulture); + } + + public static Quality FromString(string value) + { + if (value == "Consumer") return Quality.Consumer; + else if (value == "Industrial") return Quality.Industrial; + else if (value == "Mil-Spec") return Quality.MilSpec; + else if (value == "Restricted") return Quality.Restricted; + else if (value == "Classified") return Quality.Classified; + else return Quality.Covert; + } + + public static List[] GroupOutcomes(List skins) + { + var allList = new List>(); //List with all outcomes + float[] currIter = { 0f, 1f }; //Last iteration wear range + List floatRanges = new List(); //List of all ranges that has been parsed + + foreach (var skin in skins) + { + float[] curr = { skin["maxWear"], skin["minWear"] }; + List list = new List(); + if (curr.SequenceEqual(currIter) || floatRanges.Any(x => (x.SequenceEqual(curr)))) continue; //If range already exists + else + { + currIter = curr; + floatRanges.Add(currIter); + } + foreach (var skin1 in skins) + if ((skin["maxWear"] == skin1["maxWear"]) && (skin["minWear"] == skin1["minWear"])) + list.Add(new Skin(skin1["name"].ToString(), float.Parse(skin1["minWear"].ToString().Replace('.', ',')), float.Parse(skin1["maxWear"].ToString().Replace('.', ',')), FromString(skin1["rarity"].ToString().Split(' ')[0]))); + allList.Add(list); + } + + return allList.ToArray(); + } + + static public bool NextCombination(IList num, int n, int k) + { + bool finished; + var changed = finished = false; + if (k <= 0) return false; + for (var i = k - 1; !finished && !changed; i--) + { + if (num[i] < n - 1 - (k - 1) + i) + { + num[i]++; + if (i < k - 1) + for (var j = i + 1; j < k; j++) + num[j] = num[j - 1] + 1; + changed = true; + } + finished = i == 0; + } + return changed; + } + + static public IEnumerable Combinations(IEnumerable elements, int k, int start, int skip) + { + var elem = elements.ToArray(); + var size = elem.Length; + if (k > size) yield break; + var numbers = new int[k]; + for (var i = 0; i < k; i++) + numbers[i] = i; + int step = 0; + do + { + if ((step + start) % skip == 0) + yield return numbers.Select(n => elem[n]); + step++; + } while (NextCombination(numbers, size, k)); + } + + private static IEnumerable CombinationsRosettaWoRecursion(int m, int n) + { + int[] result = new int[m]; + Stack stack = new Stack(m); + stack.Push(0); + while (stack.Count > 0) + { + int index = stack.Count - 1; + int value = stack.Pop(); + while (value < n) + { + result[index++] = value++; + stack.Push(value); + if (index != m) continue; + yield return (int[])result.Clone(); + break; + } + } + } + public static IEnumerable CombinationsRosettaWoRecursion(T[] array, int m, int startIndex, int skip) + { + if (array.Length < m) + throw new ArgumentException("Array length can't be less than number of selected elements"); + if (m < 1) + throw new ArgumentException("Number of selected elements can't be less than 1"); + T[] result = new T[m]; + int index = 0; + foreach (int[] j in CombinationsRosettaWoRecursion(m, array.Length)) + { + index++; + if ((index - startIndex) % skip != 0) continue; + index = 0; + + for (int i = 0; i < m; i++) + { + result[i] = array[j[i]]; + } + yield return result; + } + } + } +} diff --git a/FloatToolGUI/FloatToolGUI.csproj b/FloatToolGUI/FloatToolGUI.csproj index 27d3004..7cb64a7 100644 --- a/FloatToolGUI/FloatToolGUI.csproj +++ b/FloatToolGUI/FloatToolGUI.csproj @@ -81,9 +81,11 @@ ..\packages\DiscordRichPresence.1.0.175\lib\net35\DiscordRPC.dll + False ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + False @@ -108,6 +110,7 @@ Benchmark.cs + UserControl @@ -121,6 +124,7 @@ CustomToggleSwitch.cs + Form @@ -129,6 +133,11 @@ + + True + True + Resources.resx + Form @@ -158,14 +167,9 @@ ResXFileCodeGenerator - Resources.Designer.cs Designer + Resources.Designer.cs - - True - Resources.resx - True - @@ -189,7 +193,10 @@ - + + Always + + diff --git a/FloatToolGUI/Logger.cs b/FloatToolGUI/Logger.cs new file mode 100644 index 0000000..caa89ac --- /dev/null +++ b/FloatToolGUI/Logger.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FloatToolGUI +{ + static class Logger + { + static public void Log(object data) + { + using (StreamWriter w = File.AppendText("debug.log")) + { + w.WriteLine(data); + } + } + + static public void SaveCrashReport() + { + Directory.CreateDirectory("crashreports"); + File.Copy("debug.log", @$"crashreports{Path.DirectorySeparatorChar}{DateTime.Now.ToString().Replace(' ', '_').Replace(':', '-')}.log"); + } + + static public void ClearLogs() + { + File.WriteAllText("debug.log", string.Empty); + } + } +} diff --git a/FloatToolGUI/Main.Designer.cs b/FloatToolGUI/Main.Designer.cs index d9e0d4e..044208c 100644 --- a/FloatToolGUI/Main.Designer.cs +++ b/FloatToolGUI/Main.Designer.cs @@ -50,7 +50,7 @@ private void InitializeComponent() this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FloatTool)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.foundCombinationContainer = new System.Windows.Forms.FlowLayoutPanel(); this.outputConsoleBox = new System.Windows.Forms.TextBox(); this.DiscordUpdater = new System.Windows.Forms.Timer(this.components); this.panel1 = new System.Windows.Forms.Panel(); @@ -144,7 +144,7 @@ private void InitializeComponent() // splitContainer1.Panel1 // this.splitContainer1.Panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); - this.splitContainer1.Panel1.Controls.Add(this.flowLayoutPanel1); + this.splitContainer1.Panel1.Controls.Add(this.foundCombinationContainer); resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); // // splitContainer1.Panel2 @@ -153,11 +153,11 @@ private void InitializeComponent() this.splitContainer1.Panel2.Controls.Add(this.outputConsoleBox); resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); // - // flowLayoutPanel1 + // foundCombinationContainer // - resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1"); - this.flowLayoutPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(37)))), ((int)(((byte)(37))))); - this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + resources.ApplyResources(this.foundCombinationContainer, "foundCombinationContainer"); + this.foundCombinationContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(37)))), ((int)(((byte)(37))))); + this.foundCombinationContainer.Name = "foundCombinationContainer"; // // outputConsoleBox // @@ -236,12 +236,11 @@ private void InitializeComponent() this.panel9.Controls.Add(this.closeBtn); resources.ApplyResources(this.panel9, "panel9"); this.panel9.Name = "panel9"; - this.panel9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel9_MouseDown); + this.panel9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDragEvent); // // benchmarkButton // this.benchmarkButton.BackColor = System.Drawing.Color.Transparent; - this.benchmarkButton.BackgroundImage = global::FloatToolGUI.Properties.Resources.benchmarkWhite; resources.ApplyResources(this.benchmarkButton, "benchmarkButton"); this.benchmarkButton.FlatAppearance.BorderSize = 0; this.benchmarkButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); @@ -254,7 +253,6 @@ private void InitializeComponent() // settingsButton // this.settingsButton.BackColor = System.Drawing.Color.Transparent; - this.settingsButton.BackgroundImage = global::FloatToolGUI.Properties.Resources.gearWhite; resources.ApplyResources(this.settingsButton, "settingsButton"); this.settingsButton.FlatAppearance.BorderSize = 0; this.settingsButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); @@ -335,7 +333,7 @@ private void InitializeComponent() this.panel3.Controls.Add(this.label8); resources.ApplyResources(this.panel3, "panel3"); this.panel3.Name = "panel3"; - this.panel3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel3_MouseDown); + this.panel3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDragEvent); // // label24 // @@ -420,7 +418,7 @@ private void InitializeComponent() resources.GetString("weaponQualityBox.Items3"), resources.GetString("weaponQualityBox.Items4")}); this.weaponQualityBox.Name = "weaponQualityBox"; - this.weaponQualityBox.SelectedIndexChanged += new System.EventHandler(this.comboBox3_SelectedIndexChanged); + this.weaponQualityBox.SelectedIndexChanged += new System.EventHandler(this.SkinComboboxChanged); // // label12 // @@ -513,7 +511,7 @@ private void InitializeComponent() this.weaponSkinBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); this.weaponSkinBox.FormattingEnabled = true; this.weaponSkinBox.Name = "weaponSkinBox"; - this.weaponSkinBox.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged); + this.weaponSkinBox.SelectedIndexChanged += new System.EventHandler(this.SkinComboboxChanged); // // panel5 // @@ -668,7 +666,7 @@ private void InitializeComponent() this.startBtn.ForeColor = System.Drawing.Color.White; this.startBtn.Name = "startBtn"; this.startBtn.UseVisualStyleBackColor = false; - this.startBtn.Click += new System.EventHandler(this.button2_Click); + this.startBtn.Click += new System.EventHandler(this.StartButtonClick); // // panel15 // @@ -713,8 +711,8 @@ private void InitializeComponent() // this.threadCountInput.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); this.threadCountInput.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.threadCountInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); resources.ApplyResources(this.threadCountInput, "threadCountInput"); + this.threadCountInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); this.threadCountInput.Maximum = new decimal(new int[] { 1024, 0, @@ -761,7 +759,7 @@ private void InitializeComponent() this.downloadProgressBar.Minimum = 0; this.downloadProgressBar.Name = "downloadProgressBar"; this.downloadProgressBar.ProgressColor = System.Drawing.Color.Green; - this.downloadProgressBar.ProgressFont = new System.Drawing.Font("Microsoft JhengHei UI", 11.25F, System.Drawing.FontStyle.Bold); + this.downloadProgressBar.ProgressFont = new System.Drawing.Font("Inter", 11.25F, System.Drawing.FontStyle.Bold); this.downloadProgressBar.Value = 0F; // // stattrackCheckBox @@ -772,7 +770,7 @@ private void InitializeComponent() this.stattrackCheckBox.Name = "stattrackCheckBox"; this.stattrackCheckBox.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.stattrackCheckBox.TurnedOnColor = System.Drawing.Color.Green; - this.stattrackCheckBox.OnToggled += new System.EventHandler(this.checkBox1_CheckedChanged); + this.stattrackCheckBox.OnToggled += new System.EventHandler(this.SkinComboboxChanged); // // FloatTool // @@ -878,7 +876,7 @@ private void InitializeComponent() private System.Windows.Forms.Label label12; private System.Windows.Forms.Button benchmarkButton; private System.Windows.Forms.SplitContainer splitContainer1; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.FlowLayoutPanel foundCombinationContainer; private System.Windows.Forms.Label label24; } } diff --git a/FloatToolGUI/Main.cs b/FloatToolGUI/Main.cs index 9c055ed..ffc7181 100644 --- a/FloatToolGUI/Main.cs +++ b/FloatToolGUI/Main.cs @@ -1,6 +1,7 @@ using DiscordRPC; using FloatToolGUI.Resources; using static FloatToolGUI.Utils; +using static FloatToolGUI.Calculation; using Newtonsoft.Json; using System; using System.Collections; @@ -77,81 +78,6 @@ public enum SearchMode public Currency currentCurr = Currency.USD; public bool discordWorker = true; - public static string setprecission(double number, int figures) - { - int e = 0; - while (number >= 10.0) { - e += 1; - number /= 10; - } - while (number < 1.0) { - e -= 1; - number *= 10; - } - figures--; - number = (float)Math.Round(number, figures); - figures += 0 - e; - while (e > 0) { - number *= 10; - e -= 1; - } - while (e < 0) { - number /= 10; - e += 1; - } - if (figures < 0) - figures = 0; - return number.ToString($"f{figures}", CultureInfo.InvariantCulture); - } - static public decimal craft(List ingridients, float minFloat, float maxFloat) - { - decimal avgFloat = 0; - foreach (InputSkin f in ingridients) - { - avgFloat += (decimal)f.WearValue; - } - avgFloat /= 10; - return ((decimal)(maxFloat - minFloat) * avgFloat) + (decimal)minFloat; - } - static public string craftF(List ingridients, float minFloat, float maxFloat) - { - float avgFloat = 0; - float[] arrInput = new float[10]; - for (int i = 0; i < 10; i++) - { - arrInput[i] = Convert.ToSingle(ingridients[i].WearValue); - } - foreach (float f in arrInput) - { - avgFloat += Convert.ToSingle(f); - } - avgFloat /= 10; - return setprecission(((maxFloat - minFloat) * avgFloat) + minFloat, 10); - } - static public string getNextRarity(string rarity) - { - if (rarity == "Consumer") - { - return "Industrial"; - } - else if (rarity == "Industrial") - { - return "Mil-Spec"; - } - else if (rarity == "Mil-Spec") - { - return "Restricted"; - } - else if (rarity == "Restricted") - { - return "Classified"; - } - else if (rarity == "Classified") - { - return "Covert"; - } - return "Nothing"; - } static public string getSkinData(string name) { name = name.Replace("StatTrak™ ",""); //remove stattrack @@ -201,6 +127,13 @@ public void parseCraft(List inputs, List outputs, string want) floatStrings.Add(Math.Round(fl.WearValue, 14).ToString().Replace(",", ".")); price += fl.Price; } + + Logger.Log($"[{DateTime.Now.ToString()}]: Found coombination {{"); + Logger.Log($" Float = {flotOrigin}{newLine}" + + $" Test Float = {flot}{newLine}" + + $" Price = {price} {inputs[0].SkinCurrency}{newLine}" + + $" Float list = [{String.Join(", ", floatStrings)}]{newLine}}}"); + AddCombinationToList(DateTime.Now.ToString("HH:mm:ss"), flotOrigin, flot, price, floatStrings); ConsoleBuffer.Append($"[{DateTime.Now.ToString("HH:mm:ss")}] {strings.CombinationFound}{newLine}"); ConsoleBuffer.Append($"{strings.PossibleFloat}: {flotOrigin}{newLine}"); @@ -300,25 +233,57 @@ public void updateSearchStr() search += " (" + weaponQualityBox.Text + ")"; fullSkinName.Text = search; UpdateOutcomes(); + Logger.Log($"[{DateTime.Now.ToString()}]: Changed search skin to: {search}"); } RegistryKey registryData; public FloatTool() { InitializeComponent(); + Logger.ClearLogs(); + Logger.Log($"[{DateTime.Now}]: FloatTool-GUI {versionLabel.Text}"); SetStyle(ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true); ConsoleBuffer = new StringBuilder(); newLine = Environment.NewLine; CheckRegistry(); + registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool"); - ChangeTheme(Convert.ToBoolean(registryData.GetValue("darkMode"))); - muteSound = !Convert.ToBoolean(registryData.GetValue("sound")); - WorkStatusUpdater.Interval = (int)registryData.GetValue("bufferSpeed"); - discordWorker = Convert.ToBoolean(registryData.GetValue("discordRPC")); - currentCurr = (Currency)registryData.GetValue("currency"); - if (Convert.ToBoolean(registryData.GetValue("updateCheck"))) + + var darkThemeRK = registryData.GetValue("darkMode"); + var soundRK = registryData.GetValue("sound"); + var bufferSpeedRK = registryData.GetValue("bufferSpeed"); + var discordRPCRK = registryData.GetValue("discordRPC"); + var currencyRK = registryData.GetValue("currency"); + var updateCheckRK = registryData.GetValue("updateCheck"); + + ChangeTheme(Convert.ToBoolean(darkThemeRK)); + muteSound = !Convert.ToBoolean(soundRK); + WorkStatusUpdater.Interval = (int)bufferSpeedRK; + discordWorker = Convert.ToBoolean(discordRPCRK); + currentCurr = (Currency)currencyRK; + + Logger.Log($"[{DateTime.Now}]: Loaded registry settings:"); + Logger.Log($"Dark mode = {darkThemeRK}"); + Logger.Log($"Sound = {soundRK}"); + Logger.Log($"Buffer speed = {bufferSpeedRK}"); + Logger.Log($"Discord RPC = {discordRPCRK}"); + Logger.Log($"Currency = {currencyRK}"); + Logger.Log($"Check updates = {updateCheckRK}"); + + if (Convert.ToBoolean(updateCheckRK)) { - string ver = CheckUpdates(); + string ver = versionLabel.Text; + try + { + ver = CheckUpdates(); + } + catch(Exception ex) + { + Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{newLine}{ex.StackTrace}"); + Logger.SaveCrashReport(); + } + + Logger.Log($"Checked version is: {ver}{newLine}Installed: {versionLabel.Text}"); if (ver != versionLabel.Text) { DialogResult result = MessageBox.Show( @@ -333,6 +298,7 @@ public FloatTool() System.Diagnostics.Process.Start("https://github.com/Nemeshio/FloatTool-GUI/releases/latest"); } } + Logger.Log($"[{DateTime.Now.ToString()}]: Initialized"); } public DiscordRpcClient client; @@ -387,6 +353,7 @@ private void Form1_Load(object sender, EventArgs e) thread1 = new Thread(runCycle); this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; this.threadCountInput.Value = Environment.ProcessorCount; + AddFont(Properties.Resources.Inter_Regular); } private void runCycle() @@ -412,72 +379,14 @@ private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) } } updateSearchStr(); + } - private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) - { - updateSearchStr(); - } - - private void checkBox1_CheckedChanged(object sender, EventArgs e) - { - updateSearchStr(); - } - - private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) + private void SkinComboboxChanged(object sender, EventArgs e) { updateSearchStr(); } - private static bool NextCombination(IList num, int n, int k) - { - bool finished; - - var changed = finished = false; - - if (k <= 0) return false; - - for (var i = k - 1; !finished && !changed; i--) - { - if (num[i] < n - 1 - (k - 1) + i) - { - num[i]++; - - if (i < k - 1) - for (var j = i + 1; j < k; j++) - num[j] = num[j - 1] + 1; - changed = true; - } - finished = i == 0; - } - - return changed; - } - - private static IEnumerable Combinations(IEnumerable elements, int k, int start, int skip) - { - var elem = elements.ToArray(); - var size = elem.Length; - - if (k > size) yield break; - - var numbers = new int[k]; - - for (var i = 0; i < k; i++) - numbers[i] = i; - - int step = 0; - - do - { - if((step+start)%skip == 0) - { - yield return numbers.Select(n => elem[n]); - } - step++; - } while (NextCombination(numbers, size, k)); - } - public void secndThread(List craftList, string wanted, List pool, int start, int skip) { foreach (IEnumerable pair in Combinations(pool, 10, start, skip)) @@ -498,7 +407,7 @@ public void AddCombinationToList(string time, decimal flotOrigin, string flot, f ForeColor = Color.White, Size = new Size(425, 220), Margin = new Padding(3), - Font = new Font("Microsoft JhengHei Light", 10f) + Font = new Font("Inter", 10f) }; #region Labels tmpPanel.Controls.Add(new Label @@ -542,7 +451,7 @@ public void AddCombinationToList(string time, decimal flotOrigin, string flot, f { BackColor = Color.FromArgb(56, 56, 56), Location = new Point(117 + x, y), - Font = new Font("Microsoft JhengHei Light", 8f), + Font = new Font("Inter", 8f), Size = new Size(84, 25), Text = "Копировать", Tag = floatStrings[i], @@ -573,6 +482,7 @@ public BigInteger Fact(int number) private void StartCalculation() { + Logger.Log($"[{DateTime.Now.ToString()}]: Started search"); if (discordWorker) { client.SetPresence(new RichPresence() { @@ -597,15 +507,23 @@ private void StartCalculation() startBtn.Text = "Стоп"; fullSkinName.SelectionStart = fullSkinName.Text.Length; outputConsoleBox.ScrollToCaret(); - flowLayoutPanel1.Controls.Clear(); + foundCombinationContainer.Controls.Clear(); } )); - string count = "" + quantityInput.Value; string start = "" + skipValueInput.Value; string wanted = searchFloatInput.Text; string q = fullSkinName.Text; - string url = $"https://steamcommunity.com/market/listings/730/{q}/render/?query=&language=russian&count={count}&start={start}¤cy={(int)currentCurr}"; + + Logger.Log($"Settings: {{{newLine}" + + $" Float = {wanted}{newLine}" + + $" Count = {count}{newLine}" + + $" Skip = {start}{newLine}" + + $" Name = {q}{newLine}" + + $" Threads = {threadCountInput.Value}{newLine}" + + $"}}"); + + string url = $"https://steamcommunity.com/market/listings/730/{ q }/render/?query=&language=russian&count={ count }&start={ start }¤cy={ (int)currentCurr }"; Console.WriteLine(url); this.Invoke((MethodInvoker)(() => @@ -620,49 +538,62 @@ private void StartCalculation() )); List inputSkins = new List(); - using (WebClient wc = new WebClient()) + try { - string json = wc.DownloadString(url); - Console.WriteLine(json); - dynamic r = JsonConvert.DeserializeObject(json); - this.Invoke((MethodInvoker)(() => + using (WebClient wc = new WebClient()) + { + string json = wc.DownloadString(url); + Console.WriteLine(json); + dynamic r = JsonConvert.DeserializeObject(json); + this.Invoke((MethodInvoker)(() => { - outputConsoleBox.AppendText( "Получение флоатов..." + newLine); + outputConsoleBox.AppendText("Получение флоатов..." + newLine); fullSkinName.SelectionStart = fullSkinName.Text.Length; outputConsoleBox.ScrollToCaret(); } - )); - int counter = 0; - foreach (var el in r["listinginfo"]) - { - counter++; - string lid = r["listinginfo"][el.Name]["listingid"]; - string aid = r["listinginfo"][el.Name]["asset"]["id"]; - string link = r["listinginfo"][el.Name]["asset"]["market_actions"][0]["link"]; - url = "https://api.csgofloat.com/?url=" + link.Replace("%assetid%", aid).Replace("%listingid%", lid); - using (WebClient wcf = new WebClient()) + )); + int counter = 0; + foreach (var el in r["listinginfo"]) { - try + counter++; + string lid = r["listinginfo"][el.Name]["listingid"]; + string aid = r["listinginfo"][el.Name]["asset"]["id"]; + string link = r["listinginfo"][el.Name]["asset"]["market_actions"][0]["link"]; + url = "https://api.csgofloat.com/?url=" + link.Replace("%assetid%", aid).Replace("%listingid%", lid); + using (WebClient wcf = new WebClient()) { - wcf.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); - string jsonf = wcf.DownloadString(url); - dynamic rf = JsonConvert.DeserializeObject(jsonf); - //Debug.WriteLine("[DEBUG] " + counter + "/" + count + " load from csgofloat = " + jsonf); - inputSkins.Add(new InputSkin(Convert.ToDouble(rf["iteminfo"]["floatvalue"]), - (float.Parse(r["listinginfo"][el.Name]["converted_price"].ToString()) + float.Parse(r["listinginfo"][el.Name]["converted_fee"].ToString())) / 100, - currentCurr)); + try + { + wcf.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); + string jsonf = wcf.DownloadString(url); + dynamic rf = JsonConvert.DeserializeObject(jsonf); + //Debug.WriteLine("[DEBUG] " + counter + "/" + count + " load from csgofloat = " + jsonf); + inputSkins.Add(new InputSkin(Convert.ToDouble(rf["iteminfo"]["floatvalue"]), + (float.Parse(r["listinginfo"][el.Name]["converted_price"].ToString()) + float.Parse(r["listinginfo"][el.Name]["converted_fee"].ToString())) / 100, + currentCurr)); + } + catch (Exception ex) + { + if (ex.GetType() != typeof(ThreadAbortException)) + { + Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{Environment.NewLine}{ex.StackTrace}"); + Logger.SaveCrashReport(); + } + } } - catch (Exception e) + this.Invoke((MethodInvoker)(() => { - Console.WriteLine($"{url} = {e.Message}"); - } - } - this.Invoke((MethodInvoker)(() => - { - downloadProgressBar.Value = counter; + downloadProgressBar.Value = counter; + })); } - )); - + } + } + catch (Exception ex) + { + if(ex.GetType() != typeof(ThreadAbortException)) + { + Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{Environment.NewLine}{ex.StackTrace}"); + Logger.SaveCrashReport(); } } if (sortCheckBox.Checked) @@ -741,7 +672,7 @@ private void StartCalculation() int threads = (int)threadCountInput.Value; try { - for (int i = 1; i < threads; i++) + for (int i = 0; i < threads; i++) { Thread newThread = new Thread(() => secndThread(outcomes, wanted, inputSkins, i, threads)); newThread.Start(); @@ -753,12 +684,7 @@ private void StartCalculation() Console.WriteLine(ex.Message); } - foreach (IEnumerable pair in Combinations(inputSkins, 10, 0, threads)) - { - parseCraft(pair.ToList(), outcomes, wanted); - currComb++; - } - Console.WriteLine("Next group"); + Console.WriteLine($"[DEBUG] {threads} threads started!"); while (true) { @@ -791,7 +717,7 @@ private void StartCalculation() } - private void button2_Click(object sender, EventArgs e) + private void StartButtonClick(object sender, EventArgs e) { if(startBtn.Text == "Старт") { thread1.Abort(); @@ -800,6 +726,7 @@ private void button2_Click(object sender, EventArgs e) } else { + Logger.Log($"[{DateTime.Now}] Stopping search"); Searching = false; thread1.Abort(); startBtn.Text = "Старт"; @@ -892,47 +819,7 @@ private void button1_Click(object sender, EventArgs e) MessageBox.Show("Такого скина не существует! Перепроверьте настройки.", "FloatTool", MessageBoxButtons.OK, MessageBoxIcon.Error); } - bool testOverlap(float x1, float x2, float y1, float y2) - { - return (x1 >= y1 && x1 <= y2) || - (x2 >= y1 && x2 <= y2) || - (y1 >= x1 && y1 <= x2) || - (y2 >= x1 && y2 <= x2); - } - - private Quality FromString(string value) - { - if (value == "Consumer") return Quality.Consumer; - else if (value == "Industrial") return Quality.Industrial; - else if (value == "Mil-Spec") return Quality.MilSpec; - else if (value == "Restricted") return Quality.Restricted; - else if (value == "Classified") return Quality.Classified; - else return Quality.Covert; - } - - private List[] GroupOutcomes(List skins) - { - var allList = new List>(); //List with all outcomes - float[] currIter = { 0f, 1f }; //Last iteration wear range - List floatRanges = new List(); //List of all ranges that has been parsed - - foreach(var skin in skins) - { - float[] curr = { skin["maxWear"], skin["minWear"] }; - List list = new List(); - if (curr.SequenceEqual(currIter) || floatRanges.Any(x => (x.SequenceEqual(curr)))) continue; //If range already exists - else { - currIter = curr; - floatRanges.Add(currIter); - } - foreach (var skin1 in skins) - if ((skin["maxWear"] == skin1["maxWear"]) && (skin["minWear"] == skin1["minWear"])) - list.Add(new Skin(skin1["name"].ToString(), float.Parse(skin1["minWear"].ToString().Replace('.', ',')), float.Parse(skin1["maxWear"].ToString().Replace('.', ',')), FromString(skin1["rarity"].ToString().Split(' ')[0]))); - allList.Add(list); - } - - return allList.ToArray(); - } + private bool floatRangeText(string text, string minVal, string maxVal) { @@ -953,7 +840,7 @@ private bool floatRangeText(string text, string minVal, string maxVal) { return testOverlap(minWear, maxWear, 0.15f, 0.38f); } - else if (text == "Well-Wornr") + else if (text == "Well-Worn") { return testOverlap(minWear, maxWear, 0.38f, 0.45f); } @@ -977,7 +864,7 @@ private void button8_Click(object sender, EventArgs e) private void MaximizeMinimizeButton(object sender, EventArgs e) { - var buttonText = ((System.Windows.Forms.Button)sender).Text; + var buttonText = ((Button)sender).Text; if(buttonText == "_") WindowState = FormWindowState.Minimized; else { @@ -1038,16 +925,7 @@ protected override void WndProc(ref Message message) } } - private void panel3_MouseDown(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - ReleaseCapture(); - SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); - } - } - - private void panel9_MouseDown(object sender, MouseEventArgs e) + private void WindowDragEvent(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { @@ -1084,8 +962,14 @@ void ChangeTheme(bool dark) { if (dark) { + BackColor = Color.FromArgb(44, 44, 44); outputConsoleBox.BackColor = Color.FromArgb(31, 31, 31); outputConsoleBox.ForeColor = Color.FromArgb(255, 255, 255); + splitContainer1.BackColor = Color.FromArgb(31, 31, 31); + splitContainer1.Panel1.BackColor = Color.FromArgb(31, 31, 31); + splitContainer1.Panel2.BackColor = Color.FromArgb(31, 31, 31); + + foundCombinationContainer.BackColor = Color.FromArgb(37, 37, 37); panel10.BackColor = Color.FromArgb(31, 31, 31); panel12.BackColor = Color.FromArgb(31, 31, 31); @@ -1178,8 +1062,14 @@ void ChangeTheme(bool dark) } else { + BackColor = Color.FromArgb(222, 222, 222); outputConsoleBox.BackColor = Color.FromArgb(255, 255, 255); outputConsoleBox.ForeColor = Color.FromArgb(0, 0, 0); + splitContainer1.BackColor = Color.FromArgb(255, 255, 255); + splitContainer1.Panel1.BackColor = Color.FromArgb(255, 255, 255); + splitContainer1.Panel2.BackColor = Color.FromArgb(255, 255, 255); + + foundCombinationContainer.BackColor = Color.FromArgb(222, 222, 222); panel10.BackColor = Color.FromArgb(255, 255, 255); panel12.BackColor = Color.FromArgb(255, 255, 255); @@ -1273,33 +1163,6 @@ void ChangeTheme(bool dark) private void gpuSearch_btn_Click(object sender, EventArgs e) { - double[] floats = { - 0.246938750147820, 0.196652039885521, - 0.154839321970940, 0.333326697349548, - 0.163415759801865, 0.291821509599686, - 0.374309629201889, 0.378754675388336, - 0.231419935822487, 0.311867892742157, - 0.374067693948746, 0.377068012952805, - 0.244467452168465, 0.355135351419449, - 0.352264583110809, 0.227853879332542, - 0.340960860252380, 0.375657349824905, - 0.157685652375221, 0.217334255576134, - 0.323678821325302, 0.363768666982651, - 0.350994020700455, 0.369551151990891, - 0.350340574979782, 0.338801741600037, - 0.329752802848816, 0.369740217924118, - 0.370476812124252, 0.205233186483383, - 0.360520750284195, 0.373722523450851, - 0.161364838480949, 0.263432979583740, - 0.314681977033615, 0.310743361711502, - 0.349280923604965, 0.355936050415039, - 0.269742101430893, 0.199420168995857, - 0.364472836256027, 0.218964993953705, - 0.239638179540634, 0.325499594211578, - 0.228406846523285, 0.307701110839844, - 0.156294032931328, 0.179465100169182, - 0.327553898096085, 0.150170117616653 - }; if (discordWorker) { client.SetPresence(new RichPresence() @@ -1328,8 +1191,8 @@ private void timer2_Tick(object sender, EventArgs e) foreach (var tmpPanel in combinationWindows) { - flowLayoutPanel1.Controls.Add(tmpPanel); - flowLayoutPanel1.ScrollControlIntoView(tmpPanel); + foundCombinationContainer.Controls.Add(tmpPanel); + foundCombinationContainer.ScrollControlIntoView(tmpPanel); } combinationWindows.Clear(); @@ -1371,5 +1234,16 @@ private void changeSearchMode(object sender, EventArgs e) CurrentSearchMode = SearchMode.Less; } } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + if (keyData == Keys.F1) + { + System.Diagnostics.Process.Start("https://prevter.github.io/FloatTool-GUI/table.html"); + return true; + } + + return base.ProcessCmdKey(ref msg, keyData); + } } } diff --git a/FloatToolGUI/Main.resx b/FloatToolGUI/Main.resx index 67f5d57..3e90f1d 100644 --- a/FloatToolGUI/Main.resx +++ b/FloatToolGUI/Main.resx @@ -129,34 +129,34 @@ Horizontal - + True - + Fill - + 5, 5 - + 0, 0, 0, 0 - + 449, 292 - + 0 - - flowLayoutPanel1 + + foundCombinationContainer - + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + splitContainer1.Panel1 - + 0 @@ -178,7 +178,7 @@ Fill - Microsoft JhengHei UI Light, 10pt + Inter, 9.75pt 5, 5 @@ -253,18 +253,102 @@ 65, 16 - + + panel8 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 0 + + + panel7 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 1 + + Fill - - 0, 10 + + 0, 0 - - 459, 408 + + 469, 458 - + + 7 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel4 + + + 0 + + + panel13 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel8 + + + 0 + + + panel10 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel8 + + + 1 + + + Fill + + + 0, 40 + + + 469, 418 + + 2 + + panel8 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 0 + panel11 @@ -277,18 +361,6 @@ 0 - - Top - - - 0, 0 - - - 459, 10 - - - 3 - panel12 @@ -325,6 +397,54 @@ 0 + + Fill + + + 0, 10 + + + 459, 408 + + + 2 + + + panel11 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel13 + + + 0 + + + Top + + + 0, 0 + + + 459, 10 + + + 3 + + + panel12 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel13 + + + 1 + Left @@ -349,28 +469,160 @@ 1 - - Fill + + panel9 - - 0, 40 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 469, 418 + + panel7 - + + 0 + + + button5 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel7 + + + 1 + + + button4 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel7 + + 2 - - panel8 + + button3 - + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel7 + + + 3 + + + Top + + + 0, 0 + + + 469, 40 + + + 1 + + + panel7 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + panel1 - + + 1 + + + benchmarkButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel9 + + + 0 + + + settingsButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel9 + + + 1 + + + MaximizeButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel9 + + + 2 + + + minimizeBtn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel9 + + + 3 + + + closeBtn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel9 + + + 4 + + + Top + + + 0, 0 + + + 469, 40 + + + 3 + + + panel9 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel7 + + 0 @@ -458,7 +710,7 @@ Flat - Microsoft JhengHei Light, 16pt + Inter, 18pt NoControl @@ -494,7 +746,7 @@ Flat - Microsoft JhengHei Light, 16pt + Inter, 18pt NoControl @@ -530,7 +782,7 @@ Flat - Microsoft JhengHei Light, 16pt + Inter, 18pt NoControl @@ -559,30 +811,6 @@ 4 - - Top - - - 0, 0 - - - 469, 40 - - - 3 - - - panel9 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel7 - - - 0 - Top, Right @@ -691,53 +919,65 @@ 3 - - Top + + label24 - - 0, 0 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 469, 40 + + panel3 - - 1 + + 0 - - panel7 + + versionLabel - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel1 + + panel3 - + 1 - - Fill + + label8 - + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 2 + + + Top + + 0, 0 - - 469, 458 + + 427, 40 - - 7 + + 0 - - panel1 + + panel3 - + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel4 + + panel2 - - 0 + + 2 Top, Right @@ -745,14 +985,17 @@ True + + Inter, 8.25pt + NoControl - 173, 20 + 177, 19 - 57, 15 + 60, 14 1 @@ -775,20 +1018,23 @@ True + + Inter, 8.25pt + NoControl - 138, 20 + 141, 19 - 38, 15 + 40, 14 1 - v.0.6.0 + v.0.6.1 versionLabel @@ -806,7 +1052,7 @@ True - Microsoft JhengHei Light, 22pt + Inter, 21.75pt NoControl @@ -815,7 +1061,7 @@ 5, 2 - 140, 38 + 140, 35 0 @@ -835,35 +1081,14 @@ 2 - - Top - - - 0, 0 - - - 427, 40 - - - 0 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 2 - - 79, 64 + 86, 66 + + + 6, 6, 6, 6 - 38, 24 + 40, 24 2 @@ -887,13 +1112,13 @@ Flat - Microsoft JhengHei Light, 10pt + Inter, 10.25pt NoControl - 150, 96 + 150, 98 267, 24 @@ -922,9 +1147,6 @@ True - - Microsoft JhengHei Light, 10pt - NoControl @@ -932,7 +1154,7 @@ 285, 13 - 71, 18 + 82, 19 7 @@ -959,7 +1181,7 @@ Flat - Microsoft JhengHei Light, 9pt + Inter, 9.75pt 80% (AK-47 | Safari Mesh + 3) @@ -971,10 +1193,10 @@ * Искать всё * - 203, 64 + 204, 66 - 214, 24 + 213, 24 6 @@ -1001,7 +1223,7 @@ Flat - Microsoft JhengHei Light, 9pt + Inter, 9.75pt Factory New @@ -1048,17 +1270,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 9, 67 + 7, 68 - 70, 18 + 79, 19 3 @@ -1084,17 +1303,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 9, 13 + 7, 13 - 88, 18 + 100, 19 3 @@ -1120,17 +1336,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 9, 99 + 7, 101 - 127, 18 + 140, 19 9 @@ -1160,7 +1373,7 @@ Flat - Microsoft JhengHei Light, 9pt + Inter, 9.75pt AK-47 @@ -1265,7 +1478,7 @@ XM1014 - 12, 34 + 11, 34 132, 24 @@ -1294,17 +1507,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 129, 67 + 127, 68 - 68, 18 + 77, 19 4 @@ -1330,17 +1540,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 147, 13 + 146, 12 - 43, 18 + 50, 19 4 @@ -1364,7 +1571,7 @@ Bottom - Microsoft JhengHei Light, 12pt + Inter, 12pt 0, 126 @@ -1406,7 +1613,7 @@ Flat - Microsoft JhengHei Light, 9pt + Inter, 9.75pt 150, 34 @@ -1414,73 +1621,286 @@ 132, 24 - - 5 + + 5 + + + Predator + + + weaponSkinBox + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 12 + + + Top + + + 0, 40 + + + 427, 151 + + + 1 + + + panel6 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + panel16 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel5 + + + 0 + + + panel15 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel5 + + + 1 + + + Fill + + + 0, 191 + + + 427, 267 + + + 0 + + + panel5 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 0 + + + downloadProgressBar + + + FloatToolGUI.CustomProgressBar, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + panel16 + + + 0 + + + searchmodeGreater_btn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 1 + + + searchmodeEqual_btn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 2 + + + searchmodeLess_btn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 3 + + + searchModeLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 4 + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 5 + + + quantityInput + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 6 + + + skipValueInput + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 7 + + + ascendingCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 8 + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel16 + + + 9 + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Predator + + panel16 - - weaponSkinBox + + 10 - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + searchFloatInput - - panel6 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 12 + + panel16 - - Top + + 11 - - 0, 40 + + sortCheckBox - - 427, 151 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + panel16 - - panel6 + + 12 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + startBtn - - panel2 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + panel16 - - None + + 13 - - 12, 157 + + Fill - - 0, 0, 0, 0 + + 0, 0 - - 405, 24 + + 427, 191 - + 12 - - downloadProgressBar + + panel16 - - FloatToolGUI.CustomProgressBar, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel16 + + panel5 - + 0 @@ -1490,16 +1910,16 @@ Flat - Microsoft JhengHei UI, 12.75pt, style=Bold + Inter, 14pt, style=Bold NoControl - 169, 29 + 180, 29 - 70, 32 + 77, 32 11 @@ -1526,16 +1946,16 @@ Flat - Microsoft JhengHei UI, 12.75pt, style=Bold + Inter, 14pt, style=Bold NoControl - 91, 29 + 94, 29 - 70, 32 + 80, 32 11 @@ -1562,16 +1982,16 @@ Flat - Microsoft JhengHei UI, 12.75pt, style=Bold + Inter, 14pt, style=Bold NoControl - 12, 29 + 11, 29 - 70, 32 + 77, 32 11 @@ -1597,17 +2017,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 9, 8 + 7, 7 - 105, 18 + 119, 19 5 @@ -1633,17 +2050,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 9, 67 + 7, 70 - 108, 18 + 121, 19 5 @@ -1667,13 +2081,13 @@ None - Microsoft JhengHei Light, 10pt + Inter, 9.75pt - 122, 96 + 131, 98 - 116, 21 + 126, 19 3 @@ -1694,13 +2108,13 @@ None - Microsoft JhengHei Light, 10pt + Inter, 9.75pt - 122, 127 + 131, 127 - 117, 21 + 126, 19 4 @@ -1727,10 +2141,10 @@ NoControl - 245, 39 + 267, 38 - 136, 22 + 147, 23 9 @@ -1760,10 +2174,10 @@ NoControl - 9, 126 + 7, 127 - 67, 18 + 75, 19 7 @@ -1789,17 +2203,14 @@ True - - Microsoft JhengHei Light, 10pt - NoControl - 9, 95 + 7, 98 - 89, 18 + 101, 19 6 @@ -1823,13 +2234,16 @@ None - Microsoft JhengHei Light, 10pt + Inter, 9.75pt - 122, 67 + 131, 73 + + + 16 - 116, 18 + 126, 16 2 @@ -1859,10 +2273,10 @@ NoControl - 245, 15 + 267, 15 - 111, 22 + 124, 23 8 @@ -1889,16 +2303,16 @@ Flat - Microsoft JhengHei Light, 18pt + Inter, 20.25pt NoControl - 244, 67 + 267, 70 - 173, 81 + 150, 82 0 @@ -1918,44 +2332,104 @@ 13 - - Fill + + speedStatusLabel - - 0, 0 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 427, 191 + + panel15 - - 12 + + 0 - - panel16 + + combinationsStatusLabel - + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel15 + + + 1 + + + gpuSearch_btn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel15 + + + 2 + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel15 + + + 3 + + + threadCountInput + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel15 + + + 4 + + + Bottom + + + 0, 191 + + + 427, 76 + + + 11 + + + panel15 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + panel5 - - 0 + + 1 True - Microsoft JhengHei Light, 9pt + Inter, 9pt NoControl - 9, 34 + 8, 33 - 221, 16 + 229, 15 5 @@ -1979,16 +2453,16 @@ True - Microsoft JhengHei Light, 9pt + Inter, 9pt NoControl - 9, 50 + 8, 50 - 179, 16 + 179, 15 5 @@ -2018,7 +2492,7 @@ Flat - Microsoft JhengHei Light, 14pt + Inter, 16pt NoControl @@ -2027,7 +2501,7 @@ 244, 0 - 177, 71 + 173, 71 3 @@ -2057,10 +2531,10 @@ NoControl - 9, 2 + 7, 0 - 72, 18 + 79, 19 2 @@ -2080,11 +2554,14 @@ 3 + + Inter, 11.25pt + - 87, 2 + 92, 0 - 120, 21 + 120, 22 1 @@ -2101,57 +2578,6 @@ 4 - - Bottom - - - 0, 191 - - - 427, 76 - - - 11 - - - panel15 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel5 - - - 1 - - - Fill - - - Microsoft JhengHei Light, 10pt - - - 0, 191 - - - 427, 267 - - - 0 - - - panel5 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - Left @@ -2203,6 +2629,36 @@ 198, 16 + + None + + + Inter, 9.75pt + + + 11, 161 + + + 0, 0, 0, 0 + + + 406, 24 + + + 12 + + + downloadProgressBar + + + FloatToolGUI.CustomProgressBar, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + panel16 + + + 0 + True @@ -2216,7 +2672,7 @@ 900, 460 - Microsoft JhengHei Light, 8.25pt + Inter, 11.249999pt diff --git a/FloatToolGUI/Properties/Resources.Designer.cs b/FloatToolGUI/Properties/Resources.Designer.cs index 65c0a30..52543d9 100644 --- a/FloatToolGUI/Properties/Resources.Designer.cs +++ b/FloatToolGUI/Properties/Resources.Designer.cs @@ -110,6 +110,16 @@ internal static System.Drawing.Bitmap github { } } + /// + /// Поиск локализованного ресурса типа System.Byte[]. + /// + internal static byte[] Inter_Regular { + get { + object obj = ResourceManager.GetObject("Inter_Regular", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// diff --git a/FloatToolGUI/Properties/Resources.resx b/FloatToolGUI/Properties/Resources.resx index 257ea90..aa34fd0 100644 --- a/FloatToolGUI/Properties/Resources.resx +++ b/FloatToolGUI/Properties/Resources.resx @@ -133,6 +133,9 @@ ..\Resources\github.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Inter-Regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\mutedBlack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/FloatToolGUI/Resources/Inter-Regular.ttf b/FloatToolGUI/Resources/Inter-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..96fd6a12d0e20d7010b196e425ca48b0b5286df2 GIT binary patch literal 287928 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 K>9chcrT;%KY-A|_ literal 0 HcmV?d00001 diff --git a/FloatToolGUI/SettingsForm.Designer.cs b/FloatToolGUI/SettingsForm.Designer.cs index 36879b8..dcf1dfb 100644 --- a/FloatToolGUI/SettingsForm.Designer.cs +++ b/FloatToolGUI/SettingsForm.Designer.cs @@ -75,7 +75,7 @@ private void InitializeComponent() this.closeBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.closeBtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Black; this.closeBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.closeBtn.Font = new System.Drawing.Font("Microsoft JhengHei Light", 16F); + this.closeBtn.Font = new System.Drawing.Font("Inter", 16F); this.closeBtn.ForeColor = System.Drawing.Color.White; this.closeBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.closeBtn.Location = new System.Drawing.Point(350, 0); @@ -90,12 +90,12 @@ private void InitializeComponent() // this.label8.AutoSize = true; this.label8.BackColor = System.Drawing.Color.Transparent; - this.label8.Font = new System.Drawing.Font("Microsoft JhengHei Light", 22F); + this.label8.Font = new System.Drawing.Font("Inter", 22F); this.label8.ForeColor = System.Drawing.Color.White; this.label8.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.label8.Location = new System.Drawing.Point(1, 0); this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(167, 38); + this.label8.Size = new System.Drawing.Size(175, 36); this.label8.TabIndex = 0; this.label8.Text = "Настройки"; this.label8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragWindowMouseDown); @@ -103,33 +103,33 @@ private void InitializeComponent() // label1 // this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.label1.Font = new System.Drawing.Font("Inter", 14F); this.label1.ForeColor = System.Drawing.Color.White; this.label1.Location = new System.Drawing.Point(75, 52); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(122, 24); + this.label1.Size = new System.Drawing.Size(131, 23); this.label1.TabIndex = 3; this.label1.Text = "Тёмная тема"; // // label2 // this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.label2.Font = new System.Drawing.Font("Inter", 14F); this.label2.ForeColor = System.Drawing.Color.White; this.label2.Location = new System.Drawing.Point(75, 95); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(205, 24); + this.label2.Size = new System.Drawing.Size(213, 23); this.label2.TabIndex = 3; this.label2.Text = "Звук при нахождении"; // // label3 // this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.label3.Font = new System.Drawing.Font("Inter", 14F); this.label3.ForeColor = System.Drawing.Color.White; this.label3.Location = new System.Drawing.Point(75, 137); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(214, 24); + this.label3.Size = new System.Drawing.Size(217, 23); this.label3.TabIndex = 3; this.label3.Text = "Проверка обновлений"; // @@ -140,7 +140,7 @@ private void InitializeComponent() this.saveChangesBtn.Enabled = false; this.saveChangesBtn.FlatAppearance.BorderSize = 0; this.saveChangesBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.saveChangesBtn.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.saveChangesBtn.Font = new System.Drawing.Font("Inter", 14F); this.saveChangesBtn.ForeColor = System.Drawing.Color.White; this.saveChangesBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.saveChangesBtn.Location = new System.Drawing.Point(8, 320); @@ -157,7 +157,7 @@ private void InitializeComponent() this.resetChangesBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.resetChangesBtn.FlatAppearance.BorderSize = 0; this.resetChangesBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.resetChangesBtn.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.resetChangesBtn.Font = new System.Drawing.Font("Inter", 14F); this.resetChangesBtn.ForeColor = System.Drawing.Color.White; this.resetChangesBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.resetChangesBtn.Location = new System.Drawing.Point(199, 320); @@ -172,7 +172,7 @@ private void InitializeComponent() // this.bufferSpeedNUP.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); this.bufferSpeedNUP.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.bufferSpeedNUP.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.bufferSpeedNUP.Font = new System.Drawing.Font("Inter", 14F); this.bufferSpeedNUP.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); this.bufferSpeedNUP.Location = new System.Drawing.Point(8, 280); this.bufferSpeedNUP.Maximum = new decimal(new int[] { @@ -186,7 +186,7 @@ private void InitializeComponent() 0, 0}); this.bufferSpeedNUP.Name = "bufferSpeedNUP"; - this.bufferSpeedNUP.Size = new System.Drawing.Size(376, 32); + this.bufferSpeedNUP.Size = new System.Drawing.Size(376, 30); this.bufferSpeedNUP.TabIndex = 5; this.bufferSpeedNUP.Value = new decimal(new int[] { 250, @@ -198,11 +198,11 @@ private void InitializeComponent() // label4 // this.label4.AutoSize = true; - this.label4.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.label4.Font = new System.Drawing.Font("Inter", 14F); this.label4.ForeColor = System.Drawing.Color.White; this.label4.Location = new System.Drawing.Point(4, 253); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(320, 24); + this.label4.Size = new System.Drawing.Size(333, 23); this.label4.TabIndex = 3; this.label4.Text = "Скорость обновления буфера (мс)"; // @@ -216,7 +216,7 @@ private void InitializeComponent() this.checkUpdatesToggle.TabIndex = 2; this.checkUpdatesToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.checkUpdatesToggle.TurnedOnColor = System.Drawing.Color.Green; - this.checkUpdatesToggle.OnToggled += new System.EventHandler(this.checkUpdatesToggle_OnToggled); + this.checkUpdatesToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); // // soundToggle // @@ -228,7 +228,7 @@ private void InitializeComponent() this.soundToggle.TabIndex = 2; this.soundToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.soundToggle.TurnedOnColor = System.Drawing.Color.Green; - this.soundToggle.OnToggled += new System.EventHandler(this.soundToggle_OnToggled); + this.soundToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); // // darkModeToggle // @@ -240,7 +240,7 @@ private void InitializeComponent() this.darkModeToggle.TabIndex = 2; this.darkModeToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.darkModeToggle.TurnedOnColor = System.Drawing.Color.Green; - this.darkModeToggle.OnToggled += new System.EventHandler(this.darkModeToggle_OnToggled); + this.darkModeToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); // // discordRpcToggle // @@ -252,16 +252,16 @@ private void InitializeComponent() this.discordRpcToggle.TabIndex = 2; this.discordRpcToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.discordRpcToggle.TurnedOnColor = System.Drawing.Color.Green; - this.discordRpcToggle.OnToggled += new System.EventHandler(this.checkUpdatesToggle_OnToggled); + this.discordRpcToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); // // label5 // this.label5.AutoSize = true; - this.label5.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.label5.Font = new System.Drawing.Font("Inter", 14F); this.label5.ForeColor = System.Drawing.Color.White; this.label5.Location = new System.Drawing.Point(75, 179); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(188, 24); + this.label5.Size = new System.Drawing.Size(197, 23); this.label5.TabIndex = 3; this.label5.Text = "Интеграция Discord"; // @@ -270,23 +270,23 @@ private void InitializeComponent() this.currencyComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); this.currencyComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.currencyComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.currencyComboBox.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.currencyComboBox.Font = new System.Drawing.Font("Inter", 14F); this.currencyComboBox.ForeColor = System.Drawing.Color.White; this.currencyComboBox.FormattingEnabled = true; this.currencyComboBox.Location = new System.Drawing.Point(90, 218); this.currencyComboBox.Name = "currencyComboBox"; - this.currencyComboBox.Size = new System.Drawing.Size(173, 32); + this.currencyComboBox.Size = new System.Drawing.Size(173, 31); this.currencyComboBox.TabIndex = 6; this.currencyComboBox.SelectedIndexChanged += new System.EventHandler(this.bufferSpeedNUP_ValueChanged); // // label6 // this.label6.AutoSize = true; - this.label6.Font = new System.Drawing.Font("Microsoft JhengHei Light", 14F); + this.label6.Font = new System.Drawing.Font("Inter", 14F); this.label6.ForeColor = System.Drawing.Color.White; this.label6.Location = new System.Drawing.Point(4, 221); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(80, 24); + this.label6.Size = new System.Drawing.Size(85, 23); this.label6.TabIndex = 3; this.label6.Text = "Валюта:"; // diff --git a/FloatToolGUI/SettingsForm.cs b/FloatToolGUI/SettingsForm.cs index 7cd9d1b..091c48d 100644 --- a/FloatToolGUI/SettingsForm.cs +++ b/FloatToolGUI/SettingsForm.cs @@ -29,10 +29,12 @@ public SettingsForm() discordRpcToggle.Checked = Convert.ToBoolean(registryData.GetValue("discordRPC")); currencyComboBox.SelectedItem = (Currency)registryData.GetValue("currency"); saveChangesBtn.Enabled = false; + Logger.Log($"[{DateTime.Now}]: Settings window opened"); } private void CloseForm(object sender, EventArgs e) { + Logger.Log($"[{DateTime.Now}]: Settings window closed"); Close(); } @@ -54,19 +56,10 @@ private void DragWindowMouseDown(object sender, MouseEventArgs e) } } - private void darkModeToggle_OnToggled(object sender, EventArgs e) - { - saveChangesBtn.Enabled = true; - } - - private void soundToggle_OnToggled(object sender, EventArgs e) - { - saveChangesBtn.Enabled = true; - } - - private void checkUpdatesToggle_OnToggled(object sender, EventArgs e) + private void Toggle_OnToggled(object sender, EventArgs e) { saveChangesBtn.Enabled = true; + Logger.Log($"[{DateTime.Now}]: Option been toggled."); } private void bufferSpeedNUP_ValueChanged(object sender, EventArgs e) @@ -86,6 +79,7 @@ private void saveChangesBtn_Click(object sender, EventArgs e) registryData.SetValue("currency", (int)currencyComboBox.SelectedValue); registryData.Close(); saveChangesBtn.Enabled = false; + Logger.Log($"[{DateTime.Now}]: Settings saved"); } private void resetChangesBtn_Click(object sender, EventArgs e) @@ -99,6 +93,7 @@ private void resetChangesBtn_Click(object sender, EventArgs e) discordRpcToggle.Checked = Convert.ToBoolean(registryData.GetValue("discordRPC")); currencyComboBox.SelectedItem = (Currency)registryData.GetValue("currency"); saveChangesBtn.Enabled = false; + Logger.Log($"[{DateTime.Now}]: Settings reseted"); } } } diff --git a/FloatToolGUI/Utils.cs b/FloatToolGUI/Utils.cs index ddd9dd8..e6e4e1a 100644 --- a/FloatToolGUI/Utils.cs +++ b/FloatToolGUI/Utils.cs @@ -1,7 +1,11 @@ using System; using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Text; +using System.IO; using System.Linq; using System.Net.Http; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using Microsoft.Win32; @@ -36,13 +40,23 @@ public enum Currency RMB = 9000, NXP = 9001 } + static public string getNextRarity(string rarity) + { + if (rarity == "Consumer") return "Industrial"; + else if (rarity == "Industrial") return "Mil-Spec"; + else if (rarity == "Mil-Spec") return "Restricted"; + else if (rarity == "Restricted") return "Classified"; + else if (rarity == "Classified") return "Covert"; + return "Nothing"; + } + public static string CheckUpdates() { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"); - using (var response = client.GetAsync("https://api.github.com/repos/nemeshio/FloatTool-GUI/releases/latest").Result) + using (var response = client.GetAsync("https://api.github.com/repos/prevter/FloatTool-GUI/releases/latest").Result) { var json = response.Content.ReadAsStringAsync().Result; @@ -52,6 +66,14 @@ public static string CheckUpdates() } } + public static bool testOverlap(float x1, float x2, float y1, float y2) + { + return (x1 >= y1 && x1 <= y2) || + (x2 >= y1 && x2 <= y2) || + (y1 >= x1 && y1 <= x2) || + (y2 >= x1 && y2 <= x2); + } + public static void CheckRegistry() { var registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool", true); @@ -76,5 +98,31 @@ public static void CheckRegistry() if (registryData.GetValue("currency") == null) registryData.SetValue("currency", (int)Currency.USD); } } + + static private PrivateFontCollection _privateFontCollection = new PrivateFontCollection(); + + static public FontFamily GetFontFamilyByName(string name) + { + return _privateFontCollection.Families.FirstOrDefault(x => x.Name == name); + } + + static public void AddFont(string fullFileName) + { + AddFont(File.ReadAllBytes(fullFileName)); + } + + static public void AddFont(byte[] fontBytes) + { + var handle = GCHandle.Alloc(fontBytes, GCHandleType.Pinned); + IntPtr pointer = handle.AddrOfPinnedObject(); + try + { + _privateFontCollection.AddMemoryFont(pointer, fontBytes.Length); + } + finally + { + handle.Free(); + } + } } } diff --git a/FloatToolGUI/Resources/itemData.json b/FloatToolGUI/itemData.json similarity index 90% rename from FloatToolGUI/Resources/itemData.json rename to FloatToolGUI/itemData.json index d557cc0..519c683 100644 --- a/FloatToolGUI/Resources/itemData.json +++ b/FloatToolGUI/itemData.json @@ -1,13 +1,787 @@ [ { - "name": "M4A1-S | Printstream", + "name":"M4A1-S | Printstream", + "rarity":"Covert Rifle", + "minWear":"0.00", + "maxWear":"0.80", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":true + }, + { + "name":"Glock-18 | Neo-Noir", + "rarity":"Covert Pistol", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":true + }, + { + "name":"M4A4 | Cyber Security", + "rarity":"Classified Rifle", + "minWear":"0.00", + "maxWear":"0.98", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"USP-S | Monster Mashup", + "rarity":"Classified Pistol", + "minWear":"0.00", + "maxWear":"0.70", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"Five-Seven | Fairy Tale", + "rarity":"Classified Pistol", + "minWear":"0.02", + "maxWear":"0.90", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"AWP | Exoskeleton", + "rarity":"Restricted Sniper Rifle", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"SSG 08 | Parallax", + "rarity":"Restricted Sniper Rifle", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"Dual Berettas | Dezastre", + "rarity":"Restricted Pistol", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"UMP-45 | Gold Bismuth", + "rarity":"Restricted SMG", + "minWear":"0.00", + "maxWear":"0.70", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"Nova | Clear Polymer", + "rarity":"Restricted Shotgun", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":false, + "highestRarity":false + }, + { + "name":"MP5-SD | Condition Zero", + "rarity":"Mil-Spec SMG", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name":"Galil AR | Vandal", + "rarity":"Mil-Spec Rifle", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name":"CZ75-Auto | Vendetta", + "rarity":"Mil-Spec Pistol", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name":"P90 | Cocoa Rampage", + "rarity":"Mil-Spec SMG", + "minWear":"0.00", + "maxWear":"0.60", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name":"P250 | Contaminant", + "rarity":"Mil-Spec Pistol", + "minWear":"0.00", + "maxWear":"0.70", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name":"M249 | Deep Relief", + "rarity":"Mil-Spec Machine Gun", + "minWear":"0.00", + "maxWear":"1.00", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name":"G3SG1 | Digital Mesh", + "rarity":"Mil-Spec Pistol", + "minWear":"0.00", + "maxWear":"0.80", + "case":"Operation Broken Fang", + "lowestRarity":true, + "highestRarity":false + }, + { + "name": "Desert Eagle | Printstream", + "rarity": "Covert Pistol", + "minWear": "0.00", + "maxWear": "0.80", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": true + }, + { + "name": "AK-47 | Legion of Anubis", + "rarity": "Covert Rifle", + "minWear": "0.00", + "maxWear": "0.70", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": true + }, + { + "name": "Glock-18 | Vogue", + "rarity": "Classified Pistol", + "minWear": "0.00", + "maxWear": "0.75", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "M4A4 | Tooth Fairy", + "rarity": "Classified Rifle", + "minWear": "0.00", + "maxWear": "0.73", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "XM1014 | Entombed", + "rarity": "Classified Shotgun", + "minWear": "0.00", + "maxWear": "0.50", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MAG-7 | Monster Call", + "rarity": "Restricted Shotgun", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MAC-10 | Allure", + "rarity": "Restricted SMG", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Galil AR | Connexion", + "rarity": "Restricted Rifle", + "minWear": "0.00", + "maxWear": "0.80", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MP5-SD | Kitbash", + "rarity": "Restricted SMG", + "minWear": "0.00", + "maxWear": "0.80", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Tec-9 | Brother", + "rarity": "Restricted Pistol", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "SSG 08 | Mainframe 001", + "rarity": "Mil-Spec Sniper Rifle", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "PP-Bizon | Runic", + "rarity": "Mil-Spec SMG", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "P250 | Cassette", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "0.60", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "P90 | Freight", + "rarity": "Mil-Spec SMG", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "P2000 | Gnarled", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "Negev | Ultralight", + "rarity": "Mil-Spec Machine Gun", + "minWear": "0.00", + "maxWear": "0.79", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "SG 553 | Ol' Rusty", + "rarity": "Mil-Spec Rifle", + "minWear": "0.00", + "maxWear": "0.70", + "case": "Fracture Case", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "Glock-18 | Bullet Queen", + "rarity": "Covert Pistol", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": true + }, + { + "name": "M4A1-S | Player Two", "rarity": "Covert Rifle", "minWear": "0.00", + "maxWear": "0.84", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": true + }, + { + "name": "AK-47 | Phantom Disruptor", + "rarity": "Classified Rifle", + "minWear": "0.00", + "maxWear": "0.65", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MAC-10 | Disco Tech", + "rarity": "Classified SMG", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MAG-7 | Justice", + "rarity": "Classified Shotgun", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "SG 553 | Darkwing", + "rarity": "Restricted Rifle", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "SSG 08 | Fever Dream", + "rarity": "Restricted Sniper Rifle", + "minWear": "0.00", + "maxWear": "0.72", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Sawed-Off | Apocalypto", + "rarity": "Restricted Shotgun", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "SCAR-20 | Enforcer", + "rarity": "Restricted Sniper Rifle", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "P2000 | Acid Etched", + "rarity": "Restricted Sniper Rifle", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "AWP | Capillary", + "rarity": "Mil-Spec Sniper Rifle", + "minWear": "0.05", + "maxWear": "0.70", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "Desert Eagle | Blue Ply", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "AUG | Tom Cat", + "rarity": "Mil-Spec Rifle", + "minWear": "0.05", "maxWear": "0.80", - "case": "Operation Broken Fang Case", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "MP5-SD | Desert Strike", + "rarity": "Mil-Spec SMG", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "CZ75-Auto | Distressed", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "1.00", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "Negev | Prototype", + "rarity": "Mil-Spec Machine Gun", + "minWear": "0.00", + "maxWear": "0.70", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "R8 Revolver | Bone Forged", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "0.60", + "case": "Prisma 2 Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "AK-47 | Wild Lotus", + "rarity": "Covert Rifle", + "minWear": "0.00", + "maxWear": "1.00", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": true + }, + { + "name": "MP9 | Wild Lily", + "rarity": "Classified SMG", + "minWear": "0.00", + "maxWear": "0.70", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "AUG | Midnight Lily", + "rarity": "Restricted Rifle", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "SSG 08 | Sea Calico", + "rarity": "Restricted Sniper Rifle", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Glock-18 | Synth Leaf", + "rarity": "Restricted Pistol", + "minWear": "0.00", + "maxWear": "0.70", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MP7 | Teal Blossom", + "rarity": "Mil-Spec SMG", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "UMP-45 | Day Lily", + "rarity": "Mil-Spec SMG", + "minWear": "0.00", + "maxWear": "0.55", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "FAMAS | Sundown", + "rarity": "Mil-Spec Rifle", + "minWear": "0.00", + "maxWear": "0.60", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Five-SeveN | Crimson Blossom", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Tec-9 | Rust Leaf", + "rarity": "Industrial Grade Pistol", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "M4A4 | Dark Blossom", + "rarity": "Industrial Grade Rifle", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "XM1014 | Banana Leaf", + "rarity": "Industrial Grade Shotgun", + "minWear": "0.00", + "maxWear": "0.60", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "P90 | Sunset Lily", + "rarity": "Industrial Grade SMG", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "M249 | Jungle", + "rarity": "Consumer Grade Machine Gun", + "minWear": "0.06", + "maxWear": "0.80", + "case": "The St. Marc Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "MP5-SD | Bamboo Garden", + "rarity": "Consumer Grade SMG", + "minWear": "0.00", + "maxWear": "0.55", + "case": "The St. Marc Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "PP-Bizon | Seabird", + "rarity": "Consumer Grade SMG", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "MAC-10 | Surfwood", + "rarity": "Consumer Grade SMG", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "Sawed-Off | Jungle Thicket", + "rarity": "Consumer Grade Shotgun", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The St. Marc Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "AWP | Gungnir", + "rarity": "Covert Sniper Rifle", + "minWear": "0.00", + "maxWear": "0.60", + "case": "The Norse Collection", "lowestRarity": false, "highestRarity": true }, + { + "name": "Negev | Mjölnir", + "rarity": "Classified Machine Gun", + "minWear": "0.00", + "maxWear": "0.60", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "AUG | Flame Jörmungandr", + "rarity": "Restricted Rifle", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "P90 | Astral Jörmungandr", + "rarity": "Restricted SMG", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Desert Eagle | Emerald Jörmungandr", + "rarity": "Restricted Pistol", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "XM1014 | Frost Borre", + "rarity": "Mil-Spec Shotgun", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MAC-10 | Copper Borre", + "rarity": "Mil-Spec SMG", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "SCAR-20 | Brass", + "rarity": "Mil-Spec Sniper Rifle", + "minWear": "0.00", + "maxWear": "1.00", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "CZ75-Auto | Emerald Quartz", + "rarity": "Mil-Spec Pistol", + "minWear": "0.00", + "maxWear": "0.70", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "Dual Berettas | Pyre", + "rarity": "Industrial Grade Pistol", + "minWear": "0.06", + "maxWear": "0.55", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "USP-S | Pathfinder", + "rarity": "Industrial Grade Pistol", + "minWear": "0.00", + "maxWear": "0.35", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MAG-7 | Chainmail", + "rarity": "Industrial Grade Shotgun", + "minWear": "0.00", + "maxWear": "0.22", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "M4A1-S | Moss Quartz", + "rarity": "Industrial Grade Rifle", + "minWear": "0.00", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": false, + "highestRarity": false + }, + { + "name": "MP7 | Scorched", + "rarity": "Consumer Grade SMG", + "minWear": "0.06", + "maxWear": "0.80", + "case": "The Norse Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "Galil AR | Tornado", + "rarity": "Consumer Grade Rifle", + "minWear": "0.06", + "maxWear": "0.80", + "case": "The Norse Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "SSG 08 | Red Stone", + "rarity": "Consumer Grade Sniper Rifle", + "minWear": "0.06", + "maxWear": "0.50", + "case": "The Norse Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "SG 553 | Barricade", + "rarity": "Consumer Grade Rifle", + "minWear": "0.00", + "maxWear": "0.65", + "case": "The Norse Collection", + "lowestRarity": true, + "highestRarity": false + }, + { + "name": "FAMAS | Night Borre", + "rarity": "Consumer Grade Rifle", + "minWear": "0.00", + "maxWear": "0.55", + "case": "The Norse Collection", + "lowestRarity": true, + "highestRarity": false + }, { "name": "AWP | The Prince", "rarity": "Covert Sniper Rifle", @@ -475,8 +1249,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": true - }, - { + }, + { "name": "M4A4 | The Emperor", "rarity": "Covert Rifle", "minWear": "0.00", @@ -493,8 +1267,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, - { + }, + { "name": "R8 Revolver | Skull Crusher", "rarity": "Classified Pistol", "minWear": "0.25", @@ -502,8 +1276,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, - { + }, + { "name": "AUG | Momentum", "rarity": "Classified Rifle", "minWear": "0.05", @@ -511,7 +1285,7 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, + }, { "name": "AWP | Atheris", "rarity": "Restricted Rifle", @@ -520,8 +1294,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, - { + }, + { "name": "Tec-9 | Bamboozle", "rarity": "Restricted Pistol", "minWear": "0.00", @@ -529,8 +1303,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, - { + }, + { "name": "Desert Eagle | Light Rail", "rarity": "Restricted Pistol", "minWear": "0.00", @@ -538,8 +1312,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, - { + }, + { "name": "MP5-SD | Gauss", "rarity": "Restricted SMG", "minWear": "0.00", @@ -547,8 +1321,8 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, - { + }, + { "name": "UMP-45 | Moonrise", "rarity": "Restricted SMG", "minWear": "0.00", @@ -556,7 +1330,7 @@ "case": "The Prisma Collection", "lowestRarity": false, "highestRarity": false - }, + }, { "name": "FAMAS | Crypsis", "rarity": "Mil-Spec Rifle", @@ -565,8 +1339,8 @@ "case": "The Prisma Collection", "lowestRarity": true, "highestRarity": false - }, - { + }, + { "name": "AK-47 | Uncharted", "rarity": "Mil-Spec Rifle", "minWear": "0.00", @@ -574,8 +1348,8 @@ "case": "The Prisma Collection", "lowestRarity": true, "highestRarity": false - }, - { + }, + { "name": "MAC-10 | Whitefish", "rarity": "Mil-Spec SMG", "minWear": "0.00", @@ -583,8 +1357,8 @@ "case": "The Prisma Collection", "lowestRarity": true, "highestRarity": false - }, - { + }, + { "name": "MP7 | Mischief", "rarity": "Mil-Spec SMG", "minWear": "0.10", @@ -592,8 +1366,8 @@ "case": "The Prisma Collection", "lowestRarity": true, "highestRarity": false - }, - { + }, + { "name": "P250 | Verdigris", "rarity": "Mil-Spec Pistol", "minWear": "0.00", @@ -601,7 +1375,7 @@ "case": "The Prisma Collection", "lowestRarity": true, "highestRarity": false - }, + }, { "name": "MP5-SD | Lab Rats", "rarity": "Restricted SMG",