Skip to content

Instantly share code, notes, and snippets.

@BitChop
Created August 18, 2019 04:10
Show Gist options
  • Save BitChop/dae0f055ef9d8c271163dc1009226a8b to your computer and use it in GitHub Desktop.
Save BitChop/dae0f055ef9d8c271163dc1009226a8b to your computer and use it in GitHub Desktop.
bustadice script
var config = {
settings: { label: "Script Settings", type: "noop" },
wager: { label: "Base Wager", type: "balance", value: 100 },
target: { label: "Base Target", type: "multiplier", value: 100 },
targetMod: { label: "Target Loss", type: "multiplier", value: -1.0 },
stoploss: { label: "Trailing-stop Amount", type: "balance", value: 50000 },
liftmint: { label: "Each Min Target Increases", type: "checkbox", value: false },
skipmode: { label: "Sim Mode", type: "checkbox", value: true },
maxtstop: { label: "On Min Target", type: "radio", value: "reset", options: {
stop: { label: "stop script", type: "noop" },
reset: { label: "return to base", type: "noop" }
}},
mintarget: { label: "Min Target", type: "multiplier", value: 2 },
maxwstop: { label: "On Max Wager", type: "radio", value: "reset", options: {
stop: { label: "stop script", type: "noop" },
reset: { label: "return to base", type: "noop" }
}},
maxwager: { label: "Max Wager", type: "balance", value: 100000 },
};
let running = true
let base = config.wager.value
let wager = config.wager.value
let target = config.target.value
let losses = 0, profits = 0
let skip = config.skipmode.value
let trail = config.stoploss.value
let trailBal = this.balance - trail
let liftMint = (config.liftmint.value == true);
let mint = config.mintarget.value;
let retries = 0;
while (running) {
let logStr = `Betting ${wager/100} bits @ ${Math.round(target * 100) / 100}x.`
if(config.maxwager.value !== -1 && config.maxwager.value <= wager){
if(config.maxwstop.value === "stop"){
this.log(`Maximum wager reached. Stopping at (${wager/100} bit) wager`)
running = false;
break;
}else{
retries++;
wager = base;
losses = 0
}
}
if(config.mintarget.value !== -1 && (liftMint ? (mint + (2 * retries)) : mint) >= target){
if(config.maxtstop.value === "stop") {
this.log(`Minimum target reached. Stopping at target (${target})`)
running = false;
break;
}else{
retries++;
target = config.target.value
wager = wagerSize()
//losses = 0
}
}
const { multiplier } = skip ? await this.bet(100, 1.01) : await this.bet(wager, target)
if (multiplier >= target) {
let profit = (wager * target) - wager
if(losses > 0){
let recovered = Math.min(losses,profit)
losses -= recovered;
profit -= recovered;
}
profits += profit
this.log(`${logStr} Won ${Math.round((wager/100) * target)} bits! Total Profits ${Math.round(profits / 100)} bits.`)
wager = config.wager.value
target = config.target.value
if((this.balance - trail) > trailBal){
trailBal = this.balance - trail
}
retries = 0;
}else{
losses += wager
profits -= wager
this.log(`${logStr} Lost ${Math.round(wager) / 100}. Total Profits ${Math.round(profits / 100)} bits.`)
target += config.targetMod.value
wager = wagerSize()
if(this.balance < trailBal){
this.log(`Stop loss triggered at ${trailBal / 100} bits. Ending profit at ${Math.round(profits / 100)} bits.`);
running = false
this.stop()
}
}
await sleep(10)
}
function wagerSize(){
let clamp = 1//retries > 0 ? (1 - ((retries * 1.5) / 98)) : 1 /* experimental */
return Math.max(100, Math.round(((base + ((losses * clamp) / (target - 1)))) / 100) * 100)
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment