Mariana_ Posted January 1, 2023 Share Posted January 1, 2023 On 12/22/2022 at 2:18 PM, Xcelibdjiwb said: Is it possible to change currency without stop bet first? Example : I bet with DAI, after meet stoploss then script change automaticly to use TRON for next bet Please help and guide from senior still no luck for this one. Why you want to change from one currency to other currency? Link to comment Share on other sites More sharing options...
Skele Posted January 1, 2023 Share Posted January 1, 2023 this one is easy if you are doing it clientside. Because of the sandboxed environment that the script runs in otherwise you will only have access to that properties and objects they expose for you which isn't much. ss.wallet.current = 'TRX' you are wrong here with the new update you can get 50 games from the sandboxed scripts. The only way to get the 2000 is from a client side script. Link to comment Share on other sites More sharing options...
Mariana_ Posted January 1, 2023 Share Posted January 1, 2023 (edited) 7 hours ago, Skele said: this one is easy if you are doing it clientside. Because of the sandboxed environment that the script runs in otherwise you will only have access to that properties and objects they expose for you which isn't much. ss.wallet.current = 'TRX' you are wrong here with the new update you can get 50 games from the sandboxed scripts. The only way to get the 2000 is from a client side script. FYI@Xcelibdjiwbskele solution work with injections. But will not work in bc box scripts. And also you can not use currency.currencyName - it only dislpay currency if you try currency.currencyName = "TRX" so it won't work Edited January 1, 2023 by Mariana__ 1 Link to comment Share on other sites More sharing options...
Cristian2 Posted January 26, 2023 Share Posted January 26, 2023 potreste scrivermi il pezzo di script per farlo stoppare non appena raggiunge una certa % di vincita rispetto al budget? Link to comment Share on other sites More sharing options...
timtamtgl Posted February 18, 2023 Share Posted February 18, 2023 @Skelehi sir can u make me script simple script martingale for hash dice condition after 10 time lose bet increase by x thanks if u appreciate it Link to comment Share on other sites More sharing options...
Penthesilea Posted March 20, 2023 Share Posted March 20, 2023 Using @Skelecrash script that was modified by @Bigmattyboywith some dialed in settings on hash dice. Awesome stuff. Big thanks guys for getting this out there. Link to comment Share on other sites More sharing options...
drliner187 Posted April 20, 2023 Share Posted April 20, 2023 On 12/9/2021 at 4:19 AM, Skele said: kind of lack luster. I have several scripts but one of main things i did was add better logging I also added a feature that after two losses in a row, it will pause until it sees at least 1 win. You sometimes miss a win on the 3rd game true. But i no longer have to deal with 13 game losing streaks. It will take two and then just wait it out for green pastures. I need to change my script back to straight amounts for better, currently i use a percentage of my bank roll for the bet and then this one is the typical double it on loss. I will post it in its own message var config = { betPercentage: { label: 'percentage of total coins to bet', value: 0.25, type: 'number' }, payout: { label: 'payout', value: 2, type: 'number' }, onLoseTitle: { label: 'On Lose', type: 'title' }, onLoss: { label: '', value: 'increase', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (loss multiplier)' } ] }, lossMultiplier: { label: 'loss multiplier', value: 2, type: 'number' }, onWinTitle: { label: 'On Win', type: 'title' }, onWin: { label: '', value: 'reset', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (win multiplier)' } ] }, winMultiplier: { label: 'win multiplier', value: 1, type: 'number' }, otherConditionsTitle: { label: 'Other Stopping Conditions', type: 'title' }, winGoalAmount: { label: 'Stop once you have made this much', value: currency.amount * 2, type: 'number' }, lossStopAmount: { label: 'Stop betting after losing this much without a win.', value: 0, type: 'number' }, otherConditionsTitle: { label: 'Experimentle Please Ignore', type: 'title' }, loggingLevel: { label: 'logging level', value: 'compact', type: 'radio', options: [{ value: 'info', label: 'info' }, { value: 'compact', label: 'compact' }, { value: 'verbose', label: 'verbose' } ] } }; // deleted input parameters var stop = 0; var lossesForBreak = 0; var roundsToBreakFor = 0; // end deleted parameters var totalWagers = 0; var netProfit = 0; var totalWins = 0; var totalLoses = 0; var longestWinStreak = 0; var longestLoseStreak = 0; var currentStreak = 0; var loseStreak = 0; var numberOfRoundsToSkip = 0; var currentBet = GetNewBaseBet(); var totalNumberOfGames = 0; var originalbalance = currency.amount; var runningbalance = currency.amount; var consequetiveLostBets = 0; var lossStopAmountVar = config.lossStopAmount.value; function main() { game.onBet = function () { // if we are set to skip rounds then do so. if (numberOfRoundsToSkip > 0) { numberOfRoundsToSkip -= 1; log.info('Skipping round to relax, and the next ' + numberOfRoundsToSkip + ' rounds.'); return; } else { if(totalNumberOfGames == 0) { // this is so we account for the first round. currentBet = GetNewBaseBet(); } if(loseStreak >= 2) { if(game.history[0].crash > 200) { loseStreak = 0; } else { log.info('Not betting until current loseStreak is over.'); return; } } log.info('Placed bet for the amount of ' + currentBet); game.bet(currentBet, config.payout.value).then(function (payout) { runningbalance -= currentBet; totalWagers += currentBet; totalNumberOfGames += 1; if (payout > 1) { var netwin = currentBet * config.payout.value - currentBet; consequetiveLostBets = 0; if(config.loggingLevel.value != 'compact') { LogMessage('We won a net profit of: ' + netwin.toFixed(8), 'success'); } netProfit += netwin; runningbalance += netwin + currentBet; if (loseStreak > 0) { loseStreak = 0; } currentStreak += 1; totalWins += 1; LogSummary('true', currentBet); if (config.onWin.value === 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.winMultiplier.value; } LogMessage('We won, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'success'); } else { log.error('We lost a net amount of: ' + currentBet.toFixed(8)); netProfit -= currentBet; loseStreak += 1; currentStreak = 0; totalLoses += 1; consequetiveLostBets += currentBet; LogSummary('false', currentBet); if (config.onLoss.value == 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.lossMultiplier.value; } LogMessage('We lost, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'failure'); } if (currentStreak > longestWinStreak) { longestWinStreak = currentStreak; } if (loseStreak > longestLoseStreak) { longestLoseStreak = loseStreak; } recordStats(); if (config.winGoalAmount.value != 0 && netProfit > config.winGoalAmount.value) { // we have earned enough stop and quit. log.success('The net profits ' + netProfit.toFixed(8) + ' which triggers stop the for making enough.'); game.stop(); } if (lossStopAmountVar != 0 && consequetiveLostBets > (lossStopAmountVar)) { // the point of this is to limit the bleed so you don't loose too much. log.error('The net profits ' + netProfit.toFixed(8) + ' which triggers stop for losing enough. The next bet would be ' + currentBet.toFixed(8) + '.'); game.stop(); } } ); } }; } function recordStats() { if (config.loggingLevel.value != 'compact') { LogMessage('total wagers: ' + totalWagers.toFixed(8), 'info'); LogMessage('Net Profit: ' + netProfit.toFixed(8), 'info'); LogMessage('Current win streak: ' + currentStreak, 'info'); LogMessage('Current Lose streak: ' + loseStreak, 'info'); LogMessage('Total wins: ' + totalWins, 'info'); LogMessage('Total Losses: ' + totalLoses, 'info'); LogMessage('Longest win streak: ' + longestWinStreak, 'info'); LogMessage('Longest lose streak: ' + longestLoseStreak, 'info'); } } function GetNewBaseBet() { var returnValue = 0; returnValue = runningbalance * (config.betPercentage.value / 100); if(returnValue > currency.minAmount) { LogMessage('Recalculating base bet to ' + returnValue.toFixed(8) + ' which is ' + config.betPercentage.value + ' percent of ' + runningbalance.toFixed(8), 'info'); } else { LogMessage('The recalculated bet amount ' + returnValue.toFixed(8) + ' is lower than the minimum allowed bet. Setting bet to the minimum allowable amount of ' + currency.minAmount, 'info'); returnValue = currency.minAmount; } return returnValue; } function LogSummary(wasWinner, betAmount) { if (config.loggingLevel.value == 'compact') { if (wasWinner == 'true') { var winAmount = (betAmount * config.payout.value) - betAmount; log.success('Winner!! You won ' + winAmount.toFixed(8)); } else { log.error('Loser!! You lost ' + betAmount.toFixed(8)); } var winPercentage = (totalWins / totalNumberOfGames) * 100; var losePercentage = (totalLoses / totalNumberOfGames) * 100; log.info('Total Games: ' + totalNumberOfGames); log.info('Wins: ' + totalWins + '(' + winPercentage.toFixed(2) + ' % )'); log.info('Loses: ' + totalLoses + '(' + losePercentage.toFixed(2) + ' % )'); var netNumber = runningbalance - originalbalance; var netPecentage = (netNumber / originalbalance) * 100; if (originalbalance < runningbalance) { log.success('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } else { log.error('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } } } /// Determines whether or not to log an event or not to make it easier later function LogMessage(message, loggingLevel) { if (message) { if (config.loggingLevel.value != 'compact') { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'info': log.info(message); break; case 'compact': break; case 'verbose': if (isVerbose) log.info(message); break; } } else { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'compact': log.info(message); break; case 'info': break; case 'verbose': break; } } } } I on average double up every few hours with this, but there are times where it goes into a run away nose dive so i don't leave it unattended without a stop loss amount set. But that stop loss is calculated from the last win and not from the session so it will stop before it eats all of the profits away. nice script (Stop betting after losing this much without a win.) is not working with me and it is happened many times that i have 10 loses or more , one green and 2 reds for 7 times in row any chance to get stop loss enabled ? thanks so much Link to comment Share on other sites More sharing options...
8RifFer Posted May 7, 2023 Share Posted May 7, 2023 Cripey Link to comment Share on other sites More sharing options...
ShuiBacca Posted May 25, 2023 Share Posted May 25, 2023 Are the UI parameters working properly for you guys? Link to comment Share on other sites More sharing options...
yeshwanth111 Posted July 12, 2023 Share Posted July 12, 2023 Can someone write a script where the script will not start until 10 consecutive <2 odds? please? Link to comment Share on other sites More sharing options...
FunnDonn Posted November 6, 2023 Share Posted November 6, 2023 (edited) On 12/6/2021 at 4:26 AM, Dinscore said: // The Cookie Monster script. // created by Cookie High <-- Loves tips // This script gives you multiple options for both your bets and your payouts on both wins and losses. // Play around with the settings and find what works for you best. // // The defaults settings are the ones I am useing. I have ran it for 5 days. // I have an average daily return of 3.96%. I notice the days where my win percentage is lower I have retuns // closer to 5%. // // Don't bet more than you can lose. With a 2.1% payout my minimum bet can be doubled 20 times before I go // broke. The longes losing streak I have seen is 13. Give your self plenty of room and you are less likely // to loss it all. // // Bot safely and go make some money!!! // Dont forget to friend and tip me. var config = { scriptTitle: {label: 'This script was compiled by Cookie High. Tips are greatly apprciated! Now go make it rain!', type: 'title'}, baseBet: {label: 'Starting Bet:', value: currency.minAmount, type: 'number'}, maxBet: {label: 'Maximum Bet:', value: 10000, type: 'number'}, minBet: {label: 'Minimum Bet:', value: 0, type: 'number'}, stopBet: {label: 'Stop if Bet is Greater Than:', value: 1e8, type: 'number'}, basePayout: {label: 'Starting Payout:', value: 2.1, type: 'number'}, maxPayout: {label: 'Maximum Payout:', value: 10, type: 'number'}, minPayout: {label: 'Minimum Payout:', value: 2, type: 'number'}, stopPayout: {label: 'Stop if Payout is Greater Than:', value: 1e8, type: 'number'}, winRepeat: {label: 'Reset After Win Streak of:', value: 2, type: 'number'}, onBetLossTitle: {label: 'Loss Bet Settings', type: 'title'}, onBetLoss: {label: '', value: '3', type: 'radio', options: [ {value: '0', label: 'Return to Starting Bet'}, {value: '1', label: 'Add to Bet'}, {value: '2', label: 'Subtract From Bet'}, {value: '3', label: 'Multiply Bet By'}, {value: '4', label: 'Divide Bet By'} ] }, addBetLoss: { label: 'Increase Bet By:', value: 0, type: 'number' }, subBetLoss: { label: 'Decrease Bet By:', value: 0, type: 'number' }, mulBetLoss: { label: 'Multiply Bet By:', value: 2, type: 'number' }, divBetLoss: { label: 'Divide Bet By:', value: 1, type: 'number' }, onPayoutLossTitle :{label: 'Loss Payout Settings', type: 'title'}, onPayoutLoss: {label: '', value: '0', type: 'radio', options: [ {value: '0', label: 'Return to Starting Payout'}, {value: '1', label: 'Add to Payout'}, {value: '2', label: 'Subtract From Payout'}, {value: '3', label: 'Multiply Payout By'}, {value: '4', label: 'Divide Payout By'} ] }, addPayoutLoss: { label: 'Increase Payout By:', value: 0, type: 'number' }, subPayoutLoss: { label: 'Decrease Payout By:', value: 0, type: 'number' }, mulPayoutLoss: { label: 'Multiply Payout By:', value: 1, type: 'number' }, divPayoutLoss: { label: 'Divide Payout By:', value: 1, type: 'number' }, onBetWinTitle: {label: 'Win Bet Settings', type: 'title'}, onBetWin: {label: '', value: '0', type: 'radio', options: [ {value: '0', label: 'Return to Starting Bet'}, {value: '1', label: 'Add to Bet'}, {value: '2', label: 'Subtract From Bet'}, {value: '3', label: 'Multiply Bet By'}, {value: '4', label: 'Divide Bet By'} ] }, addBetWin: { label: 'Increase Bet By:', value: 0, type: 'number' }, subBetWin: { label: 'Decrease Bet By:', value: 0, type: 'number' }, mulBetWin: { label: 'Multiply Bet By:', value: 1, type: 'number' }, divBetWin: { label: 'Divide Bet By:', value: 1, type: 'number' }, onPayoutWinTitle :{label: 'Win Payout Settings', type: 'title'}, onPayoutWin: {label: '', value: '3', type: 'radio', options: [ {value: '0', label: 'Return to Starting Payout'}, {value: '1', label: 'Add to Payout'}, {value: '2', label: 'Subtract From Payout'}, {value: '3', label: 'Multiply Payout By'}, {value: '4', label: 'Divide Payout By'} ] }, addPayoutWin: { label: 'Increase Payout By:', value: 0, type: 'number' }, subPayoutWin: { label: 'Decrease Payout By:', value: 0, type: 'number' }, mulPayoutWin: { label: 'Multiply Payout By:', value: 2, type: 'number' }, divPayoutWin: { label: 'Divide Payout By:', value: 1, type: 'number' }, } function main (){ var baseBet = config.baseBet.value; var maxBet = config.maxBet.value; var minBet = config.maxBet.value; var basePayout = config.minPayout.value; var maxPayout = config.maxPayout.value; var minPayout = config.minPayout.value; var currentBet = config.baseBet.value; var currentPayout = config.basePayout.value; var onBetWin = config.onBetWin.value; var addBetWin = config.addBetWin.value; var subBetWin = config.subBetWin.value; var mulBetWin = config.mulBetWin.value; var divBetWin = config.divBetWin.value; var onPayoutWin = config.onPayoutWin.value; var addPayoutWin = config.addPayoutWin.value; var subPayoutWin = config.subPayoutWin.value; var mulPayoutWin = config.mulPayoutWin.value; var divPayoutWin = config.divPayoutWin.value; var onBetLoss = config.onBetLoss.value; var addBetLoss = config.addBetLoss.value; var subBetLoss = config.subBetLoss.value; var mulBetLoss = config.mulBetLoss.value; var divBetLoss = config.divBetLoss.value; var onPayoutLoss = config.onPayoutLoss.value; var addPayoutLoss = config.addPayoutLoss.value; var subPayoutLoss = config.subPayoutLoss.value; var mulPayoutLoss = config.mulPayoutLoss.value; var divPayoutLoss = config.divPayoutLoss.value; var stopPayout = config.stopPayout.value; var stopBet = config.stopBet.value; var winRepeatCount = config.winRepeat.value var winRepeatSet = 1 var winRepProvision = 0 var gameStatus = 1 var gameCounter = 1 game.onBet = function () { log.success('Placing Bet For: ' + currentBet + ', At Payout: '+ currentPayout) game.bet(currentBet, currentPayout).then(function (payout) {if (payout > 1) {if(!gameStatus) {counterReset(true)} log.success('Winner, Winner, Chicken Dinner!') gameStarter(onBetWinSwitch(onBetWin),onPayoutWinSwitch(onPayoutWin)) } else {if(gameStatus) {gameStatus--} winRepCountReset(true) log.error('We lost that one.') gameStarter(onBetLossSwitch(onBetLoss),onPayoutLossSwitch(onPayoutLoss)) gameCounter++ } }) function gameStarter(calculatedBet, calculatedPayout) {if (currentBet > stopBet) {log.error('The bot was stopped because the max bet was reached!'); game.stop();} else if (currentPayout > stopPayout) {log.error('The bot was stopped because the max payout was reached!'); game.stop();} currentBet = calculatedBet currentPayout = calculatedPayout } function onBetWinSwitch (switchValue) {switch(switchValue) {case '0': return baseBet break; case '1': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return baseBet } else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentBet + (addBetWin) > maxBet) {return maxBet, log.error('Maximum bet reached!')} else return currentBet + (addBetWin) } } } else {return baseBet} break; case '2': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return baseBet} else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentBet - (subBetWin) < minBet) {return minBet, log.error('Minimum bet reached!')} else return currentBet - (subBetWin) } } } else {return baseBet} break; case '3': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return baseBet} else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentBet * (mulBetWin) > maxBet) {return maxBet, log.error('Maximum bet reached!')} else return currentBet * (mulBetWin) } } } else {return baseBet} break; case '4': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return baseBet} else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentBet / (divBetWin) < minBet) {return minBet, log.error('Minimum bet reached!')} else return currentBet / (divBetWin) } } } else {return baseBet} break; } } function onPayoutWinSwitch (switchValue) {switch(switchValue) {case '0': return basePayout break; case '1': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return basePayout } else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentPayout + (addPayoutWin) > maxPayout) {return maxPayout, log.error('Maximum payout reached!')} else return currentPayout + (addPayoutWin) } } } else {return basePayout} break; case '2': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return basePayout} else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentPayout - (subPayoutWin) < minPayout) {return minPayout, log.error('Minimum payout reached!')} else return currentPayout - (subPayoutWin) } } } else {return basePayout} break; case '3': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return basePayout} else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentPayout * (mulPayoutWin) > maxPayout) {return maxPayout, log.error('Maximum payout reached!')} else return currentPayout * (mulPayoutWin) } } } case '4': if(!gameStatus) {if(!winRepeatCount) {gameStatus++ winRepCountReset(true) return basePayout} else {winRepeatCount-- winRepProvision++ winRepeatSet-- {if (currentPayout / (divPayoutWin) < minPayout) {return minPayout, log.error('Minimum payout reached!')} else return currentPayout / (divPayoutWin) } } } else {return basePayout} break; } }} function onBetLossSwitch (switchValue) {switch(switchValue) {case '0': return baseBet break; case '1': {if (currentBet + (addBetLoss) > maxBet) {return maxBet, log.error('Maximum bet reached!')} else return currentBet + (addBetLoss)} break; case '2': {if (currentBet - (subBetLoss) < minBet) {return minBet, log.error('Minimum bet reached!')} else return currentBet - (subBetLoss)} break; case '3': {if (currentBet * (mulBetLoss) > maxBet) {return maxBet, log.error('Maximum bet reached!')} else return currentBet * (mulBetLoss)} break; case '4': {if (currentBet / (divBetLoss) < minBet) {return minBet, log.error('Minimum bet reached!')} else return currentBet / (divBetLoss)} break; } } function onPayoutLossSwitch (switchValue) {switch(switchValue) {case '0': return basePayout break; case '1': {if (currentPayout + (addPayoutLoss) > maxPayout) {return maxPayout, log.error('Maximum payout reached!')} else return currentPayout + (addPayoutLoss)} break; case '2': {if (currentPayout - (subPayoutLoss) < minPayout) {return minPayout, log.error('Minimum payout reached!')} else return currentPayout - (subPayoutLoss)} break; case '3': {if (currentPayout * (mulPayoutLoss) > maxPayout) {return maxPayout, log.error('Maximum payout reached!')} else return currentPayout * (mulPayoutLoss)} break; case '4': {if (currentPayout / (divPayoutLoss) < minPayout) {return minPayout , log.error('Minimum payout reached!')} else return currentPayout / (divPayoutLoss)} break; } } function counterReset(itsZero) {if(itsZero) {gameCounter-- if(!gameCounter) {gameCounter++ return} counterReset(true) } } function winRepCountReset(itsZero) {if(!winRepProvision) {return} if(itsZero) {winRepeatCount++ winRepProvision-- if(!winRepProvision) {return} winRepCountReset(true) } } } Hi, Great script, thanks for sharing here. Edited June 8 by FunnDonn Link to comment Share on other sites More sharing options...
KrishBCG Posted November 18, 2023 Share Posted November 18, 2023 On 12/9/2021 at 8:49 AM, Skele said: kind of lack luster. I have several scripts but one of main things i did was add better logging I also added a feature that after two losses in a row, it will pause until it sees at least 1 win. You sometimes miss a win on the 3rd game true. But i no longer have to deal with 13 game losing streaks. It will take two and then just wait it out for green pastures. I need to change my script back to straight amounts for better, currently i use a percentage of my bank roll for the bet and then this one is the typical double it on loss. I will post it in its own message var config = { betPercentage: { label: 'percentage of total coins to bet', value: 0.25, type: 'number' }, payout: { label: 'payout', value: 2, type: 'number' }, onLoseTitle: { label: 'On Lose', type: 'title' }, onLoss: { label: '', value: 'increase', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (loss multiplier)' } ] }, lossMultiplier: { label: 'loss multiplier', value: 2, type: 'number' }, onWinTitle: { label: 'On Win', type: 'title' }, onWin: { label: '', value: 'reset', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (win multiplier)' } ] }, winMultiplier: { label: 'win multiplier', value: 1, type: 'number' }, otherConditionsTitle: { label: 'Other Stopping Conditions', type: 'title' }, winGoalAmount: { label: 'Stop once you have made this much', value: currency.amount * 2, type: 'number' }, lossStopAmount: { label: 'Stop betting after losing this much without a win.', value: 0, type: 'number' }, otherConditionsTitle: { label: 'Experimentle Please Ignore', type: 'title' }, loggingLevel: { label: 'logging level', value: 'compact', type: 'radio', options: [{ value: 'info', label: 'info' }, { value: 'compact', label: 'compact' }, { value: 'verbose', label: 'verbose' } ] } }; // deleted input parameters var stop = 0; var lossesForBreak = 0; var roundsToBreakFor = 0; // end deleted parameters var totalWagers = 0; var netProfit = 0; var totalWins = 0; var totalLoses = 0; var longestWinStreak = 0; var longestLoseStreak = 0; var currentStreak = 0; var loseStreak = 0; var numberOfRoundsToSkip = 0; var currentBet = GetNewBaseBet(); var totalNumberOfGames = 0; var originalbalance = currency.amount; var runningbalance = currency.amount; var consequetiveLostBets = 0; var lossStopAmountVar = config.lossStopAmount.value; function main() { game.onBet = function () { // if we are set to skip rounds then do so. if (numberOfRoundsToSkip > 0) { numberOfRoundsToSkip -= 1; log.info('Skipping round to relax, and the next ' + numberOfRoundsToSkip + ' rounds.'); return; } else { if(totalNumberOfGames == 0) { // this is so we account for the first round. currentBet = GetNewBaseBet(); } if(loseStreak >= 2) { if(game.history[0].crash > 200) { loseStreak = 0; } else { log.info('Not betting until current loseStreak is over.'); return; } } log.info('Placed bet for the amount of ' + currentBet); game.bet(currentBet, config.payout.value).then(function (payout) { runningbalance -= currentBet; totalWagers += currentBet; totalNumberOfGames += 1; if (payout > 1) { var netwin = currentBet * config.payout.value - currentBet; consequetiveLostBets = 0; if(config.loggingLevel.value != 'compact') { LogMessage('We won a net profit of: ' + netwin.toFixed(8), 'success'); } netProfit += netwin; runningbalance += netwin + currentBet; if (loseStreak > 0) { loseStreak = 0; } currentStreak += 1; totalWins += 1; LogSummary('true', currentBet); if (config.onWin.value === 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.winMultiplier.value; } LogMessage('We won, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'success'); } else { log.error('We lost a net amount of: ' + currentBet.toFixed(8)); netProfit -= currentBet; loseStreak += 1; currentStreak = 0; totalLoses += 1; consequetiveLostBets += currentBet; LogSummary('false', currentBet); if (config.onLoss.value == 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.lossMultiplier.value; } LogMessage('We lost, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'failure'); } if (currentStreak > longestWinStreak) { longestWinStreak = currentStreak; } if (loseStreak > longestLoseStreak) { longestLoseStreak = loseStreak; } recordStats(); if (config.winGoalAmount.value != 0 && netProfit > config.winGoalAmount.value) { // we have earned enough stop and quit. log.success('The net profits ' + netProfit.toFixed(8) + ' which triggers stop the for making enough.'); game.stop(); } if (lossStopAmountVar != 0 && consequetiveLostBets > (lossStopAmountVar)) { // the point of this is to limit the bleed so you don't loose too much. log.error('The net profits ' + netProfit.toFixed(8) + ' which triggers stop for losing enough. The next bet would be ' + currentBet.toFixed(8) + '.'); game.stop(); } } ); } }; } function recordStats() { if (config.loggingLevel.value != 'compact') { LogMessage('total wagers: ' + totalWagers.toFixed(8), 'info'); LogMessage('Net Profit: ' + netProfit.toFixed(8), 'info'); LogMessage('Current win streak: ' + currentStreak, 'info'); LogMessage('Current Lose streak: ' + loseStreak, 'info'); LogMessage('Total wins: ' + totalWins, 'info'); LogMessage('Total Losses: ' + totalLoses, 'info'); LogMessage('Longest win streak: ' + longestWinStreak, 'info'); LogMessage('Longest lose streak: ' + longestLoseStreak, 'info'); } } function GetNewBaseBet() { var returnValue = 0; returnValue = runningbalance * (config.betPercentage.value / 100); if(returnValue > currency.minAmount) { LogMessage('Recalculating base bet to ' + returnValue.toFixed(8) + ' which is ' + config.betPercentage.value + ' percent of ' + runningbalance.toFixed(8), 'info'); } else { LogMessage('The recalculated bet amount ' + returnValue.toFixed(8) + ' is lower than the minimum allowed bet. Setting bet to the minimum allowable amount of ' + currency.minAmount, 'info'); returnValue = currency.minAmount; } return returnValue; } function LogSummary(wasWinner, betAmount) { if (config.loggingLevel.value == 'compact') { if (wasWinner == 'true') { var winAmount = (betAmount * config.payout.value) - betAmount; log.success('Winner!! You won ' + winAmount.toFixed(8)); } else { log.error('Loser!! You lost ' + betAmount.toFixed(8)); } var winPercentage = (totalWins / totalNumberOfGames) * 100; var losePercentage = (totalLoses / totalNumberOfGames) * 100; log.info('Total Games: ' + totalNumberOfGames); log.info('Wins: ' + totalWins + '(' + winPercentage.toFixed(2) + ' % )'); log.info('Loses: ' + totalLoses + '(' + losePercentage.toFixed(2) + ' % )'); var netNumber = runningbalance - originalbalance; var netPecentage = (netNumber / originalbalance) * 100; if (originalbalance < runningbalance) { log.success('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } else { log.error('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } } } /// Determines whether or not to log an event or not to make it easier later function LogMessage(message, loggingLevel) { if (message) { if (config.loggingLevel.value != 'compact') { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'info': log.info(message); break; case 'compact': break; case 'verbose': if (isVerbose) log.info(message); break; } } else { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'compact': log.info(message); break; case 'info': break; case 'verbose': break; } } } } I on average double up every few hours with this, but there are times where it goes into a run away nose dive so i don't leave it unattended without a stop loss amount set. But that stop loss is calculated from the last win and not from the session so it will stop before it eats all of the profits away. Thanks for the great script @Skele, Could you please add one more function to this script 2nd payout like below script var config = { baseBet: { label: "Base Bet", value: currency.minAmount, type: "number" }, basePayout: { label: "Base Payout", value: 2, type: "number" }, newPayout: { label: "New Payout", value: 1.25, type: "number" }, stop: { label: "Stop If Next Bet >", value: 1e8, type: "number" }, onLoseTitle: { label: "On Lose", type: "title" }, onLoss: { label: "", value: "increase", type: "radio", options: [ { value: "increase", label: "Increase bet by (loss multiplier)" }, ], }, lossMultiplier: { label: "loss multiplier", value: 6, type: "number" }, onWinTitle: { label: "On Win", type: "title" }, onWin: { label: "", value: "reset", type: "radio", options: [ { value: "reset", label: "Return to base bet" }, ], }, }; function main() { var currentBet = config.baseBet.value; var currentPayout = config.basePayout.value; game.onBet = function () { game.bet(currentBet, currentPayout).then(function (payout) { if (payout > 1) { if (config.onWin.value === "reset") { currentBet = config.baseBet.value; currentPayout = config. basePayout.value; } log.success( "We won payout " + " " +currentPayout + "X " + "so next bet will be " + currentBet + " " + currency.currencyName ); } else { if (config.onLoss.value === "reset") { currentBet = config.baseBet.value; currentPayout = config.basePayout.value; } else { currentBet *= config.lossMultiplier.value; currentPayout = config.newPayout.value; } log.error( "We lost payout " + " " +currentPayout + "X " + "so next bet will be " + currentBet + " " + currency.currencyName ); } if (currentBet > config.stop.value) { log.error( "Was about to bet " + currentBet + " which triggers the stop" ); game.stop(); } }); }; } Link to comment Share on other sites More sharing options...
FunnDonn Posted November 29, 2023 Share Posted November 29, 2023 (edited) On 12/9/2021 at 8:49 AM, Skele said: kind of lack luster. I have several scripts but one of main things i did was add better logging I also added a feature that after two losses in a row, it will pause until it sees at least 1 win. You sometimes miss a win on the 3rd game true. But i no longer have to deal with 13 game losing streaks. It will take two and then just wait it out for green pastures. I need to change my script back to straight amounts for better, currently i use a percentage of my bank roll for the bet and then this one is the typical double it on loss. I will post it in its own message var config = { betPercentage: { label: 'percentage of total coins to bet', value: 0.25, type: 'number' }, payout: { label: 'payout', value: 2, type: 'number' }, onLoseTitle: { label: 'On Lose', type: 'title' }, onLoss: { label: '', value: 'increase', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (loss multiplier)' } ] }, lossMultiplier: { label: 'loss multiplier', value: 2, type: 'number' }, onWinTitle: { label: 'On Win', type: 'title' }, onWin: { label: '', value: 'reset', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (win multiplier)' } ] }, winMultiplier: { label: 'win multiplier', value: 1, type: 'number' }, otherConditionsTitle: { label: 'Other Stopping Conditions', type: 'title' }, winGoalAmount: { label: 'Stop once you have made this much', value: currency.amount * 2, type: 'number' }, lossStopAmount: { label: 'Stop betting after losing this much without a win.', value: 0, type: 'number' }, otherConditionsTitle: { label: 'Experimentle Please Ignore', type: 'title' }, loggingLevel: { label: 'logging level', value: 'compact', type: 'radio', options: [{ value: 'info', label: 'info' }, { value: 'compact', label: 'compact' }, { value: 'verbose', label: 'verbose' } ] } }; // deleted input parameters var stop = 0; var lossesForBreak = 0; var roundsToBreakFor = 0; // end deleted parameters var totalWagers = 0; var netProfit = 0; var totalWins = 0; var totalLoses = 0; var longestWinStreak = 0; var longestLoseStreak = 0; var currentStreak = 0; var loseStreak = 0; var numberOfRoundsToSkip = 0; var currentBet = GetNewBaseBet(); var totalNumberOfGames = 0; var originalbalance = currency.amount; var runningbalance = currency.amount; var consequetiveLostBets = 0; var lossStopAmountVar = config.lossStopAmount.value; function main() { game.onBet = function () { // if we are set to skip rounds then do so. if (numberOfRoundsToSkip > 0) { numberOfRoundsToSkip -= 1; log.info('Skipping round to relax, and the next ' + numberOfRoundsToSkip + ' rounds.'); return; } else { if(totalNumberOfGames == 0) { // this is so we account for the first round. currentBet = GetNewBaseBet(); } if(loseStreak >= 2) { if(game.history[0].crash > 200) { loseStreak = 0; } else { log.info('Not betting until current loseStreak is over.'); return; } } log.info('Placed bet for the amount of ' + currentBet); game.bet(currentBet, config.payout.value).then(function (payout) { runningbalance -= currentBet; totalWagers += currentBet; totalNumberOfGames += 1; if (payout > 1) { var netwin = currentBet * config.payout.value - currentBet; consequetiveLostBets = 0; if(config.loggingLevel.value != 'compact') { LogMessage('We won a net profit of: ' + netwin.toFixed(8), 'success'); } netProfit += netwin; runningbalance += netwin + currentBet; if (loseStreak > 0) { loseStreak = 0; } currentStreak += 1; totalWins += 1; LogSummary('true', currentBet); if (config.onWin.value === 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.winMultiplier.value; } LogMessage('We won, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'success'); } else { log.error('We lost a net amount of: ' + currentBet.toFixed(8)); netProfit -= currentBet; loseStreak += 1; currentStreak = 0; totalLoses += 1; consequetiveLostBets += currentBet; LogSummary('false', currentBet); if (config.onLoss.value == 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.lossMultiplier.value; } LogMessage('We lost, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'failure'); } if (currentStreak > longestWinStreak) { longestWinStreak = currentStreak; } if (loseStreak > longestLoseStreak) { longestLoseStreak = loseStreak; } recordStats(); if (config.winGoalAmount.value != 0 && netProfit > config.winGoalAmount.value) { // we have earned enough stop and quit. log.success('The net profits ' + netProfit.toFixed(8) + ' which triggers stop the for making enough.'); game.stop(); } if (lossStopAmountVar != 0 && consequetiveLostBets > (lossStopAmountVar)) { // the point of this is to limit the bleed so you don't loose too much. log.error('The net profits ' + netProfit.toFixed(8) + ' which triggers stop for losing enough. The next bet would be ' + currentBet.toFixed(8) + '.'); game.stop(); } } ); } }; } function recordStats() { if (config.loggingLevel.value != 'compact') { LogMessage('total wagers: ' + totalWagers.toFixed(8), 'info'); LogMessage('Net Profit: ' + netProfit.toFixed(8), 'info'); LogMessage('Current win streak: ' + currentStreak, 'info'); LogMessage('Current Lose streak: ' + loseStreak, 'info'); LogMessage('Total wins: ' + totalWins, 'info'); LogMessage('Total Losses: ' + totalLoses, 'info'); LogMessage('Longest win streak: ' + longestWinStreak, 'info'); LogMessage('Longest lose streak: ' + longestLoseStreak, 'info'); } } function GetNewBaseBet() { var returnValue = 0; returnValue = runningbalance * (config.betPercentage.value / 100); if(returnValue > currency.minAmount) { LogMessage('Recalculating base bet to ' + returnValue.toFixed(8) + ' which is ' + config.betPercentage.value + ' percent of ' + runningbalance.toFixed(8), 'info'); } else { LogMessage('The recalculated bet amount ' + returnValue.toFixed(8) + ' is lower than the minimum allowed bet. Setting bet to the minimum allowable amount of ' + currency.minAmount, 'info'); returnValue = currency.minAmount; } return returnValue; } function LogSummary(wasWinner, betAmount) { if (config.loggingLevel.value == 'compact') { if (wasWinner == 'true') { var winAmount = (betAmount * config.payout.value) - betAmount; log.success('Winner!! You won ' + winAmount.toFixed(8)); } else { log.error('Loser!! You lost ' + betAmount.toFixed(8)); } var winPercentage = (totalWins / totalNumberOfGames) * 100; var losePercentage = (totalLoses / totalNumberOfGames) * 100; log.info('Total Games: ' + totalNumberOfGames); log.info('Wins: ' + totalWins + '(' + winPercentage.toFixed(2) + ' % )'); log.info('Loses: ' + totalLoses + '(' + losePercentage.toFixed(2) + ' % )'); var netNumber = runningbalance - originalbalance; var netPecentage = (netNumber / originalbalance) * 100; if (originalbalance < runningbalance) { log.success('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } else { log.error('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } } } /// Determines whether or not to log an event or not to make it easier later function LogMessage(message, loggingLevel) { if (message) { if (config.loggingLevel.value != 'compact') { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'info': log.info(message); break; case 'compact': break; case 'verbose': if (isVerbose) log.info(message); break; } } else { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'compact': log.info(message); break; case 'info': break; case 'verbose': break; } } } } I on average double up every few hours with this, but there are times where it goes into a run away nose dive so i don't leave it unattended without a stop loss amount set. But that stop loss is calculated from the last win and not from the session so it will stop before it eats all of the profits away. @Skele Excellent script. Edited June 3 by Simbham Link to comment Share on other sites More sharing options...
Wrrmrbuufpac Posted May 10 Share Posted May 10 Bc gem cres ka hak app Link to comment Share on other sites More sharing options...
Impenia Posted August 18 Share Posted August 18 On 3/4/2022 at 2:39 AM, Jamiekson said: So there actually is a way to take Nubz' Smart Script and make it start with a history of 2000 instead of 10 or 20?? If so, do you think you could help me with that?? BTW.. I've gotten Nubz Script working and functioning properly if anybody is interested. It no longer keeps growing uncontrollably. Now it returns to basebet once your running-balance reaches the previous all-time-high, and the basebet updates every 100 rounds. Were you able to get the 2000 history. I'd be interested in seeing how you did it. @Skele, please help. Link to comment Share on other sites More sharing options...
Impenia Posted August 19 Share Posted August 19 On 2/24/2022 at 9:22 PM, Skele said: Just so you know if you want the longer history of the game results, if you inject javascript into the main page you can get that no problem, it will only give you the last 2000 games though. You can also get what everyone else is betting that way if you want to write a script that owuld place bets following a particular user. In this same way it would not be hard to rewrite the scripts to play all from the front end like that as they do expose a way to place bests from here as well. Useing the scripting framework i imagine had two different goals in mind. First to make it easier for people who don't know how to auomate web tech in general. And second to be able to control how long and what kind of scripts are ran. I stopped sharing mine widely after realizing that they first will change the beahvior of the games after about 24-48 hours to start matching and defeating your specific strategy, etc... I saw people asking for this script to skip games or do safety rolls. The most successful scripts i have found is the first one i grab configurable random numbers in a range for (number of losses before i skip games because of a loosing streak (generally 2 or 3 games though). how many winning game to see before i bet again (i had to make this more than 1 like i originally had it because i would see after about 24 hours all of a sudden there were very long streaks of LLWLLWLLW just enough losses to get me to sit out on a game that was a win which would trigger me to start betting again. the other script that has actually done nicely for me is just betting a single game with a large bit and low payout like 25% of my bank roll at 1.1x, and doing so an random intervals, like 1 game then skip 0-10 games depending on the random roll. This last approach was the closest i would really get to ensure there was no real pattern for the system to grab and start using against me. if you want crash history you can use this command in the dev console window you can use crash.history. History in this case is a 2000 element array. If you want information on other players and their betting you can get that here crash.playersDict which is a dictionary keyed on playerid with their betting status for the upcoming game. The game or engine object that you have access to in the normal scripts, is just a subset of what is in the crash object in this case, or lbg for limbo, or hdg for hashdice. I have limited coding knowledge. Is it possible to use the scripting framework to get the last 2000 games of Crash? If so, do you mind sharing the code. Thank you. Link to comment Share on other sites More sharing options...
Skele Posted August 19 Share Posted August 19 here is how i currently get the history. when i initialize dashboards and stuff. async function InitializeCommonVariables() { await WaitForHistoryTab(); initializeHtml(); await delayAsync(500); $('.divContentContainer').draggable({ appendTo: "body", zIndex: 1000 }); await LoadGameHistory(); LoadSavedValues(); initializeFromCurrentHistory(); UpdateUiFromSettings(); observer = new MutationObserver(function (mutations) { for (let i = 0; i < mutations.length; i++) { // in this case we have the inserted nodes. if (mutations[i].addedNodes.length > 0) { let gameId = parseInt(mutations[i].addedNodes[0].childNodes[0].innerText); let odds = mutations[i].addedNodes[0].childNodes[1].innerText; odds = parseFloat(odds.substring(0, odds.length - 1)); let singleGame = { GameId: gameId, Odds: odds }; crashHistory.push(singleGame); UpdateSettingFromGame(singleGame); UpdateUiFromSettings(); } } }).observe(document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > table > tbody'), { subtree: true, childList: true }); } async function WaitForHistoryTab() { return new Promise(async (resolve, reject) => { let tryNumber = 0; while ( tryNumber < 10) { tryNumber++ try { document.querySelector('#tabs-crash > div > div.tabs-scroll > div > button:nth-child(2)').click(); break; } catch { await delayAsync(500); } } previousButton = document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > div > div.pages-box.page-pn.pageConic > button.previous-btn'); nextButton = document.querySelector('.next-page'); resolve(); }); } async function GotoLastPage() { await delayAsync(1000); return new Promise(async (resolve, reject) => { for (let i = 0; i < 100; i++) { document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > div > div.pages-box.page-pn.pageConic > button.next-page').click(); await delayAsync(5) } resolve(); }); } async function LoadGameHistory() { return new Promise(async (resolve, reject) => { await GotoLastPage(); for (let i = 0; i < 100; i++) { await AddCrashHistoryPage(); document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > div > div.pages-box.page-pn.pageConic > button.previous-btn').click(); await delayAsync(5); } resolve(); }); } async function AddCrashHistoryPage() { return new Promise(async (resolve, reject) => { let rows = document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > table > tbody').children; for (let i = rows.length - 1; i >= 0; i--) { let gameId = parseInt(rows[i].children[0].innerText); let odds = rows[i].children[1].innerText; odds = parseFloat(odds.substring(0, odds.length - 1)); let singleGame = { GameId: gameId, Odds: odds }; crashHistory.push(singleGame); await delayAsync(10) } resolve(); }); } Link to comment Share on other sites More sharing options...
Impenia Posted August 19 Share Posted August 19 13 minutes ago, Skele said: here is how i currently get the history. when i initialize dashboards and stuff. async function InitializeCommonVariables() { await WaitForHistoryTab(); initializeHtml(); await delayAsync(500); $('.divContentContainer').draggable({ appendTo: "body", zIndex: 1000 }); await LoadGameHistory(); LoadSavedValues(); initializeFromCurrentHistory(); UpdateUiFromSettings(); observer = new MutationObserver(function (mutations) { for (let i = 0; i < mutations.length; i++) { // in this case we have the inserted nodes. if (mutations[i].addedNodes.length > 0) { let gameId = parseInt(mutations[i].addedNodes[0].childNodes[0].innerText); let odds = mutations[i].addedNodes[0].childNodes[1].innerText; odds = parseFloat(odds.substring(0, odds.length - 1)); let singleGame = { GameId: gameId, Odds: odds }; crashHistory.push(singleGame); UpdateSettingFromGame(singleGame); UpdateUiFromSettings(); } } }).observe(document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > table > tbody'), { subtree: true, childList: true }); } async function WaitForHistoryTab() { return new Promise(async (resolve, reject) => { let tryNumber = 0; while ( tryNumber < 10) { tryNumber++ try { document.querySelector('#tabs-crash > div > div.tabs-scroll > div > button:nth-child(2)').click(); break; } catch { await delayAsync(500); } } previousButton = document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > div > div.pages-box.page-pn.pageConic > button.previous-btn'); nextButton = document.querySelector('.next-page'); resolve(); }); } async function GotoLastPage() { await delayAsync(1000); return new Promise(async (resolve, reject) => { for (let i = 0; i < 100; i++) { document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > div > div.pages-box.page-pn.pageConic > button.next-page').click(); await delayAsync(5) } resolve(); }); } async function LoadGameHistory() { return new Promise(async (resolve, reject) => { await GotoLastPage(); for (let i = 0; i < 100; i++) { await AddCrashHistoryPage(); document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > div > div.pages-box.page-pn.pageConic > button.previous-btn').click(); await delayAsync(5); } resolve(); }); } async function AddCrashHistoryPage() { return new Promise(async (resolve, reject) => { let rows = document.querySelector('#tabs-crash > div > div.tabs-view > div > div.h1cw04l8 > table > tbody').children; for (let i = rows.length - 1; i >= 0; i--) { let gameId = parseInt(rows[i].children[0].innerText); let odds = rows[i].children[1].innerText; odds = parseFloat(odds.substring(0, odds.length - 1)); let singleGame = { GameId: gameId, Odds: odds }; crashHistory.push(singleGame); await delayAsync(10) } resolve(); }); } Thanks bro. Still a bit too complicated for limited knowledge. Do you mind dropping your Telegram handle, there's a strategy I'd like to discuss with you. Or you can hit me up on @Impenia. Thanks. Link to comment Share on other sites More sharing options...
GuessWhatYep Posted September 13 Share Posted September 13 payout confidence appears flawed Link to comment Share on other sites More sharing options...
Moh6 Posted October 26 Share Posted October 26 On 12/10/2021 at 8:11 AM, Skele said: Yes you can easily export the data as a CSV normally. Unfortunately here they seem to be running the script as a web worker and so it doesn't have access to the DOM since only 1 thread has access to the dom. If i spent enough time digging into it i may be able to figure out how to register my own worker or what messages it is listening for and try to intercept it on the way back out. But to be honest I would probably just write the data out to the log window in a csv type of format, then use a browser extension like "Code Injector" to read and parse the html to return a csv that way. Here is the basic code from returning a CSV that most people use. Note that with Code Injector you can inject your own button that you can click manually so you won't need the hack to create and then click a hidden hyper link. Here is my test script which works up until it trys to return the csv then it complains because the javascript doesn't have access to the DOM on this thread. var config = {} var arrayHeader = ["Date", "Cashed At", "Crash", "GameId", "Hash", "Odds", "Wager"]; var arrayData = []; arrayData.push(arrayHeader); function main () { console.log(engine); let gameCount = 0; console.log(game); game.onBet = function () { console.log('starting game'); console.log(game.history); log.info('Last game information') log.info('cashedat: ' + game.history[0].cashedat) log.info('crash:' + game.history[0].crash) log.info('gameid: ' + game.history[0].gameId) log.info('hash: ' + game.history[0].hash) log.info('odds: ' + game.history[0].odds) log.info('wager: ' + game.history[0].wager) console.log(game.history[0]); LogForCSV(game.history[0].cashedat, game.history[0].crash, game.history[0].gameId, game.history[0].hash, game.history[0].odds, game.history[0].wager); gameCount++; console.log(gameCount); if(gameCount % 5 == 0) { ExportToCsv(); //Reset the data so you don't get duplicates arrayData = arrayHeader; } let today = new Date(); let fileName = 'CrashResults_' + today.month + '.' + today.day + '.' + today.year + ".csv"; ExportToCsv(arrayHeader, arrayData, ',', fileName); } } function ExportToCsv(){ let csv = ''; arrayData.forEach( array => { csv += array.join(',') + "\n"; }); let csvUrl = 'data:text/csv;charset=utf-8,' + encodeURI(csv); let hiddenElement = document.createElement('a'); hiddenElement.href = csvUrl; hiddenElement.target = '_blank'; hiddenElement.download = fileName + '.csv'; hiddenElement.click(); } function LogForCSV(cashedAt, crash, gameid, hash, odds, wager) { let current_datetime = new Date(); let formatted_date = current_datetime.getFullYear() + "-" + (current_datetime.getMonth() + 1) + "-" + current_datetime.getDate() + " " + current_datetime.getHours() + ":" + current_datetime.getMinutes() + ":" + current_datetime.getSeconds(); let entry = [formatted_date, cashedAt, crash, gameid, hash, odds, wager]; arrayData.push(entry); } so what you can do is just change the ExportToCsv to return the CSV string. Then with CodeInjector you can have it create and return the CSV, either by looking for known markers that start the data like ~~~ or whatever, or you can just take the entire contents of the div return it as a csv and then clear the window which is probably the best option so that way every time you export you only get new stuff. The history object only contains like the last 20 games i believe so it isn't really good for long term history they tell you to store your own. Let me know if you get Code Injector for your browser and i will write you something to look for messages and then pull the data into there actually for export. Message me actually to set that up. after the loosing it is always like this "Not betting until current loseStreak is over." and it never bes again even if the next game was green how to fix it? On 12/9/2021 at 6:19 AM, Skele said: kind of lack luster. I have several scripts but one of main things i did was add better logging I also added a feature that after two losses in a row, it will pause until it sees at least 1 win. You sometimes miss a win on the 3rd game true. But i no longer have to deal with 13 game losing streaks. It will take two and then just wait it out for green pastures. I need to change my script back to straight amounts for better, currently i use a percentage of my bank roll for the bet and then this one is the typical double it on loss. I will post it in its own message var config = { betPercentage: { label: 'percentage of total coins to bet', value: 0.25, type: 'number' }, payout: { label: 'payout', value: 2, type: 'number' }, onLoseTitle: { label: 'On Lose', type: 'title' }, onLoss: { label: '', value: 'increase', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (loss multiplier)' } ] }, lossMultiplier: { label: 'loss multiplier', value: 2, type: 'number' }, onWinTitle: { label: 'On Win', type: 'title' }, onWin: { label: '', value: 'reset', type: 'radio', options: [{ value: 'reset', label: 'Return to base bet' }, { value: 'increase', label: 'Increase bet by (win multiplier)' } ] }, winMultiplier: { label: 'win multiplier', value: 1, type: 'number' }, otherConditionsTitle: { label: 'Other Stopping Conditions', type: 'title' }, winGoalAmount: { label: 'Stop once you have made this much', value: currency.amount * 2, type: 'number' }, lossStopAmount: { label: 'Stop betting after losing this much without a win.', value: 0, type: 'number' }, otherConditionsTitle: { label: 'Experimentle Please Ignore', type: 'title' }, loggingLevel: { label: 'logging level', value: 'compact', type: 'radio', options: [{ value: 'info', label: 'info' }, { value: 'compact', label: 'compact' }, { value: 'verbose', label: 'verbose' } ] } }; // deleted input parameters var stop = 0; var lossesForBreak = 0; var roundsToBreakFor = 0; // end deleted parameters var totalWagers = 0; var netProfit = 0; var totalWins = 0; var totalLoses = 0; var longestWinStreak = 0; var longestLoseStreak = 0; var currentStreak = 0; var loseStreak = 0; var numberOfRoundsToSkip = 0; var currentBet = GetNewBaseBet(); var totalNumberOfGames = 0; var originalbalance = currency.amount; var runningbalance = currency.amount; var consequetiveLostBets = 0; var lossStopAmountVar = config.lossStopAmount.value; function main() { game.onBet = function () { // if we are set to skip rounds then do so. if (numberOfRoundsToSkip > 0) { numberOfRoundsToSkip -= 1; log.info('Skipping round to relax, and the next ' + numberOfRoundsToSkip + ' rounds.'); return; } else { if(totalNumberOfGames == 0) { // this is so we account for the first round. currentBet = GetNewBaseBet(); } if(loseStreak >= 2) { if(game.history[0].crash > 200) { loseStreak = 0; } else { log.info('Not betting until current loseStreak is over.'); return; } } log.info('Placed bet for the amount of ' + currentBet); game.bet(currentBet, config.payout.value).then(function (payout) { runningbalance -= currentBet; totalWagers += currentBet; totalNumberOfGames += 1; if (payout > 1) { var netwin = currentBet * config.payout.value - currentBet; consequetiveLostBets = 0; if(config.loggingLevel.value != 'compact') { LogMessage('We won a net profit of: ' + netwin.toFixed(8), 'success'); } netProfit += netwin; runningbalance += netwin + currentBet; if (loseStreak > 0) { loseStreak = 0; } currentStreak += 1; totalWins += 1; LogSummary('true', currentBet); if (config.onWin.value === 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.winMultiplier.value; } LogMessage('We won, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'success'); } else { log.error('We lost a net amount of: ' + currentBet.toFixed(8)); netProfit -= currentBet; loseStreak += 1; currentStreak = 0; totalLoses += 1; consequetiveLostBets += currentBet; LogSummary('false', currentBet); if (config.onLoss.value == 'reset') { currentBet = GetNewBaseBet(); } else { currentBet *= config.lossMultiplier.value; } LogMessage('We lost, so next bet will be ' + currentBet.toFixed(8) + ' ' + currency.currencyName, 'failure'); } if (currentStreak > longestWinStreak) { longestWinStreak = currentStreak; } if (loseStreak > longestLoseStreak) { longestLoseStreak = loseStreak; } recordStats(); if (config.winGoalAmount.value != 0 && netProfit > config.winGoalAmount.value) { // we have earned enough stop and quit. log.success('The net profits ' + netProfit.toFixed(8) + ' which triggers stop the for making enough.'); game.stop(); } if (lossStopAmountVar != 0 && consequetiveLostBets > (lossStopAmountVar)) { // the point of this is to limit the bleed so you don't loose too much. log.error('The net profits ' + netProfit.toFixed(8) + ' which triggers stop for losing enough. The next bet would be ' + currentBet.toFixed(8) + '.'); game.stop(); } } ); } }; } function recordStats() { if (config.loggingLevel.value != 'compact') { LogMessage('total wagers: ' + totalWagers.toFixed(8), 'info'); LogMessage('Net Profit: ' + netProfit.toFixed(8), 'info'); LogMessage('Current win streak: ' + currentStreak, 'info'); LogMessage('Current Lose streak: ' + loseStreak, 'info'); LogMessage('Total wins: ' + totalWins, 'info'); LogMessage('Total Losses: ' + totalLoses, 'info'); LogMessage('Longest win streak: ' + longestWinStreak, 'info'); LogMessage('Longest lose streak: ' + longestLoseStreak, 'info'); } } function GetNewBaseBet() { var returnValue = 0; returnValue = runningbalance * (config.betPercentage.value / 100); if(returnValue > currency.minAmount) { LogMessage('Recalculating base bet to ' + returnValue.toFixed(8) + ' which is ' + config.betPercentage.value + ' percent of ' + runningbalance.toFixed(8), 'info'); } else { LogMessage('The recalculated bet amount ' + returnValue.toFixed(8) + ' is lower than the minimum allowed bet. Setting bet to the minimum allowable amount of ' + currency.minAmount, 'info'); returnValue = currency.minAmount; } return returnValue; } function LogSummary(wasWinner, betAmount) { if (config.loggingLevel.value == 'compact') { if (wasWinner == 'true') { var winAmount = (betAmount * config.payout.value) - betAmount; log.success('Winner!! You won ' + winAmount.toFixed(8)); } else { log.error('Loser!! You lost ' + betAmount.toFixed(8)); } var winPercentage = (totalWins / totalNumberOfGames) * 100; var losePercentage = (totalLoses / totalNumberOfGames) * 100; log.info('Total Games: ' + totalNumberOfGames); log.info('Wins: ' + totalWins + '(' + winPercentage.toFixed(2) + ' % )'); log.info('Loses: ' + totalLoses + '(' + losePercentage.toFixed(2) + ' % )'); var netNumber = runningbalance - originalbalance; var netPecentage = (netNumber / originalbalance) * 100; if (originalbalance < runningbalance) { log.success('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } else { log.error('Total Profit: ' + netNumber.toFixed(8) + '(' + netPecentage.toFixed(2) + '%)'); } } } /// Determines whether or not to log an event or not to make it easier later function LogMessage(message, loggingLevel) { if (message) { if (config.loggingLevel.value != 'compact') { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'info': log.info(message); break; case 'compact': break; case 'verbose': if (isVerbose) log.info(message); break; } } else { switch (loggingLevel) { case 'success': log.success(message); break; case 'failure': log.error(message); break; case 'compact': log.info(message); break; case 'info': break; case 'verbose': break; } } } } I on average double up every few hours with this, but there are times where it goes into a run away nose dive so i don't leave it unattended without a stop loss amount set. But that stop loss is calculated from the last win and not from the session so it will stop before it eats all of the profits away. I mean this one Link to comment Share on other sites More sharing options...
Skele Posted October 28 Share Posted October 28 There is a setting for it to know what constitutes the losing streak being over and it isn't always just 1 green game. I would have to go look at it again, i haven't done anything on BC since their last update. Link to comment Share on other sites More sharing options...
Moh6 Posted October 28 Share Posted October 28 9 hours ago, Skele said: There is a setting for it to know what constitutes the losing streak being over and it isn't always just 1 green game. I would have to go look at it again, i haven't done anything on BC since their last update. I tried to adjust the numbers of the game history and losing streak and nothing happened the same problem I waited for like 8-10 games and still saying “ not betting until the loosing streak is over” Link to comment Share on other sites More sharing options...
Recommended Posts
You need to be a member in order to leave a comment
Sign up for a new account in our community. It's easy!
Register a new accountAlready have an account? Sign in here.
Sign In Now