private void tmrSimulation_Tick(object sender, EventArgs e) { if (simthread != null) { if (!simthread.IsAlive) { tmrSimulation.Enabled = false; lblSimRun.ForeColor = Color.Green; lblSimRun.Text = "Simulation Completed"; lastsim = tempsim; } } }
void runsim() { double dMultiplier = Multiplier; double WinMultiplier = this.WinMultiplier; double startMultiplier = Multiplier; int numbets = (int)nudSimNumBets.Value; int bets = 1; int wins = 0; int losses = 0; int winstreak = 0; int losstreak = 0; int largestwinstreak = 0; int largestlostreak = 0; int MaxMultiplies = this.MaxMultiplies; double devider = this.Devider; double WinDevider = this.WinDevider; double devidercounter = this.Devidecounter; double balance = (double)nudSimBalance.Value; double lastbet = MinBet; double minbet = MinBet; double chance = Chance; double profit = 0; double currentprofit = this.currentprofit; string chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._"; string server = ""; for (int i = 0; i < 64; i++) { server += (chars[rand.Next(0, chars.Length)]); } string client = ""; for (int i = 0; i < 24; i++) { client += rand.Next(0, 10).ToString(); } string sserver = ""; foreach (byte b in server) { sserver += Convert.ToChar(b); } tempsim = new Simulation(balance.ToString("0.00000000"), bets.ToString(), sserver, client); while (bets <= numbets) { //string columns = "Bet Number,LuckyNumber,Chance,Roll,Result,Wagered,Profit,Balance,Total Profit"; string betstring = bets+","; double number = getlucky(server, client, bets); betstring += number.ToString() + ","+Chance.ToString()+","; bool win = false; if (high) betstring += ">" + (100 - chance) + ","; else betstring += "<" + chance+","; if (high && number > 100 - chance) { win = true; } else if (!high && number < chance) { win = true; } if (win) { betstring += "win,"; if (rdbWinMaxMultiplier.Checked && winstreak >= WinMaxMultiplies) { WinMultiplier = 1; } else if (rdbWinDevider.Checked && winstreak % WinDevidecounter == 0 && winstreak > 0) { WinMultiplier *= WinDevider; } else if (rdbWinReduce.Checked && winstreak == WinDevidecounter && winstreak > 0) { WinMultiplier *= WinDevider; } if (winstreak == 0) { currentprofit = 0; } profit += (lastbet * 99 / chance) - lastbet; betstring += lastbet + ","; betstring += (lastbet * 99 / chance) - lastbet + ","; balance += (lastbet * 99 / chance) - lastbet; currentprofit += (lastbet*(99/Chance))-lastbet; Lastbet *= WinMultiplier; if (winstreak == 0) { lastbet = minbet; } wins++; winstreak++; if (chkResetBetWins.Checked && winstreak % nudResetWins.Value == 0) { lastbet = minbet; } if (chkChangeWinStreak.Checked && (winstreak == nudChangeWinStreak.Value)) { lastbet = (double)nudChangeWinStreakTo.Value; } if (chkChangeChanceWin.Checked && (winstreak == nudChangeChanceWinStreak.Value)) { chance = (double)nudChangeChanceWinTo.Value; } if (largestwinstreak < winstreak) largestwinstreak = winstreak; if (losstreak != 0) { try { chance = Chance; } catch { } } losstreak = 0; dMultiplier = startMultiplier; //lastbet = minbet; dMultiplier = startMultiplier; if (chkReverse.Checked && rdbReverseWins.Checked && winstreak % reversebets == 0) high = !high; } else { betstring += "lose,"; losses++; losstreak++; if (largestlostreak < losstreak) largestlostreak = losstreak; winstreak = 0; betstring += lastbet + ","; betstring += - lastbet + ","; profit -= lastbet; balance -= lastbet; if (rdbMaxMultiplier.Checked && losstreak == MaxMultiplies) { dMultiplier = 1; } if (rdbDevider.Checked && losstreak % devidercounter == 0) { dMultiplier *= devider; } if (rdbReduce.Checked && losstreak == devidercounter) { dMultiplier *= devider; } if (chkChangeLoseStreak.Checked && (losstreak == nudChangeLoseStreak.Value)) { lastbet = (double)nudChangeLoseStreakTo.Value; } if (chkChangeChanceLose.Checked && (losstreak == nudChangeChanceLoseStreak.Value)) { chance = (double)nudChangeChanceLoseTo.Value; } lastbet *= dMultiplier; if (lastbet > balance) break; if (chkReverse.Checked && rdbReverseLoss.Checked && losstreak % reversebets == 0) high = !high; } betstring += balance + ","; betstring += profit; tempsim.bets.Add(betstring); bets++; if (bets % 1000 == 0) { Updatetext(lblSimProgress, ((double)bets / (double)numbets * 100.00).ToString("00.00")+"%"); } if (bets % 10000 == 0) { using (StreamWriter sw = File.AppendText(Environment.GetEnvironmentVariable("APPDATA") + "\\easydice2\\tempsim")) { foreach (string tmpbet in tempsim.bets) { sw.WriteLine(tmpbet); } } tempsim.bets.Clear(); } if (chkReverse.Checked && rdbReverseBets.Checked && bets % reversebets == 0) high = !high; } Updatetext(lblSimLosses,losses.ToString()); Updatetext(lblSimProfit, profit.ToString("0.00000000")); Updatetext(lblSimWins,wins.ToString()); Updatetext(lblSimEndBalance, balance.ToString("0.00000000")); Updatetext(lblSimLoseStreak,largestlostreak.ToString()); Updatetext(lblSimWinStreak,largestwinstreak.ToString()); using (StreamWriter sw = File.AppendText(Environment.GetEnvironmentVariable("APPDATA") + "\\easydice2\\tempsim")) { foreach (string tmpbet in tempsim.bets) { sw.WriteLine(tmpbet); } tempsim.bets.Clear(); } //return tempsim; }