Jump to content

Skele

Member
  • Posts

    300
  • Joined

  • Last visited

  • Days Won

    10

Everything posted by Skele

  1. Did that there are a few typos in the description like exciting is on there as exiting. And i vote for some sort of electronic or down tempo or something. It says message in the comments but you can't comment on the live stream so i am doing it here. like maybe some SynthWave or something that has a good 80s vibe haha.
  2. if your internet is out there is no way for you to get to host server and if the server is at your house then it too would have the internet be out. Well webservices would be the cleanest way and it wouldn't interfere with your logging output of the game. That is assuming you can even make an httpost from the game script which i don't see why you wouldn't be able to. And webservices are no harder than throwing up a page as far as setup goes. In fact it can even be a page of a site with a rest endpoint. It really just depends how involved you want to get with it all. And if you want to talk about typos. I just redid one of my scripts and was testing it out. And i have it now so that if you put in a exact amount it will use that for the base bet otherwise it will use the percentage of your bankroll. Well i just copied and pasted and the first bet out of the case it bet 0.25 light coin instead of the .0033 I wanted it to. Luckily i won because i had a payout amount X1.2 but i damn near had a heart attack thinking i might loose my play money before i even get started.
  3. putting it into the actual script. But then you need to open the developer pain in the browser or you won't see the console output.
  4. well if you are going to live stream do you have a server somewhere? Because really the easiest way would be to host a webservice on a server and just call the webservice after each crash. Then you could just host a site that reads the information from the webservice however you want to store it there, sql on disk hell even in memory at that point except iis refreshes regularly so you would loose the data then.
  5. 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.
  6. 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.
  7. The best i have been able to do is console.log(game) and then look at that object, you can also dump engine the same way.
  8. I was really hoping this would have gotten some traction because i wanted to know if there was a way to reread the properties from the form, and or interact with the dom from the script. I mean its javascript so i don't see why not, but i imagine there might be some sort of isolation stuff going on to make it think its cross site scripting or what not.
  9. I am going to pile on here. So far i have been lucky in my guessing of properties and such based on the other scripts, but that only goes so far.
×
×
  • Create New...