Skip to content

Instantly share code, notes, and snippets.

@dsetzer
Last active June 27, 2024 10:39
Show Gist options
  • Save dsetzer/0f8b3dd214961d2e4c5965cfe3b5e588 to your computer and use it in GitHub Desktop.
Save dsetzer/0f8b3dd214961d2e4c5965cfe3b5e588 to your computer and use it in GitHub Desktop.
conservative bit acquisition mechanism
// Authors: beebo & HERPES
// tortoise.js - conservative bit acquisition mechanism
// version 2.0.1
// Usage of this script constitutes acceptance of the follow terms
// Copyright 2017 beebo & HERPES
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// This script is intended for entertainment & development purposes only, we are not responsbile for the end use case that may be employed.
/** * * START RISK CONFIGURATION * * */
// The initial bet that you want to make (in // bits), 4 is default
// RISK_LEVEL=1 ----> uses 1/1380th of your entire bankroll to make roughly a 6% return per hour // [This is VERY VERY safe, but VERY // VERY slow]
// RISK_LEVEL=2 ----> uses 1/345th of your entire bankroll to make roughly a 25% return per hour // [RECOMMENDED]
// RISK_LEVEL=4 ----> uses 1/89th of your entire bankroll to make roughly a 100% return per hour // [DEFAULT - Don't run this very long, you will lose // pretty quickly]
// RISK_LEVEL=3 ----> uses 1/22 of your entire bankroll to make roughly a 400% return per hour // [This will crap you out very quickly, // but it earns very rapidly]
var RISK_LEVEL = 4 // Set the risk level here
var variablebase = true; // set this to true if you wish to raise your base bet along with your winnings
// Understand that the higher the risk level, the greater chance for loss.
// There are no gurantees given as to any sustainable results that one may acquire from this script
// Use sparingly, and use wisely. Good luck to you.
/** * * FINISH RISK CONFIGURATION * * */
var initialbalance = engine.getBalance() / 100;
console.log('Initial Balance is ' + initialbalance + 'bits');
var baseBet = 0; // do not fucking touch this
harmonize_base_bet(RISK_LEVEL);
var initialbase = baseBet;
var gamesplayed = 0;
var riskregex = /(?:^|\s)setrisklevel\s(.*?)/g;
var riskres = riskregex.exec('setrisklevel 3');
console.log(riskres[1]);
console.log('[Bot]: The initial base bet is ' + initialbase + 'bits');
//Selly1.0
function harmonize_base_bet(TARGET_RISK_LEVEL) {
console.log('Using RISK_LEVEL of ' + TARGET_RISK_LEVEL);
var curbal = current_balanace_formatted();
switch (TARGET_RISK_LEVEL) {
case 1:
baseBet = curbal / 1380;
break;
case 2:
baseBet = curbal / 345;
break;
case 3:
baseBet = curbal / 89;
break;
case 4:
baseBet = curbal / 22;
break;
}
console.log('Calculated base bet is ' + baseBet);
if (baseBet < 1) {
baseBet = 1;
}
console.log('Actual base bet is ' + baseBet);
}
// So ryan doesn't fuck me
function dont_fuck_me_ryan() {
console.log(' ___________________ ');
console.log(' DONT FUCK ME RYAN ');
console.log(' ----------------- ');
console.log(' _ ');
console.log(' (_) ');
console.log(' \^__^ / \\ ');
console.log(' (oo)\_____/_\ \\ ');
console.log(' (__)\ ) / ');
console.log(' ||----w (( ');
console.log(' || ||>> ');
}
function shut_it_down_shut_it_all_down() {
console.log("Shutting it down!");
engine.stop();
}
var baseMultiplier = 1.17;
// Multiplier the bot starts at: 1.17 or lower
// recommended, don't be a hero
var variableBase = false;
// You probably want this on false unless you're
// an expert like my grandmother and myself,
// leave it on false
var streakSecurity = 5;
// The number of losses you want to survive
// without crapping out. Increasing this reduces
// the variableBase significantly thus giving you
// more survivability however there is a large
// decrease to the speed of which you generate
// bits. (1-loss = 20%, 2-loss = 5%, 3-
// loss =
// 1.25% of your maximum balance). Recommended:
// 2+ unless you're an idiot, 4+ is necessary if
// you want to run the bot for at least half an
// hour or so... 5+ will let you run for many
// many hours, if not days usually. Set the
// thing on 5+ if you want to run this for awhile
// and not crap out for a long long time.
var maximumBet = 999999;
// The max that the bot will bet of your
// bankroll before it stops (in bits). Feel free
// to lose some of it, or all, I don't care.
var percentageOfTotal = 100;
// The percentage of your total balance that you
// want the bot to spin. (100 = 100%).
var useCrashAverage = false;
// Enable editing current multiplier based on
// past 4 crash average. (Experimental!), it's best
// not to fuck with this.
var highAverage = 1.80;
// Average multiplier to use the
// highAverageMultiplier. Don't fuck with it
// unless you know what you're doing.
var highAverageMultiplier = 1.30;
// Multiplier to use when crash average is above
// highAverage. Don't fuck with it unless you
// know what you're doing.
var BustaBit = true;
// Did you win or lose? (I can tell by grabbing
// your username from the chart on the right!)
// Variables - Do not fuck with any of this
// below this line or I more than likely will bork!
// LEAVE IT ALONE!
var baseSatoshi = baseBet * 100;
var currentBet = baseSatoshi;
var currentMultiplier = baseMultiplier;
var currentGameID = -1;
var firstGame = true;
var lossStreak = 0;
var coolingDown = false;
var newdate = new Date();
var startTime = newdate.getTime();
var timeplaying = 0;
var takingBreak = false;
var takeBreaks = false;
// This is still under
// development, don't fuck with it. It doesn't
// work.
var lowAverage = 1.45;
var tempCrash;
var gameAverage;
var currentGame = 0;
var game1;
var game2;
var game3;
var game4;
var gamecount = 0;
var startingBalance = engine.getBalance();
// if (variableBase) {
// console.warn('[WARN] Variable mode is UNDER CONSTRUCTION STILL: This is how many rounds I will go for: ' + streakSecurity + '-loss streaks.');
// }
// Makes the bot ready for a round
engine.on('game_starting', start_game);
function start_game(info) {
console.log();
console.log('------------------------------');
console.log('[[[[[[ NEW GAME ]]]]]]');
console.log('[Bot] Game #' + info.game_id);
currentGameID = info.game_id;
if (game4 != null && useCrashAverage == true) {
gameAverage = (((game1 + game2) + (game3 + game4)) / 4);
console.log("[Bot] Average crash: " + gameAverage + "x");
} else {
gameAverage = 0;
}
if (coolingDown) {
if (lossStreak == 0) {
coolingDown = false;
} else {
lossStreak--;
console.log('[Bot] is fucking off [cooling down] for a sec! Rounds until I start again: ' + lossStreak);
return;
}
}
if (gameAverage <= lowAverage && takeBreaks == true && game4 != null) {
takingBreak = true;
console.log("The average return sucks so I'm taking a break this round!");
} else {
takingBreak = false;
}
if (!firstGame) {
// This shows data only after
// the first game so you don't get spammed to
// death in the console
console.log('[Stats] Session profit: ' + ((engine.getBalance() - startingBalance) / 100).toFixed(2) + ' bits in ' + Math.round(timeplaying) + ' minutes.');
console.log('[Stats] Profit percentage: ' + (((engine.getBalance() / startingBalance) - 1) * 100).toFixed(2) + '%');
}
if (firstGame == true) {
newdate = new Date();
timeplaying = ((newdate.getTime() - startTime) / 1000) / 60;
}
if (engine.lastGamePlay() == 'LOST' && !firstGame && takingBreak == false) { // If you // lose the spin:
lossStreak++;
var totalLosses = 0; // It tells you how // much you've lost
var lastLoss = currentBet; // Stores the // last bet amount
while (lastLoss >= baseSatoshi) {
// Before
// we reset to base bet, we have to calculate
// all bets
totalLosses += lastLoss;
lastLoss /= 4;
}
if (lossStreak > streakSecurity) {
// If you're losing your ass, why not take a break for a
// few rounds
coolingDown = true;
return;
}
currentBet *= 4;
// When you lose, the bot will
// multiply base bet by 4x and reset on win
// until you crap out
currentMultiplier = 1 + (totalLosses / currentBet);
} else {
// Oh shit you won the first game...
// fucking joy that's what we want every time
lossStreak = 0; // You won so I'm resetting your loss streak
currentMultiplier = baseMultiplier;
if (lossStreak == 0 && useCrashAverage == true && gameAverage != 0) {
if (gameAverage < highAverage) {
currentMultiplier = baseMultiplier;
}
if (gameAverage >= highAverage) {
currentMultiplier = highAverageMultiplier;
}
}
currentBet = baseSatoshi; // in Satoshi
}
var betinbits = currentBet / 100;
firstGame = false;
if (currentBet <= engine.getBalance() && takingBreak == false) { // Do we have enough to // bet
if (currentBet > (maximumBet * 100)) { // // Ensures you can bet up to the maximum
console.warn('[Warn] RIP: Bet size exceeds maximum bet, lowering bet to ' + (maximumBet * 100) + ' bits');
currentBet = maximumBet;
}
var currentbetrounded = Math.round(betinbits).toFixed(0) * 100;
var betformatted = currentbetrounded / 100;
betformatted = Math.floor(betformatted);
var basediffs = baseBet - initialbase;
var diffstring = '';
if (basediffs >= 0) {
diffstring = '[Bot] Our base bet is ' + baseBet + ' (Difference of +' + basediffs + 'bits from initial base bet)';
} else {
diffstring = '[Bot] Our base bet is ' + baseBet + ' (Difference of ' + basediffs + 'bits from initial base bet)';
}
var balpct = baseBet / initialbase;
balpct = balpct * 100;
console.log('[Bot] Gain/Loss This Session: ' + balpct + '%');
///;
console.log(diffstring);
console.log('[Bot] ' + betformatted + 'bits is currentbet, cashing out at ' + currentMultiplier + 'x');
// Skip every 101 games
if (info.game_id % 101 == 0) {
console.log('Skipping!');
} else {
engine.placeBet(currentbetrounded, Math.round(currentMultiplier * 100), false);
}
} else { // Otherwise insufficent funds... RIP
if (engine.getBalance() < 100) {
console.error('[Bot] Stopping... Motherfucker, I be too poor to keep going so you either have to lower your bet or unass the rape train! ');
engine.stop();
} else {
console.warn('[Bot] I be too poor for this shit my nizzle ' + (currentBet / 100) + ' bits.');
console.warn('[Bot] I be puttin yo broke ass back to 1 bit basebet, Motherfucker');
baseBet = 1;
baseSatoshi = 100;
}
}
}
// The game started oh shit here we go
engine.on('game_started', function (data) {
if (!firstGame) { console.log('[Bot] Game #' + currentGameID + ' has started! All aboard the rape train! '); }
});
// // Oh shit you won the bet lets cash that shit
// engine.on('cashed_out', function(data) {
// if(BustaBit == true){
// if (data.username == engine.getUsername()) {
// console.log('[Bot] English Motherfucker, YOU JUST SPOKE IT! ' + (data.stopped_at / 100) + 'x');
// }
// }
// });
// Oh fuck you lost, no more rape train for you!
engine.on('game_crash', game_over);
function game_over(data) {
// if(BustaBit == false){
// if () {
// console.log('[Bot] Your bitch ass just got ran over by the rape train at: ' + (data.stopped_at / 100) + 'x');
// }
// }
// var newbal = current_balanace_formatted();
if (variablebase == true) {
console.log('[Bot] Variable base is enabled - acquiring new basebet based on current balance...');
if (!firstGame) {
harmonize_base_bet(RISK_LEVEL);
console.log('[Bot] New basebet is ' + baseBet + 'bits');
baseSatoshi = baseBet * 100;
}
} else {
console.log("[Bot] Continuing to use initial base bet of " + baseBet + "bits");
}
if (engine.lastGamePlay() == 'LOST') {
dont_fuck_me_ryan();
}
if (!firstGame) {
console.log('[Bot] Game Multiplier: ' + data.game_crash / 100.0 + 'x');
}
newdate = new Date();
timeplaying = ((newdate.getTime() - startTime) / 1000) / 60;
currentGame++;
tempCrash = (data.game_crash / 100);
if (tempCrash >= 2.0) {
tempCrash = 2.0;
}
if (currentGame == 1) {
game1 = tempCrash;
} else if (currentGame == 2) {
game2 = tempCrash;
} else if (currentGame == 3) {
game3 = tempCrash;
} else if (currentGame == 4) {
game4 = tempCrash;
} else if (currentGame >= 5) {
currentGame = 1;
game1 = tempCrash;
}
console.log('[[[[[[ FINISH GAME ]]]]]]');
console.log('------------------------------');
gamesplayed++;
if (gamesplayed > 300 && gamesplayed < 500) {
RISK_LEVEL = 3;
console.log("setting risk level to 3 now");
} else if (gamesplayed > 500) {
RISK_LEVEL = 2;
console.log('Setting risk level to 2 now');
}
}
function current_balanace_formatted() {
return engine.getBalance() / 100;
}
function initialize() {
console.log('[[[[[[ DING DING DING DING ]]]]]]');
dont_fuck_me_ryan(); // so ryan doesn't fuck us
console.log('[[[[[[ Lets knock the nickels out of this motherfucker, Motherfucker!! ]]]]]]');
console.log('[Bot] My username is: ' + engine.getUsername());
console.log('Starting balance: ' + (engine.getBalance() / 100).toFixed(2) + ' bits');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment