Advertisement
curly4

Procon

Nov 15th, 2021
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Settings
  2.  var baseBet = 10; // In bits
  3.  var baseMultiplier = 1.10; // Target multiplier: 1.13 recommended
  4.  var variableBase = true; // Enable variable mode (very experimental), read streakSecurity.
  5.  var streakSecurity = 4; // Number of loss-streak you wanna be safe for. Increasing this massively reduces the variableBase calculated. (1-loss = 20%, 2-loss = 5%, 3-loss = 1.25% of your maximum balance). Recommended: 2+
  6.  var maximumBet = 999999; // Maximum bet the bot will do (in bits).
  7.  
  8.  // Variables - Do not touch!
  9.  var baseSatoshi = baseBet * 100; // Calculated
  10.  var currentBet = baseSatoshi;
  11.  var currentMultiplier = baseMultiplier;
  12.  var currentGameID = -1;
  13.  var firstGame = true;
  14.  var lossStreak = 0;
  15.  var coolingDown = false;
  16.  
  17.  // Initialization
  18.  console.log('====== Procon\'s BustaBit Bot ======');
  19.  console.log('My username is: ' + engine.getUsername());
  20.  console.log('Starting balance: ' + (engine.getBalance() / 100).toFixed(2) + ' bits');
  21.  var startingBalance = engine.getBalance();
  22.  
  23.  if (variableBase) {
  24.        console.warn('[WARN] Variable mode is enabled and not fully tested. Bot is resillient to ' + streakSecurity + '-loss streaks.');
  25.  }
  26.  
  27.  // On a game starting, place the bet.
  28.  engine.on('game_starting', function(info) {
  29.        console.log('====== New Game ======');
  30.      console.log('[Bot] Game #' + info.game_id);
  31.        currentGameID = info.game_id;
  32.  
  33.        if (coolingDown) {
  34.        if (lossStreak == 0) {
  35.        coolingDown = false;
  36.        }
  37.        else {
  38.        lossStreak--;
  39.        console.log('[Bot] Cooling down! Games remaining: ' + lossStreak);
  40.        return;
  41.        }
  42.        }
  43.  
  44.        if (!firstGame) { // Display data only after first game played.
  45.        console.log('[Stats] Session profit: ' + ((engine.getBalance() - startingBalance) / 100).toFixed(2) + ' bits');
  46.        console.log('[Stats] Profit percentage: ' + (((engine.getBalance() / startingBalance) - 1) * 100).toFixed(2) + '%');
  47.        }
  48.  
  49.        if (engine.lastGamePlay() == 'LOST' && !firstGame) { // If last game loss:
  50.        lossStreak++;
  51.        var totalLosses = 0; // Total satoshi lost.
  52.        var lastLoss = currentBet; // Store our last bet.
  53.        while (lastLoss >= baseSatoshi) { // Until we get down to base bet, add the previous losses.
  54.        totalLosses += lastLoss;
  55.        lastLoss /= 4;
  56.        }
  57.  
  58.        if (lossStreak > streakSecurity) { // If we're on a loss streak, wait a few games!
  59.        coolingDown = true;
  60.        return;
  61.        }
  62.  
  63.        currentBet *= 4; // Then multiply base bet by 4!
  64.        currentMultiplier = 1 + (totalLosses / currentBet);
  65.        }
  66.        else { // Otherwise if win or first game:
  67.        lossStreak = 0; // If it was a win, we reset the lossStreak.
  68.        if (variableBase) { // If variable bet enabled.
  69.        // Variable mode resists (currently) 1 loss, by making sure you have enough to cover the base and the 4x base bet.
  70.        var divider = 100;
  71.        for (i = 0; i < streakSecurity; i++) {
  72.        divider += (100 * Math.pow(4, (i + 1)));
  73.        }
  74.  
  75.        newBaseBet = Math.min(Math.max(1, Math.floor(engine.getBalance() / divider)), maximumBet * 100); // In bits
  76.        newBaseSatoshi = newBaseBet * 100;
  77.  
  78.        if ((newBaseBet != baseBet) || (newBaseBet == 1)) {
  79.        console.log('[Bot] Variable mode has changed base bet to: ' + newBaseBet + ' bits');
  80.        baseBet = newBaseBet;
  81.        baseSatoshi = newBaseSatoshi;
  82.        }
  83.        }
  84.        // Update bet.
  85.        currentBet = baseSatoshi; // in Satoshi
  86.        currentMultiplier = baseMultiplier;
  87.        }
  88.  
  89.        // Message and set first game to false to be sure.
  90.        console.log('[Bot] Betting ' + (currentBet / 100) + ' bits, cashing out at ' + currentMultiplier + 'x');
  91.        firstGame = false;
  92.  
  93.        if (currentBet <= engine.getBalance()) { // Ensure we have enough to bet
  94.        if (currentBet > (maximumBet * 100)) { // Ensure you only bet the maximum.
  95.        console.warn('[Warn] Bet size exceeds maximum bet, lowering bet to ' + (maximumBet * 100) + ' bits');
  96.        currentBet = maximumBet;
  97.        }
  98.        engine.placeBet(currentBet, Math.round(currentMultiplier * 100), false);
  99.        }
  100.        else { // Otherwise insufficent funds...
  101.        if (engine.getBalance() < 100) {
  102.        console.error('[Bot] Insufficent funds to do anything... stopping');
  103.        engine.stop();
  104.        }
  105.        else {
  106.        console.warn('[Bot] Insufficent funds to bet ' + (currentBet / 100) + ' bits.');
  107.        console.warn('[Bot] Resetting to 1 bit basebet');
  108.        baseBet = 1;
  109.        baseSatoshi = 100;
  110.        }
  111.        }
  112.  });
  113.  
  114.  engine.on('game_started', function(data) {
  115.      if (!firstGame) { console.log('[Bot] Game #' + currentGameID + ' has started!'); }
  116.  });
  117.  
  118.  engine.on('cashed_out', function(data) {
  119.      if (data.username == engine.getUsername()) {
  120.        console.log('[Bot] Successfully cashed out at ' + (data.stopped_at / 100) + 'x');
  121.        }
  122.  });
  123.  
  124.  engine.on('game_crash', function(data) {
  125.      if (!firstGame) { console.log('[Bot] Game crashed at ' + (data.game_crash / 100) + 'x'); }
  126.  });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement