diff --git a/.vs/FloatToolGUI/v16/.suo b/.vs/FloatToolGUI/v16/.suo index 36cfa86..65ea8e6 100644 Binary files a/.vs/FloatToolGUI/v16/.suo and b/.vs/FloatToolGUI/v16/.suo differ diff --git a/FloatToolGUI/App.config b/FloatToolGUI/App.config index 92691b0..03a0a75 100644 --- a/FloatToolGUI/App.config +++ b/FloatToolGUI/App.config @@ -1,5 +1,10 @@  + + +
+ + @@ -11,4 +16,11 @@ + + + + + + + \ No newline at end of file diff --git a/FloatToolGUI/FloatToolGUI.csproj b/FloatToolGUI/FloatToolGUI.csproj index 24470ee..5f41963 100644 --- a/FloatToolGUI/FloatToolGUI.csproj +++ b/FloatToolGUI/FloatToolGUI.csproj @@ -121,6 +121,7 @@ + About.cs diff --git a/FloatToolGUI/Main.Designer.cs b/FloatToolGUI/Main.Designer.cs index 9af38d5..a2ddbf9 100644 --- a/FloatToolGUI/Main.Designer.cs +++ b/FloatToolGUI/Main.Designer.cs @@ -80,7 +80,6 @@ private void InitializeComponent() this.weaponQualityBox = new System.Windows.Forms.ComboBox(); this.label1 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); - this.weaponTypeBox = new System.Windows.Forms.ComboBox(); this.label2 = new System.Windows.Forms.Label(); this.fullSkinName = new System.Windows.Forms.TextBox(); this.weaponSkinBox = new System.Windows.Forms.ComboBox(); @@ -111,6 +110,9 @@ private void InitializeComponent() this.WorkStatusUpdater = new System.Windows.Forms.Timer(this.components); this.openGithubButton = new System.Windows.Forms.ToolStripMenuItem(); this.soundBtnSwitch = new System.Windows.Forms.Button(); + this.outcomeSelectorComboBox = new System.Windows.Forms.ComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.weaponTypeBox = new System.Windows.Forms.ComboBox(); this.downloadProgressBar = new FloatToolGUI.CustomProgressBar(); this.panel1.SuspendLayout(); this.panel8.SuspendLayout(); @@ -348,10 +350,12 @@ private void InitializeComponent() this.panel6.Controls.Add(this.stattrackCheckBox); this.panel6.Controls.Add(this.checkPossibilityBtn); this.panel6.Controls.Add(this.label3); + this.panel6.Controls.Add(this.outcomeSelectorComboBox); this.panel6.Controls.Add(this.weaponQualityBox); this.panel6.Controls.Add(this.label1); this.panel6.Controls.Add(this.label4); this.panel6.Controls.Add(this.weaponTypeBox); + this.panel6.Controls.Add(this.label11); this.panel6.Controls.Add(this.label2); this.panel6.Controls.Add(this.fullSkinName); this.panel6.Controls.Add(this.weaponSkinBox); @@ -412,51 +416,6 @@ private void InitializeComponent() this.label4.ForeColor = System.Drawing.Color.White; this.label4.Name = "label4"; // - // weaponTypeBox - // - resources.ApplyResources(this.weaponTypeBox, "weaponTypeBox"); - this.weaponTypeBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); - this.weaponTypeBox.Cursor = System.Windows.Forms.Cursors.Hand; - this.weaponTypeBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); - this.weaponTypeBox.FormattingEnabled = true; - this.weaponTypeBox.Items.AddRange(new object[] { - resources.GetString("weaponTypeBox.Items"), - resources.GetString("weaponTypeBox.Items1"), - resources.GetString("weaponTypeBox.Items2"), - resources.GetString("weaponTypeBox.Items3"), - resources.GetString("weaponTypeBox.Items4"), - resources.GetString("weaponTypeBox.Items5"), - resources.GetString("weaponTypeBox.Items6"), - resources.GetString("weaponTypeBox.Items7"), - resources.GetString("weaponTypeBox.Items8"), - resources.GetString("weaponTypeBox.Items9"), - resources.GetString("weaponTypeBox.Items10"), - resources.GetString("weaponTypeBox.Items11"), - resources.GetString("weaponTypeBox.Items12"), - resources.GetString("weaponTypeBox.Items13"), - resources.GetString("weaponTypeBox.Items14"), - resources.GetString("weaponTypeBox.Items15"), - resources.GetString("weaponTypeBox.Items16"), - resources.GetString("weaponTypeBox.Items17"), - resources.GetString("weaponTypeBox.Items18"), - resources.GetString("weaponTypeBox.Items19"), - resources.GetString("weaponTypeBox.Items20"), - resources.GetString("weaponTypeBox.Items21"), - resources.GetString("weaponTypeBox.Items22"), - resources.GetString("weaponTypeBox.Items23"), - resources.GetString("weaponTypeBox.Items24"), - resources.GetString("weaponTypeBox.Items25"), - resources.GetString("weaponTypeBox.Items26"), - resources.GetString("weaponTypeBox.Items27"), - resources.GetString("weaponTypeBox.Items28"), - resources.GetString("weaponTypeBox.Items29"), - resources.GetString("weaponTypeBox.Items30"), - resources.GetString("weaponTypeBox.Items31"), - resources.GetString("weaponTypeBox.Items32"), - resources.GetString("weaponTypeBox.Items33")}); - this.weaponTypeBox.Name = "weaponTypeBox"; - this.weaponTypeBox.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); - // // label2 // resources.ApplyResources(this.label2, "label2"); @@ -515,6 +474,7 @@ private void InitializeComponent() this.searchmodeGreater_btn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.searchmodeGreater_btn.Cursor = System.Windows.Forms.Cursors.Default; this.searchmodeGreater_btn.FlatAppearance.BorderSize = 0; + this.searchmodeGreater_btn.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame; this.searchmodeGreater_btn.ForeColor = System.Drawing.Color.White; this.searchmodeGreater_btn.Name = "searchmodeGreater_btn"; this.searchmodeGreater_btn.UseVisualStyleBackColor = false; @@ -524,6 +484,7 @@ private void InitializeComponent() // resources.ApplyResources(this.searchmodeEqual_btn, "searchmodeEqual_btn"); this.searchmodeEqual_btn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); + this.searchmodeEqual_btn.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame; this.searchmodeEqual_btn.ForeColor = System.Drawing.Color.White; this.searchmodeEqual_btn.Name = "searchmodeEqual_btn"; this.searchmodeEqual_btn.UseVisualStyleBackColor = false; @@ -534,6 +495,7 @@ private void InitializeComponent() resources.ApplyResources(this.searchmodeLess_btn, "searchmodeLess_btn"); this.searchmodeLess_btn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.searchmodeLess_btn.FlatAppearance.BorderSize = 0; + this.searchmodeLess_btn.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame; this.searchmodeLess_btn.ForeColor = System.Drawing.Color.White; this.searchmodeLess_btn.Name = "searchmodeLess_btn"; this.searchmodeLess_btn.UseVisualStyleBackColor = false; @@ -746,6 +708,70 @@ private void InitializeComponent() this.soundBtnSwitch.UseVisualStyleBackColor = false; this.soundBtnSwitch.Click += new System.EventHandler(this.SoundSwitchButton_Click); // + // outcomeSelectorComboBox + // + resources.ApplyResources(this.outcomeSelectorComboBox, "outcomeSelectorComboBox"); + this.outcomeSelectorComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); + this.outcomeSelectorComboBox.Cursor = System.Windows.Forms.Cursors.Hand; + this.outcomeSelectorComboBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); + this.outcomeSelectorComboBox.FormattingEnabled = true; + this.outcomeSelectorComboBox.Items.AddRange(new object[] { + resources.GetString("outcomeSelectorComboBox.Items"), + resources.GetString("outcomeSelectorComboBox.Items1"), + resources.GetString("outcomeSelectorComboBox.Items2")}); + this.outcomeSelectorComboBox.Name = "outcomeSelectorComboBox"; + // + // label11 + // + resources.ApplyResources(this.label11, "label11"); + this.label11.ForeColor = System.Drawing.Color.White; + this.label11.Name = "label11"; + // + // weaponTypeBox + // + resources.ApplyResources(this.weaponTypeBox, "weaponTypeBox"); + this.weaponTypeBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); + this.weaponTypeBox.Cursor = System.Windows.Forms.Cursors.Hand; + this.weaponTypeBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); + this.weaponTypeBox.FormattingEnabled = true; + this.weaponTypeBox.Items.AddRange(new object[] { + resources.GetString("weaponTypeBox.Items"), + resources.GetString("weaponTypeBox.Items1"), + resources.GetString("weaponTypeBox.Items2"), + resources.GetString("weaponTypeBox.Items3"), + resources.GetString("weaponTypeBox.Items4"), + resources.GetString("weaponTypeBox.Items5"), + resources.GetString("weaponTypeBox.Items6"), + resources.GetString("weaponTypeBox.Items7"), + resources.GetString("weaponTypeBox.Items8"), + resources.GetString("weaponTypeBox.Items9"), + resources.GetString("weaponTypeBox.Items10"), + resources.GetString("weaponTypeBox.Items11"), + resources.GetString("weaponTypeBox.Items12"), + resources.GetString("weaponTypeBox.Items13"), + resources.GetString("weaponTypeBox.Items14"), + resources.GetString("weaponTypeBox.Items15"), + resources.GetString("weaponTypeBox.Items16"), + resources.GetString("weaponTypeBox.Items17"), + resources.GetString("weaponTypeBox.Items18"), + resources.GetString("weaponTypeBox.Items19"), + resources.GetString("weaponTypeBox.Items20"), + resources.GetString("weaponTypeBox.Items21"), + resources.GetString("weaponTypeBox.Items22"), + resources.GetString("weaponTypeBox.Items23"), + resources.GetString("weaponTypeBox.Items24"), + resources.GetString("weaponTypeBox.Items25"), + resources.GetString("weaponTypeBox.Items26"), + resources.GetString("weaponTypeBox.Items27"), + resources.GetString("weaponTypeBox.Items28"), + resources.GetString("weaponTypeBox.Items29"), + resources.GetString("weaponTypeBox.Items30"), + resources.GetString("weaponTypeBox.Items31"), + resources.GetString("weaponTypeBox.Items32"), + resources.GetString("weaponTypeBox.Items33")}); + this.weaponTypeBox.Name = "weaponTypeBox"; + this.weaponTypeBox.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // // downloadProgressBar // resources.ApplyResources(this.downloadProgressBar, "downloadProgressBar"); @@ -861,6 +887,8 @@ private void InitializeComponent() private System.Windows.Forms.Label searchModeLabel; private System.Windows.Forms.Button MaximizeButton; private CustomProgressBar downloadProgressBar; + private System.Windows.Forms.ComboBox outcomeSelectorComboBox; + private System.Windows.Forms.Label label11; } } diff --git a/FloatToolGUI/Main.cs b/FloatToolGUI/Main.cs index da09381..5f6364c 100644 --- a/FloatToolGUI/Main.cs +++ b/FloatToolGUI/Main.cs @@ -22,6 +22,16 @@ namespace FloatToolGUI { + public enum Quality + { + Consumer, + Industrial, + MilSpec, + Restricted, + Classified, + Covert + } + public partial class FloatTool : Form { Thread thread1; @@ -88,17 +98,16 @@ static public decimal craft(double[] ingridients, float minFloat, float maxFloat avgFloat /= 10; return ((decimal)(maxFloat - minFloat) * avgFloat) + (decimal)minFloat; } - static public string craftF(string[] ingridients, float minFloat, float maxFloat) + static public string craftF(double[] 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].Replace(".", ",")); + arrInput[i] = Convert.ToSingle(ingridients[i]); } foreach (float f in arrInput) { - avgFloat += Convert.ToSingle(f); } avgFloat /= 10; @@ -152,7 +161,7 @@ static public string getSkinData(string name) } - public void parseCraft(double[] inputs, List outputs, string want, bool wasSort, bool asc) + public void parseCraft(double[] inputs, List outputs, string want, bool wasSort, bool asc) { //List results = new List(); decimal wantFloat; @@ -160,24 +169,9 @@ public void parseCraft(double[] inputs, List outputs, string want, bool foreach (var item in outputs) { - //want = want.Replace(".", ","); - float minWear = item["minWear"]; - float maxWear = item["maxWear"]; - decimal flotOrigin = Math.Round(craft(inputs.ToArray(), minWear, maxWear), 14); + decimal flotOrigin = Math.Round(craft(inputs.ToArray(), item.MinFloat, item.MaxFloat), 14); + string flot = craftF(inputs, item.MinFloat, item.MaxFloat); - string[] inputStr = new string[10]; - for(int i = 0; i < 10; i++) - { - inputStr[i] = "" + inputs[i]; - } - - string flot = craftF(inputStr, minWear, maxWear); - //Console.WriteLine(flotOrigin + " | " + flot); - //Debug.WriteLine("[DEBUG] flot = " + flot); - // if (wasSort && ((!asc && (double.Parse(flot) > double.Parse(want))) || (asc && (double.Parse(flot) < double.Parse(want))))) { - // okSort = true; - //} - /*flot.StartsWith(want.Replace(".", ",")) ||*/ if ( ((flotOrigin.ToString(CultureInfo.InvariantCulture).StartsWith(want)) && CurrentSearchMode == SearchMode.Equal) || ((flotOrigin < wantFloat) && CurrentSearchMode == SearchMode.Less) || @@ -240,9 +234,45 @@ public void SwitchEnabled() sortCheckBox.Enabled = !sortCheckBox.Enabled; ascendingCheckBox.Enabled = !ascendingCheckBox.Enabled; multithreadCheckBox.Enabled = !multithreadCheckBox.Enabled; + outcomeSelectorComboBox.Enabled = !outcomeSelectorComboBox.Enabled; if (threadCountInput.Enabled && !multithreadCheckBox.Enabled) threadCountInput.Enabled = false; } + + public void UpdateOutcomes() + { + string skin = $"{weaponTypeBox.Text} | {weaponSkinBox.Text}"; + outcomeSelectorComboBox.Items.Clear(); + List craftList = new List(); + using (StreamReader r = new StreamReader("itemData.json")) + { + string json = r.ReadToEnd(); + dynamic items = JsonConvert.DeserializeObject(json); + foreach (var skn in items) + { + if (skn["name"].ToString() == skin) + { + foreach (var skin2 in items) + if (skn["case"].ToString() == skin2["case"].ToString()) + { + if (skin2["rarity"].ToString().Split(' ')[0] == getNextRarity(skn["rarity"].ToString().Split(' ')[0])) + craftList.Add(skin2); + } + } + } + int totalSkins = 0; + foreach (var skinRange in GroupOutcomes(craftList)) + totalSkins += skinRange.Count; + foreach (var skinRange in GroupOutcomes(craftList)) + { + string tmp = (skinRange.Count > 1) ? $" + {(skinRange.Count - 1)}" : ""; + outcomeSelectorComboBox.Items.Add($"{((float)skinRange.Count) / totalSkins * 100}% ({skinRange[0].Name}{tmp})"); + } + outcomeSelectorComboBox.Items.Add("* Искать всё *"); + outcomeSelectorComboBox.SelectedIndex = 0; + } + } + public void updateSearchStr() { string search = ""; @@ -255,6 +285,7 @@ public void updateSearchStr() search += weaponSkinBox.Text; search += " (" + weaponQualityBox.Text + ")"; fullSkinName.Text = search; + UpdateOutcomes(); } public FloatTool() { @@ -283,6 +314,7 @@ private void Form1_Load(object sender, EventArgs e) } } updateSearchStr(); + darkModeSwitchBtn.Text = darkTheme ? "🌙" : "☀"; client = new DiscordRpcClient("824349399688937543"); @@ -404,7 +436,7 @@ private static IEnumerable Combinations(IEnumerable elements, int k, int s } while (NextCombination(numbers, size, k)); } - public void secndThread(List craftList, string wanted, double[] pool, int start, int skip) + public void secndThread(List craftList, string wanted, double[] pool, int start, int skip) { foreach (IEnumerable pair in Combinations(pool, 10, start, skip)) { @@ -458,6 +490,7 @@ private void StartCalculation() string q = fullSkinName.Text; string url = "https://steamcommunity.com/market/listings/730/" + q + "/render/?query=&language=russian&count=" + count + "&start=" + start + "¤cy=5"; Console.WriteLine(url); + this.Invoke((MethodInvoker)(() => { outputConsoleBox.AppendText( "Загрузка скинов с торговой площадки..." + Environment.NewLine); @@ -560,11 +593,28 @@ private void StartCalculation() } } } + + int outcomeIndex = 0; + Invoke((MethodInvoker)(() => { outcomeIndex = outcomeSelectorComboBox.SelectedIndex; } )); + + var allOutcomes = GroupOutcomes(craftList); + List outcomes = new List(); + + if(allOutcomes.Length > outcomeIndex) { + outcomes.Add(allOutcomes[outcomeIndex][0]); + } + else + { + foreach (var i in allOutcomes) + outcomes.Add(i[0]); + } + this.Invoke((MethodInvoker)(() => { - outputConsoleBox.AppendText( "Ауткамы найдены! Начинаю подбор..." + Environment.NewLine + Environment.NewLine); + outputConsoleBox.AppendText( "Ауткамы найдены! Начинаю подбор..." + Environment.NewLine + "Выбрано для поиска:" + Environment.NewLine + String.Join(Environment.NewLine, outcomes) + Environment.NewLine + Environment.NewLine); fullSkinName.SelectionStart = fullSkinName.Text.Length; outputConsoleBox.ScrollToCaret(); + downloadProgressBar.Value = 0; downloadProgressBar.Maximum = 1000; } )); @@ -581,7 +631,7 @@ private void StartCalculation() { for (int i = 1; i < threads; i++) { - Thread newThread = new Thread(() => secndThread(craftList, wanted, pool, i, threads)); + Thread newThread = new Thread(() => secndThread(outcomes, wanted, pool, i, threads)); newThread.Start(); t2.Add(newThread); } @@ -594,7 +644,7 @@ private void StartCalculation() foreach (IEnumerable pair in Combinations(pool, 10, 0, threads)) { - parseCraft(pair.ToArray(), craftList, wanted, sortCheckBox.Checked, ascendingCheckBox.Checked); + parseCraft(pair.ToArray(), outcomes, wanted, sortCheckBox.Checked, ascendingCheckBox.Checked); currComb++; } Console.WriteLine("Next group"); @@ -686,6 +736,27 @@ private void button1_Click(object sender, EventArgs e) { if (skn["name"].ToString() == skin) { + #region Float ranges + /* + List craftList = new List(); + + foreach (var skin2 in items) + if (skn["case"].ToString() == skin2["case"].ToString()) + { + if (skin2["rarity"].ToString().Split(' ')[0] == getNextRarity(skn["rarity"].ToString().Split(' ')[0])) + craftList.Add(skin2); + } + + + foreach (var skinRange in GroupOutcomes(craftList)) + { + ConsoleBuffer.Append($"{Environment.NewLine}--------Length: {skinRange.Count}--------"); + foreach (var skinObj in skinRange) + ConsoleBuffer.Append(Environment.NewLine+skinObj.ToString()); + } + */ + #endregion + if (skn["highestRarity"] == "False") { if (floatRangeText(weaponQualityBox.Text, skn["minWear"].ToString(), skn["maxWear"].ToString())) @@ -707,7 +778,6 @@ private void button1_Click(object sender, EventArgs e) } } } - MessageBox.Show("Такого скина не существует! Перепроверьте настройки.", "FloatTool", MessageBoxButtons.OK, MessageBoxIcon.Error); } @@ -719,6 +789,40 @@ bool testOverlap(float x1, float x2, float y1, float y2) (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) { Console.WriteLine(text + " in float range [" + minVal + ", " + maxVal + "]"); @@ -790,7 +894,7 @@ private const int HTBOTTOMLEFT = 16, HTBOTTOMRIGHT = 17; - const int _ = 10; // you can rename this variable if you like + const int _ = 16; Rectangle TopCursor { get { return new Rectangle(0, 0, this.ClientSize.Width, _); } } Rectangle LeftCursor { get { return new Rectangle(0, 0, _, this.ClientSize.Height); } } @@ -1145,7 +1249,6 @@ private void gpuSearch_btn_Click(object sender, EventArgs e) private void timer2_Tick(object sender, EventArgs e) { var hundrMilsCount = currComb - last; - //Console.WriteLine($"{hundrMilsCount} in last {timer2.Interval} ms"); var speed = (double)(hundrMilsCount) * 1000 / WorkStatusUpdater.Interval; speedStatusLabel.Text = $"Текущая скорость: {speed} комбинаций/сек"; last = currComb; diff --git a/FloatToolGUI/Main.resx b/FloatToolGUI/Main.resx index 8f19771..c9278cb 100644 --- a/FloatToolGUI/Main.resx +++ b/FloatToolGUI/Main.resx @@ -725,7 +725,7 @@ NoControl - 216, 20 + 207, 20 64, 15 @@ -818,7 +818,7 @@ NoControl - 8, 63 + 9, 64 Yes @@ -863,7 +863,7 @@ 150, 90 - 274, 24 + 267, 24 10 @@ -919,6 +919,48 @@ 2 + + None + + + Flat + + + Microsoft JhengHei Light, 9pt + + + 80% (AK-47 | Safari Mesh + 3) + + + 20% (Tec-9 | Varicamo) + + + * Искать всё * + + + 186, 61 + + + 231, 24 + + + 6 + + + 80% (AK-47 | Safari Mesh + 3) + + + outcomeSelectorComboBox + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 3 + None @@ -947,7 +989,7 @@ 288, 31 - 130, 24 + 129, 24 6 @@ -965,7 +1007,7 @@ panel6 - 3 + 4 None @@ -1001,7 +1043,7 @@ panel6 - 4 + 5 Bottom, Left @@ -1040,7 +1082,7 @@ panel6 - 5 + 6 None @@ -1175,7 +1217,43 @@ panel6 - 6 + 7 + + + None + + + True + + + Microsoft JhengHei Light, 10pt + + + NoControl + + + 108, 65 + + + 68, 18 + + + 4 + + + Ауткамы: + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 8 None @@ -1211,7 +1289,7 @@ panel6 - 7 + 9 Bottom @@ -1250,7 +1328,7 @@ panel6 - 8 + 10 None @@ -1283,7 +1361,7 @@ panel6 - 9 + 11 Top @@ -2347,9 +2425,6 @@ lcEgDkWiqA6FUR2O4OL8XLzY1sG2H8tA/j8A3hg1hV1H6QAAAABJRU5ErkJggg== - - NoControl - 900, 460 diff --git a/FloatToolGUI/Properties/Settings.Designer.cs b/FloatToolGUI/Properties/Settings.Designer.cs index 73c373d..e1c20db 100644 --- a/FloatToolGUI/Properties/Settings.Designer.cs +++ b/FloatToolGUI/Properties/Settings.Designer.cs @@ -1,30 +1,35 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. // //------------------------------------------------------------------------------ -namespace FloatToolGUI.Properties -{ - - +namespace FloatToolGUI.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string Nova { + get { + return ((string)(this["Nova"])); + } + } } } diff --git a/FloatToolGUI/Properties/Settings.settings b/FloatToolGUI/Properties/Settings.settings index 3964565..17c701c 100644 --- a/FloatToolGUI/Properties/Settings.settings +++ b/FloatToolGUI/Properties/Settings.settings @@ -1,7 +1,9 @@  - - - - - - + + + + + + + + \ No newline at end of file diff --git a/FloatToolGUI/Skin.cs b/FloatToolGUI/Skin.cs new file mode 100644 index 0000000..ee358f1 --- /dev/null +++ b/FloatToolGUI/Skin.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FloatToolGUI +{ + public class Skin + { + public string Name { get; set; } + public float MinFloat { get; set; } + public float MaxFloat { get; set; } + public Quality Rarity { get; set; } + + public Skin(string name, float minWear, float maxWear, Quality rarity) + { + Name = name; + MinFloat = minWear; + MaxFloat = maxWear; + Rarity = rarity; + } + + public override string ToString() + { + return $"{Name} ({Rarity.ToString()}) | {MinFloat}-{MaxFloat}"; + } + } +}