Skip to content

Instantly share code, notes, and snippets.

@dsetzer
dsetzer / oscar-v1-bab.js
Last active November 17, 2021 22:35
Oscar's Grind script for bustabit
var config = {
baseBet: { type: 'balance', label: 'Base Bet', value: 100 },
payout: { type: 'multiplier', label: 'Payout', value: 2 },
betIncr: { type: 'balance', label: 'Bet Incr', value: 100 },
reqProf: { type: 'balance', label: 'Profit', value: 100 }
};
Object.entries(config).forEach(c=>window[c[0]]=eval(c[1].value));
let currBet = baseBet, profit = 0;
engine.on('GAME_STARTING', () => {
@dsetzer
dsetzer / cmh-v1-dice.js
Created December 23, 2019 15:42
bustadice CMH script (he didn't lose from the script, take a close look at the payout used during the losses. losses were manual)
var config = {c:{type:'text',label:'Bet Speed',value:100},m:{type:'balance',label:'Base Bet',value:6e2}};await
(async(a,b,c,d,e,f,g)=>{var h=async(i,w,x)=>((w=(g?{b:g.value,p:g.target}:{b:a,p:b}),x=(g?(g.multiplier<b?d(w):c(w)):null),
f=w.b,b=w.p),(g=await this.bet(Math.round(f/1e2)*1e2,b)));for(;;)await h().then(i=>new Promise(r=>setTimeout(r,e)));
})(config.m.value,2.01,(w)=>{w.b=config.m.value,w.p=2.01;},(l)=>{l.p+=1.01;if(l.p>6.05){l.p=2.01,l.b*=(6.05/1.01);}},config.c.value);
/* Copyright © 2019 Daniel Setzer */
@dsetzer
dsetzer / global-config.js
Last active December 22, 2019 13:09
Making config values easier to work with
var config = {
baseBet: { type: 'balance', label: 'Base Bet', value: 100 }
};
// Add config values to global scope
Object.entries(config).forEach(c=>window[c[0]]=c[1].value);
// Before:
//await this.log(config.baseBet.value);
@dsetzer
dsetzer / climb3-v1.5-bustabit.js
Last active December 18, 2024 16:55
Upgrade from climb-v2 script with more customization, compounding, and halving feature for bustabit.
var config = {
baseBet: { label: 'Base Bet', type: 'balance', value: 1000 },
minPayout: { label: 'Target Min', type: 'multiplier', value: 1.08 },
maxPayout: { label: 'Target Max', type: 'multiplier', value: 50.00 },
divPayout: { label: 'Target Div', type: 'multiplier', value: 0.80 },
compRate: { label: 'Compound %', type: 'multiplier', value: 0.02 },
compStep: { label: 'Compound At', type: 'multiplier', value: 1.10 },
};
let baseBet = config.baseBet.value, basePayout = config.minPayout.value, rate = config.compRate.value;
let currentBet = baseBet, currPayout = basePayout, baseMulti = 1.005, betMulti = 1.006, result = null;
@dsetzer
dsetzer / bustadice-wrapper-v1.js
Last active June 17, 2021 16:19
Script wrapper allowing most bustadice (promise based API) scripts to be used on bustabit (event based API). Reason why I say most scripts is because there are a few differences which have no equivalent like seed change functions.
var config = {
baseBet: { type: 'balance', label: 'Base Bet', value: 100 },
payout: { type: 'multiplier', label: 'Payout', value: 2 },
maxBet: { type: 'balance', label: 'Max Bet', value: 100000 }
};
// Note: if the bustadice script contains a config or options like above,
// then it will need to be separated and placed at the very top still and
// the rest of the script is placed in the designated area below.
@dsetzer
dsetzer / bustadice-dynamic-microscript.js
Last active September 28, 2019 07:10
A versatile micro script framework for bustadice using simple dynamic preset system.
// ------------------------ Preset Format ------------------------
var settings = [
100, // Base Bet
2.00, // Payout
(w)=>{ // onWin Callback
w.b = w.b / 2;
w.p = w.p;
},
(l)=>{ // onLose Callback
// Array remove by shifting elements
Array.prototype.remove = function(index) {
var stop = this.length - 1;
while (index < stop) this[index] = this[++index];
this.pop();
}
// Array filter remove by shifting elements
Array.prototype.filterRemove = function(fn) {
for (var i = 0, j = 0; i < this.length; ++i) {
@dsetzer
dsetzer / PlayStats.js
Created September 13, 2019 21:33
hooked play stats for bustadice
class PlayStats {
constructor(context, usingBetSkips){
this.context = context;
this._context = {context...};
this._usingBetSkips = usingBetSkips || false;
this._bet = async (value, target) => {
return new Promise((resolve, reject)=>{
this._context.bet(value, target).catch(reject).then((r)=>{
if(this._usingBetSkips && r.value === 100 && r.target === 1.01){
this.gameStats.skip.total += 1
class RunningStats {
constructor() {
this.count = 0
this._mean = 0
this._dSquared = 0
}
update(newValue) {
this.count++
const meanDifferential = (newValue - this._mean) / this.count
const newMean = this._mean + meanDifferential
@dsetzer
dsetzer / async-labouchere-v1.js
Last active September 4, 2019 21:11
bustadice script - async labouchere - proof of concept
var config = {
baseBet: { type: 'balance', label: 'Base Bet', value: 200},
payout: { type: 'multiplier', label: 'Payout', value: 2.00},
actions: { type: 'text', label: 'Action Limit', value: "20"},
betSpd: { type: 'text', label: 'Bet Speed', value: "2000"},
debug: { type: 'checkbox', label: 'Debug Log', value: false}
};
const baseBet = config.baseBet.value, payout = config.payout.value;
const actionLimit = parseInt(config.actions.value), debug = config.debug.value;
const betSpeed = Math.ceil(config.betSpd.value/actionLimit);