Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Blak's Runner V5.1
- -- Constant Profit on every win with tipping and logging
- --
- -- This script tries to win at least "Payout X Amount" over what has been spent for every win.
- --
- -- For example, basechance of 1.2345 = 96.680 payout X, so every win will be "Around" 96 above what was spent.
- -- Due to the decimal point resolution, it will never be exact. It may be more or less than the Payout X.
- --
- -- basechance > 25, may result in negative payouts on long red runs, but short runs will still be positive.
- --
- -- basechance can be used in the console during run-time to change your payout after the next win.
- -- Example: basechance = 0.2048
- -- That will change your payout to 483.3984 after the next win.
- --
- -- incDivisor variable: Controls winMult calculation based on your balance
- -- Changing this variable is not advisable
- -- Any balance under 10 million sats (or 10 million tokens on Bitvest) will result in a starting bet of 1
- -- Any balance over 10 million will result in a starting run bet of 1 + balance / incDivisor
- -- Example: balance = 11256780, winMult would be 1.12 ... or balance = 23456780, winmult would be 2.34
- --
- -- If there are more than Payout X number of losing rolls, then the winMult is set to 1, to just get
- -- through this streak without busting, but will still profit around Payout X amount.
- --
- -- chanceInc variable: increase your chance to win by X amount
- -- Set to zero to stop the increment of base chance selected for the run
- --
- -- Example: balance = 2345678, basechance = 9.9 = Payout X of 10.00, First 10 rolls, winMult = 2.34.
- -- after 10 losing rolls, the winMult value will be forced to 1.0, resulting in an overall profit of around 10, instead of 23.4
- --
- -- Version 5.1 additions:
- -- High / Low betting Enable / dissable
- -- Set high or low bet on first bet
- isTokens = false-- Used for Bitvest tokens
- basechance = 4.4 -- The starting chance that you would like use.
- chanceInc = 0.00010 -- How much to increase chance on a bad run
- incDivisor = 10000000 -- When to start raising winMult (12.5 million seems safe so far)
- siteMaxProfit = 0.00000000 -- Set to the max profit of the site. Set to 0 to disable. This will make sure the profit of the bet will never go above this value if set
- toggleHighLow = false
- bethigh = false
- -- ***************** IMPORTANT TO CHANGE THESE SETTINGS BEFORE ENABLING OR YOU WILL TIP ME ***********************
- autotip = false -- If the isTokens is true, tipping is automatically turned off
- -- With auto tip enabled, It will auto tip to your named
- -- alt account when your balance is above bankroll + tipamount
- -- On BitVest, minimum 10k BTC, 50k ETH, and 100k LTC
- bankroll = 0 -- Minimum you want to keep rolling with. Set to 0 to use your current balance
- tipamount = 0.0 -- How much to tip
- bankappend = 0.0 -- How much of your tip amount to add to your bankroll over time in %. 0.10 = 10% Set to 0 for no addition to the bankroll
- receiver = "BlaksBank" -- Who gets the tip? **** CHANGE THIS ****
- -- ^^^^^^ CHANGE THE ABOVE VALUE!!!!! ^^^^^^
- restTime = 0.0 -- How long to wait in seconds before the next bet. Some sites need this
- -- Bitvest setting 0.75 for low bet values
- maxWinMult = 512 -- Max multiplier to hit. siteMaxProfit can lower this value Set to 0 to disable
- housePercent = 1 -- Set this according to the site you are on.
- -- Known site percentages
- -- Freebitco.in = 5%
- -- Bitsler = 1.5%
- -- Bitvest = 1.0%
- maxbet = 0 -- raise for higher betting. 10x basebet seems good so far. Set to 0 to disable
- minbet = 1-- Use whole integers
- basebet = 1 -- Use whole integers
- tippedOut = 0
- -- Should not need to change anything below this line
- chanceMult = 1.6666 -- was 1.6666
- chanceMax = 1.5
- tempCalc = balance
- if(isTokens == false) then
- tempCalc = tempCalc * 100000000
- end
- tempMult = tempCalc / incDivisor
- if(tempMult < 1) then tempMult = 1 end
- winMult = tempMult
- totalProfit = 0
- winMult = 1 -- Multiplier for X times over chance win
- tempWinMult = winMult
- incroll = 0
- startBalance = balance
- print(string.format("Starting Win Multiplier: %.2f", tempWinMult))
- if(bankroll == 0) then
- bankroll = balance
- end
- if(isTokens == false) then
- minbet = minbet * 0.00000001
- basebet = basebet * 0.00000001
- maxbet = maxbet * 0.00000001
- -- minWinAmount = minWinAmount * 0.00000001
- end
- local clock = os.clock
- function sleep(n) -- seconds
- local t0 = clock()
- while clock() - t0 <= n do end
- end
- oldBaseChance = 0
- currentStep = 0
- lossCount = 0
- stepCount = 0
- spent = 0
- highLowLossCount = 0
- highLowAverage = {}
- averageCount = 0
- averageIndex = 0
- averageMax = 8 -- High / Low average switching.
- rollCount = 0
- rollSeedCount = 0
- profit = 0
- if(appendlog != true) then
- fin = assert(io.open(filename, "w"))
- -- fin:write("Timestamp, Bet ID, Streak, Bet, Chance, Spent, Win Amount, Win Profit\n")
- fin:write(" Timestamp, Bet ID, Strk, Bet, Chance, Spent, Win Amount, Win Profit, Roll, High/Low Total Profit\n")
- fin:close()
- end
- -- Initialize the array
- for i=0, averageMax do
- highLowAverage[i] = basechance
- end
- function calcChance()
- if(oldBaseChance == 0) then oldBaseChance = basechance end
- if(win) then
- if(lastBet.Roll >= 50) then
- target = 100 - lastBet.Roll
- else
- target = lastBet.Roll
- end
- highLowAverage[averageCount] = target
- averageCount = averageCount + 1
- if(averageCount >= averageMax) then averageCount = 0 end
- tempAverage = 0
- for i=0, averageMax do
- tempAverage = tempAverage + highLowAverage[i]
- end
- tempAverage = tempAverage / averageMax
- -- chance = tempAverage * chanceMult
- chance = tempAverage
- if(chance > (oldBaseChance * chanceMax)) then chance = oldBaseChance * chanceMax end
- tempcalc = string.format("Temp Average: %.4f / chance: %.4f", tempAverage, chance)
- print(tempcalc)
- else
- winAmount = (100 - (100 * (housePercent / 100))) / chance -- how much you will win for a 1 bet
- if(lossCount > winAmount) then
- chance = chance + chanceInc
- tempcalc = string.format("New chance: %.4f", chance)
- -- print(tempcalc)
- end
- end
- end
- function autoTune()
- -- Auto tune to win at least minWinAmount
- tempstr = "Win Amount: winAmount, Needed: amtNeeded, Next Mult: nextmult, Next Bet: nextbet"
- winAmount = (100 - (100 * (housePercent / 100))) / chance -- how much you will win for a 1 bet
- if(isTokens == false) then
- winAmount = winAmount * 0.00000001
- end
- tempcalc = string.format("%.8f", winAmount)
- tempstr = string.gsub(tempstr, "winAmount", tempcalc)
- tempcalc = 1 + ((chance / 100) * ((100 - housePercent) / ((100 - housePercent) / 2)))
- needed = (winAmount * tempWinMult) + (nextbet * tempcalc) + spent -- No need to go by balance for next bet. Only how much has been spent. Will allow tipping and not accidentally bust
- tempcalc = string.format("%.8f", needed)
- tempstr = string.gsub(tempstr, "amtNeeded", tempcalc)
- -- print(string.format("Needed: %.8f", needed))
- nextMult = needed / winAmount
- tempcalc = string.format("%.8f", nextMult)
- tempstr = string.gsub(tempstr, "nextmult", tempcalc)
- -- print(string.format("nextMult: %.8f", nextMult))
- if(nextMult < 1) then nextMult = 1 end
- nextbet = basebet * nextMult
- if((winAmount * nextbet) - nextbet > siteMaxProfit and siteMaxProfit != 0) then
- nextbet = siteMaxProfit / winAmount
- end
- tempcalc = string.format("%.8f", nextbet)
- tempstr = string.gsub(tempstr, "nextbet", tempcalc)
- -- print(tempstr)
- if nextbet > maxbet and maxbet != 0 then
- nextbet = maxbet
- end
- if(tippedOut == 1) then
- nextbet = basebet
- tippedOut = 0
- startBalance = balance
- end
- end
- chance = basechance
- nextbet=basebet
- autoTune()
- function logWin(opposite)
- if(enableLogging == true) then
- tempstr = "year-0month-0day 0hour:0minute:0second, betid, streak, bet, chance, spent, winamount, profit, roll, highlo opposite"
- tempstr = string.gsub(tempstr, "year", lastBet.date.year)
- if (lastBet.date.month >= 10) then tempstr = string.gsub(tempstr, "0month", "month") end
- if (lastBet.date.day >= 10) then tempstr = string.gsub(tempstr, "0day", "day") end
- if (lastBet.date.hour >= 10) then tempstr = string.gsub(tempstr, "0hour", "hour") end
- if (lastBet.date.minute >= 10) then tempstr = string.gsub(tempstr, "0minute", "minute") end
- if (lastBet.date.second >= 10) then tempstr = string.gsub(tempstr, "0second", "second") end
- tempstr = string.gsub(tempstr, "month", lastBet.date.month)
- tempstr = string.gsub(tempstr, "day", lastBet.date.day)
- tempstr = string.gsub(tempstr, "hour", lastBet.date.hour)
- tempstr = string.gsub(tempstr, "minute", lastBet.date.minute)
- tempstr = string.gsub(tempstr, "second", lastBet.date.second)
- tempstr = string.gsub(tempstr, "betid", lastBet.Id)
- if(lossCount < 10000) then tempstr = string.gsub(tempstr, "streak", " streak") end
- if(lossCount < 1000) then tempstr = string.gsub(tempstr, "streak", " streak") end
- if(lossCount < 100) then tempstr = string.gsub(tempstr, "streak", " streak") end
- if(lossCount < 10) then tempstr = string.gsub(tempstr, "streak", " streak") end
- tempstr = string.gsub(tempstr, "streak", lossCount)
- tempcalc = string.format("%.8f", nextbet)
- tempstr = string.gsub(tempstr, "bet", tempcalc)
- if(chance < 10) then
- tempcalc = string.format(" %.4f", chance)
- else
- tempcalc = string.format("%.4f", chance)
- end
- tempstr = string.gsub(tempstr, "chance", tempcalc)
- tempcalc = string.format("%.8f", spent)
- tempstr = string.gsub(tempstr, "spent", tempcalc)
- tempcalc = string.format("%.8f", lastBet.Profit)
- tempstr = string.gsub(tempstr, "winamount", tempcalc)
- profit = lastBet.Profit - spent
- tempcalc = string.format("%.8f", profit)
- tempstr = string.gsub(tempstr, "profit", tempcalc)
- if(lastBet.Roll < 10) then
- tempstr = string.gsub(tempstr, "roll", string.format(" %.4f", lastBet.Roll))
- else
- tempstr = string.gsub(tempstr, "roll", string.format("%.4f", lastBet.Roll))
- end
- if(bethigh == true) then
- tempstr = string.gsub(tempstr, "highlo", "Betting High")
- else
- tempstr = string.gsub(tempstr, "highlo", "Betting Low ")
- end
- if(opposite == false) then
- tempstr = string.gsub(tempstr, "opposite", string.format("%.8f", totalProfit))
- end
- tipstr = ""
- if(autotip == true and isTokens == false and bankroll != 0) then
- tipvalue = bankroll + tipamount + (tipamount * bankappend)
- pct = ((balance - bankroll) / (tipvalue - bankroll)) * 100
- if(win and isHunting == true) then
- tipstr = string.format(" ... Percent towards tip: %.2f to %s! ... Total Tipped: %.8f\n", pct, receiver, totalTipped)
- end
- end
- fin = assert(io.open(filename, "r"))
- content = fin:read("*a")
- fin:close()
- fout = assert(io.open(tempfile, "w"))
- fout:write(content)
- fout:write(tempstr)
- if(tipstr != "") then
- fout:write(tipstr)
- else
- fout:write("\n")
- end
- fout:close()
- os.remove(filename)
- os.rename(tempfile, filename)
- end
- end
- function dobet()
- if(enableLogging == true and !win) then
- if(lastBet.Roll >= 99.9 or lastBet.Roll <= 0.10) then
- if(bethigh == true) then
- if(lastBet.Roll < chance) then logWin(true) end
- else
- if(lastBet.Roll > (99.9999 - chance)) then logWin(true) end
- end
- -- logWin(true)
- -- tempstr = "year-0month-0day 0hour:0minute:0second, betid, roll, highlo\n"
- -- tempstr = string.gsub(tempstr, "year", lastBet.date.year)
- -- if (lastBet.date.month >= 10) then tempstr = string.gsub(tempstr, "0month", "month") end
- -- if (lastBet.date.day >= 10) then tempstr = string.gsub(tempstr, "0day", "day") end
- -- if (lastBet.date.hour >= 10) then tempstr = string.gsub(tempstr, "0hour", "hour") end
- -- if (lastBet.date.minute >= 10) then tempstr = string.gsub(tempstr, "0minute", "minute") end
- -- if (lastBet.date.second >= 10) then tempstr = string.gsub(tempstr, "0second", "second") end
- -- tempstr = string.gsub(tempstr, "month", lastBet.date.month)
- -- tempstr = string.gsub(tempstr, "day", lastBet.date.day)
- -- tempstr = string.gsub(tempstr, "hour", lastBet.date.hour)
- -- tempstr = string.gsub(tempstr, "minute", lastBet.date.minute)
- -- tempstr = string.gsub(tempstr, "second", lastBet.date.second)
- -- tempstr = string.gsub(tempstr, "betid", lastBet.Id)
- -- tempstr = string.gsub(tempstr, "roll", lastBet.Roll)
- -- if(bethigh == true) then
- -- tempstr = string.gsub(tempstr, "highlo", "Betting High")
- -- else
- -- tempstr = string.gsub(tempstr, "highlo", "Betting Low")
- -- end
- -- fin = assert(io.open(filename, "r"))
- -- content = fin:read("*a")
- -- fin:close()
- --
- -- fout = assert(io.open(tempfile, "w"))
- -- fout:write(content)
- -- fout:write(tempstr)
- -- -- fout:write(oppositeOut)
- --
- -- fout:close()
- -- os.remove(filename)
- -- os.rename(tempfile, filename)
- end
- end
- if win then
- totalProfit = totalProfit + (lastBet.Profit - spent)
- print(string.format("Total Profit: %.8f", totalProfit))
- logTest = rollLog
- if(rollLog == 0) then
- logTest = (100 - (100 * (housePercent / 100))) / chance
- end
- -- print(logTest)
- tipvalue = bankroll + tipamount + (tipamount * bankappend)
- pct = ((balance - bankroll) / (tipvalue - bankroll)) * 100
- if isTokens == false and autotip == true then
- print(string.format("Percent of next tip won: %.2f", pct))
- end
- if(enableLogging == true and lossCount >= logTest) then
- logWin(false)
- -- tempstr = "year-0month-0day 0hour:0minute:0second, betid, streak, bet, chance, spent, winamount, profit, roll, highlo\n"
- -- tempstr = string.gsub(tempstr, "year", lastBet.date.year)
- -- if (lastBet.date.month >= 10) then tempstr = string.gsub(tempstr, "0month", "month") end
- -- if (lastBet.date.day >= 10) then tempstr = string.gsub(tempstr, "0day", "day") end
- -- if (lastBet.date.hour >= 10) then tempstr = string.gsub(tempstr, "0hour", "hour") end
- -- if (lastBet.date.minute >= 10) then tempstr = string.gsub(tempstr, "0minute", "minute") end
- -- if (lastBet.date.second >= 10) then tempstr = string.gsub(tempstr, "0second", "second") end
- -- tempstr = string.gsub(tempstr, "month", lastBet.date.month)
- -- tempstr = string.gsub(tempstr, "day", lastBet.date.day)
- -- tempstr = string.gsub(tempstr, "hour", lastBet.date.hour)
- -- tempstr = string.gsub(tempstr, "minute", lastBet.date.minute)
- -- tempstr = string.gsub(tempstr, "second", lastBet.date.second)
- -- tempstr = string.gsub(tempstr, "betid", lastBet.Id)
- -- tempstr = string.gsub(tempstr, "streak", lossCount)
- -- tempcalc = string.format("%.8f", nextbet)
- -- tempstr = string.gsub(tempstr, "bet", tempcalc)
- -- tempcalc = string.format("%.2f", chance)
- -- tempstr = string.gsub(tempstr, "chance", tempcalc)
- -- tempcalc = string.format("%.8f", spent)
- -- tempstr = string.gsub(tempstr, "spent", tempcalc)
- -- tempcalc = string.format("%.8f", lastBet.Profit)
- -- tempstr = string.gsub(tempstr, "winamount", tempcalc)
- -- profit = lastBet.Profit - spent
- -- tempcalc = string.format("%.8f", profit)
- -- tempstr = string.gsub(tempstr, "profit", tempcalc)
- -- tempstr = string.gsub(tempstr, "roll", lastBet.Roll)
- -- if(bethigh == true) then
- -- tempstr = string.gsub(tempstr, "highlo", "Betting High")
- -- else
- -- tempstr = string.gsub(tempstr, "highlo", "Betting Low")
- -- end
- -- -- print(tempstr)
- --
- -- fin = assert(io.open(filename, "r"))
- -- content = fin:read("*a")
- -- fin:close()
- --
- -- fout = assert(io.open(tempfile, "w"))
- -- fout:write(content)
- -- fout:write(tempstr)
- -- -- fout:write(oppositeOut)
- --
- -- fout:close()
- -- os.remove(filename)
- -- os.rename(tempfile, filename)
- end
- chance = basechance
- lossCount = 0 -- reset
- stepCount = 0 -- reset
- spent = 0
- highLowLossCount = 0
- startBalance = balance
- tempCalc = balance
- if(isTokens == false) then
- tempCalc = tempCalc * 100000000
- end
- tempMult = tempCalc / incDivisor
- if(tempMult < 1) then tempMult = 1 end
- winMult = tempMult
- if(winMult > maxWinMult and maxWinMult != 0) then winMult = maxWinMult end
- if(tempWinMult != winMult) then
- print(string.format("New Win Multiplier: %.2f", winMult))
- tempWinMult = winMult
- end
- nextbet = basebet
- calcChance()
- autoTune()
- else -- if lose
- lossCount += 1
- highLowLossCount += 1
- spent += nextbet
- winTemp = (100 - (100 * (housePercent / 100))) / chance -- how much you will win for a 1 bet
- if(highLowLossCount >= winTemp) then
- if(toggleHighLow == true) then
- if(bethigh == true) then
- bethigh = false
- else
- bethigh = true
- end
- end
- if(lossCount >= winTemp * 25) then -- was 2
- -- if(tempWinMult > 1) then
- -- tempWinMult = tempWinMult - 1
- -- tempWinMult = tempWinMult / 2
- if(tempWinMult > 1) then
- tempWinMult = 1 -- Abort the high value, and go minimum for now
- if(tempWinMult < 1) then tempWinMult = 1 end
- print(string.format("New Win Multiplier: %.2f", tempWinMult))
- end
- end
- highLowLossCount = 0
- end
- calcChance()
- autoTune()
- if nextbet >= balance then -- Keep rolling, without completely busting. May add flag to disable
- if(enableLogging == true) then
- tempstr = "year-0month-0day 0hour:0minute:0second, betid, streak, bet, chance, spent, winamount, profit, roll, highlo *******LOSING STOP*******\n"
- tempstr = string.gsub(tempstr, "year", lastBet.date.year)
- if (lastBet.date.month >= 10) then tempstr = string.gsub(tempstr, "0month", "month") end
- if (lastBet.date.day >= 10) then tempstr = string.gsub(tempstr, "0day", "day") end
- if (lastBet.date.hour >= 10) then tempstr = string.gsub(tempstr, "0hour", "hour") end
- if (lastBet.date.minute >= 10) then tempstr = string.gsub(tempstr, "0minute", "minute") end
- if (lastBet.date.second >= 10) then tempstr = string.gsub(tempstr, "0second", "second") end
- tempstr = string.gsub(tempstr, "month", lastBet.date.month)
- tempstr = string.gsub(tempstr, "day", lastBet.date.day)
- tempstr = string.gsub(tempstr, "hour", lastBet.date.hour)
- tempstr = string.gsub(tempstr, "minute", lastBet.date.minute)
- tempstr = string.gsub(tempstr, "second", lastBet.date.second)
- tempstr = string.gsub(tempstr, "betid", lastBet.Id)
- tempstr = string.gsub(tempstr, "streak", lossCount)
- tempcalc = string.format("%.8f", nextbet)
- tempstr = string.gsub(tempstr, "bet", tempcalc)
- tempcalc = string.format("%.2f", chance)
- tempstr = string.gsub(tempstr, "chance", tempcalc)
- tempcalc = string.format("%.8f", spent)
- tempstr = string.gsub(tempstr, "spent", tempcalc)
- tempcalc = string.format("%.8f", lastBet.Profit)
- tempstr = string.gsub(tempstr, "winamount", tempcalc)
- profit = lastBet.Profit - spent
- tempcalc = string.format("%.8f", profit)
- tempstr = string.gsub(tempstr, "profit", tempcalc)
- tempstr = string.gsub(tempstr, "roll", lastBet.Roll)
- if(bethigh == true) then
- tempstr = string.gsub(tempstr, "highlo", "Betting High")
- else
- tempstr = string.gsub(tempstr, "highlo", "Betting Low ")
- end
- -- print(tempstr)
- fin = assert(io.open(filename, "r"))
- content = fin:read("*a")
- fin:close()
- fout = assert(io.open(tempfile, "w"))
- fout:write(content)
- fout:write(tempstr)
- -- fout:write(oppositeOut)
- fout:close()
- os.remove(filename)
- os.rename(tempfile, filename)
- end
- print("Balance too low for the bet. Stopping.")
- stop()
- print("Resetting")
- chance = basechance
- lossCount = 0 -- reset
- nextbet = basebet -- reset
- stepCount = 0 -- reset
- spent = 0
- end
- end
- if(autotip == true and isTokens == false) then
- if(balance > bankroll + tipamount + (tipamount * bankappend)) then
- preTipBalance = balance
- tip(receiver, balance - bankroll - (tipamount * bankappend))
- sleep(5)
- bankroll += (tipamount * bankappend)
- tempstr = "New Bankroll: banker"
- tempstr = string.gsub(tempstr, "banker", bankroll)
- print(tempstr)
- tippedOut = 1
- end
- end
- sleep(restTime)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement