-
-
Save BitChop/4aa67c01431d1e44978b85c7b1afc947 to your computer and use it in GitHub Desktop.
conservative bit acquisition mechanism
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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