-
Posts
298 -
Joined
-
Last visited
-
Days Won
8
Everything posted by Skele
-
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.
-
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(); }); }
-
so i just did this for coin flip, and if you don't mind that the UI doesn't animate you could do something like: const source2 = document.location.hostname; var i_cfg; var i_players; var i_externals; var c_cfg; var c_betvalue; var c_decimal; function PlayWinSound() { var winSound = new Audio('https://freesound.org/people/MaoDin204/sounds/721774/download/721774__maodin204__cash-register.mp3'); winSound.play(); } async function GetItReady() { i_cfg = await import("https://" + source2 + "/modules/games/Game-83ebef56.js"); i_players = await import("https://" + source2 + "/modules/games/AllPlayers-fab6a982.js").then(res=>i_bet = res); i_externals = globalThis["@bc/ui"]; c_cfg = new i_cfg.default; //c_betvalue = i_externals.socket.encode(i_bet.$.roots.gameLimbo.BetValue); c_decimal = i_externals.Decimal.clone({ precision: 9 }); c_cfg.gameUnique='CoinFlip'; c_cfg.initialize(); } GetItReady(); var hasWon = false; var gamecount = 0; var shouldStop = false; var mostFlips = 0; var totalFlipsForAverage = 0; var netProfit = 0; function StopGames() { shouldStop = true; } async function StartGames() { debugger; hasWon = false; gamecount = 0; shouldStop = false; totalFlipsForAverage = 0; netProfit = 0; let betAmount = parseFloat(document.getElementById('betAmount').value); while((!hasWon || (hasWon && !document.getElementById('stopOnWin').checked)) && !shouldStop) { gamecount++; document.getElementById('numGames').innerText = gamecount; document.getElementById('averageFlips').innerText = totalFlipsForAverage / gamecount; try { while(!c_cfg.state.isBetting && !shouldStop) { c_cfg.handleBet(new c_decimal(betAmount)); await delayAsync(300); } netProfit -= betAmount; await DoFlips(); document.getElementById('netProfit').innerText = netProfit; } catch(ex) { console.log(ex.toString()); } } } async function DoFlips() { let numberOfFlips = parseInt(document.getElementById('numFlips').value); let gamePlayType = document.getElementById('playType').value; document.getElementById('currentResults').innerText = ""; while(!shouldStop) { document.getElementById('numGames').innerText = gamecount; let previousGuess = 0; let nextGuess = 0; while(!shouldStop && (c_cfg.state.guessing || c_cfg.canGuess())&& c_cfg.state.betrounds.length < numberOfFlips) { if(mostFlips <= c_cfg.state.betrounds.length) { mostFlips = c_cfg.state.betrounds.length; document.getElementById('mostFlips').innerText = mostFlips; } await c_cfg.handleNext(nextGuess); let currentResults = document.getElementById('currentResults').innerText + nextGuess.toString(); document.getElementById('currentResults').innerText = currentResults; document.getElementById('currentFlips').innerText = c_cfg.state.betrounds.length; await delayAsync(10); } if(c_cfg.state.guessing || c_cfg.canGuess()) { await c_cfg.cashout(); PlayWinSound(); netProfit += c_cfg.state.resultInfo.winAmount; hasWon = true; totalFlipsForAverage += c_cfg.state.betrounds.length; return; } else { // no need to do anything here unless you wanted to record the loss totalFlipsForAverage += c_cfg.state.betrounds.length - 1; return; } } } function delayAsync(timeMs) { return new Promise(function (resolve) { setTimeout(resolve, timeMs); }); } function GetRandomInt(min, max) { var retValue = Math.floor(Math.random() * (max - min)) + min; return retValue; } You will have to use the source tab on the developer console to figure out the files to import. And those files will change whenever there is an update but it will allow you to resue scripts that were using the object model that was easy to access before they put everything into modules. You can technically also wire up the UI to the new object that you created and control in this scenario but i didn't want to spend the time to do so and since the outcome was all i cared about.
-
so where is this video and where is it you think they are changing these. Betting yet how and why are they changing them. Since every player gets the same seed and nonce on crash, I am still trying to think how they could even get any benefit out of manipulating. Also don't confuse being able to modify the client side stuff, by using the dev console, or a injection program, Since the outcome of all crash games should be calculated server side and then passed it back, i would like to know what exactly your doing to be able to compromise their servers and observe the behavior on the servers in their data center. That is really the only way it can work to keep the bets validated and proveably fair. Which essentially just means deterministic, so for a given seed and nonce it would always return the same result.
-
Let me ask the obvious question. How did they get past your 2FA to withdraw? If you don't have 2FA enabled well then it is pretty common for people to be able to even slip the withdraw call into a script. Essentially without TFA you are almost asking for someone to take your money.
-
codes are always gone within a few minutes at best. After wagering a little over 3 mill at BC, i don't think there are any strategies that are always going to be profitable for people consistently. Really there are ones that seem like they are profitable more consistently than others, but there are still going to be days where you lose your ass doing them. Some of my best days were honestly when i would play manually on like limbo, or coin flip. Just watching the patterns and hoping that they would repeat. I was able to cash out a couple grand starting from like 50$ on both of them, but that is by no means consistent its just variance and luck. Any pattern you think you find is really just coincidence or should be anyway, because prior outcomes technically do not affect the chances of the current one. That being said they are still just hashing a seed, so it isn't going to be completely random, so maybe you will get lucky and notice something that you can get to repeat. If that happens, just don't change your seed lol.
-
Nothing about a gambling site, which is recreational, is urgent. Needing someone else to write you a script when there are plenty of examples on the forums already, not to mention scripts out there on the forum that can already do this, is a want not a need, and should be treated as such, but i suggest you look around a little more because there are already solutions out there that will work for this.
-
why are you waiting until the game has been removed from the site for well over a year to now complain about it?
-
When did BC change the Autobet behavior to screw over Players?
Skele posted a question in Help / Feedback
How long ago did BC change the autobet behavior to instead of stopping when there wasn't enough money to place the next bet (this is the has been the behavior for years the entire time i have been playing in fact), to the scammy behavior they have now, which is instead of stopping so you can make an informed decision it will just go ahead and bet everything you have left? This is fucked behavior and its fairly new. It doesn't make sense that if the autobet should be trying to plays a 90$ bet, but only has 30$, that it will just go ahead and place the 30$ instead. That is them deciding on my bet size for me and not it doing as i had dictated. I mean they have already taken almost all of the reasons to even look in this casino's direction away. Now they are going to try to scam the little guy out of their last few dollars with this bullshit type of stunt? -
@Horlique2 var config = { baseBet: { label: "base bet", value: 0.1, type: "number" }, payout: { label: "payout", value: 1.5, type: "number" }, waitReds: { label: "wait for reds to start:", value: 3, type: "number" }, betMultiplier: { label: "on loss multiplier", value: 3, type:"number" }, stopLossPercentage: { label: "Percentage of bankroll to lose before stop.", value: 75, type: "number"}, cheatSheet: { label: "Payout/NumReds, 2/5, 10/20, 100/200, 1000,2000", type: "title" }, }; var numReds = 0; var numAttemps = 0; var ringNumber = 1; var loadedHistory = false; var stopLossAmount = 0; var amountLostSinceLastWin = 0; var originalbalance = currency.amount; var runningbalance = currency.amount; function main() { var target = config.payout.value * 100; var currentBet = (config.baseBet.value ==0 ) ? (runningbalance * 0.005) : config.baseBet.value; game.onBet = function () { if(!loadedHistory) { loadedHistory = true; for(i=19; i >= 0; i--) { let crashValue = game.history[i].crash; if(crashValue < target) { numReds++; } else { numReds = 0; } } } else { let cv = game.history[0].crash; if(cv < target) { numReds++; } else { numReds = 0; } } log.success("the redcount is " + numReds); if(numReds > config.waitReds.value) { if(numAttemps == 0) { stopLossAmount = currency.amount * config.stopLossPercentage } numAttemps++; if(numAttemps % (config.waitReds.value/2) == 0) { ringNumber++; } log.success("We are betting " + currentBet); game.bet(currentBet, config.payout.value).then(function (payout) { runningbalance -= currentBet; if (payout > 1) { runningbalance += currentBet * config.payout.value log.success("you won after " + numAttemps + " attempts."); numAttemps = 0; numReds=0; ringNumber = 1; stopLossAmount = 0; amountLostSinceLastWin = 0; currentBet = runningbalance * 0.005; } else { amountLostSinceLastWin += currentBet; currentBet *= config.betMultiplier.value; log.error( "We lost, attempt " + numAttemps + " on ring " + ringNumber + " current redCount is: " + numReds + "."); if((amountLostSinceLastWin + currentBet) > stopLossAmount) { log.error("We have lost " + config.stopLossPercentage.value +"% so we are going to stop."); game.start(); } } }); } else { log.success('Number of current red games is ' + numReds + ' so we will continue waiting.'); } }; }
- 16 replies
-
@Horlique2 Whats your telegram and i can get that for you.
- 16 replies
-
So the violation was using a coin drop script, are you saying you do not use a script? If you have then your stealing from the other players, and you would have gone against the terms of service. I would expect them to give your deposit back though, but would guess they would hold on to the other coin presumably because it was claimed in coin drops where they thought a script was used.
- 7 replies
-
- bc.game
- [email protected]
-
(and 2 more)
Tagged with:
-
why not try just creating your own content.
-
This is a bastardization of my script with a bunch if hard coded values, why wouldn't you just make the increase in bet value a function of the number of losses, instead of hard coding all of those in there? Smh this is why AI will ruine the few thinking people this world has left.
-
@Jsastzrjoyb @dramdani I realize this is kind of an old thread but did you guys get the help you needed with your scripts
- 16 replies
-
1
-
Nope your reference is going to be writing out properties to their log function if you want to keep it in their sandbox environment. The only documentation. Is the few paragraphs in the scripting menu.
-
The easiest way to do this is to use game.history, that property is an array of the last 20 games and their results. Here is an simple example you can throw right into the crash script are and play with. Note that if you want only the previous game is will always be at index 0 of history. so game.history[0].crash is the value you want but noticed it is actually 100x larger than what is displayed but with no decimal. I trust you should be able to take it from here. var config = { baseBet: { label: "base bet", value: 0.1, type: "number" }, payout: { label: "payout", value: 10, type: "number" }, stopLossPercentage: { label: "Percentage of bankroll to lose before stop.", value: 75, type: "number"} }; function main() { var target = config.payout.value * 100; var currentBet = config.baseBet.value; game.onBet = function () { var balance = currency.amount; var minBet = currency.minAmount; var maxBet = currency.maxAmount; for(i=19; i >= 0; i--) { let crashValue = game.history[i].crash; log.info(crashValue); } if(true) { // short circuiting this so that it doesn't actually bet put adding the bet and result handling for an example. return; } game.bet(config.bet.value, config.payout.value).then(function(payout) { if(payout > 1) { log.success("We won, payout " + payout + "X!"); } else { log.error("We lost, payout " + payout + "X!"); } }); } }
-
i am working on it give me a few minutes. Here you go i made sure it loaded but that was all the validation i did really. So make sure the logic is still correct and good luck. var config = { betTitle:{ label: 'Bets', type: 'title' }, baseBet: { label: 'Base Bet', value: currency.amount * 0.00000100 , type: 'number' }, payoutTitle: { label: 'Payout Section (There is a high and a low value, when set a random value will be chosen between these numbers)', type: 'title' }, chanceLow: { label: 'percentage change to set payout low', value: 45, type: 'number' }, chanceHigh: { label: 'percentage change to set payout high', value: 55, type: 'number' }, stoppingConditions: { label: 'Stopping Conditions', type: 'title' }, targetProfit: { label: 'Target Profit', type: 'number', value: currency.amount * 1.05 } }; var base = config.baseBet.value; var base2 = base; var chance = 50; var nextbet = base; var targetprofit = config.targetProfit.value; var ppc = 1.005; var tg = base; var mt = 1; var bethigh = false; var balmax = currency.amount * 1.001; var previousbet = nextbet; var startingBalance = currency.amount; var runningBalance = currency.amount; function main() { game.onBet = function(){ // this random function will return a number between 1 and 3 inclusively so (1,2,3) if that is not the desired behavior you should modify the inputs. if(GetRandomInt(1, 3) % 2 == 0) { bethigh = true; } else { bethigh = false; } chance = GetRandomInt(config.chanceLow.value, config.chanceHigh.value); log.info("Multi: " + mt); if((runningBalance - startingBalance) >= config.targetProfit.value) { game.stop(); log.info(""); log.info(""); log.info(">>> Profit reached: " + profit.toFixed(8)); log.info(""); log.info(""); } game.bet(nextbet, (99.00/chance)).then(function(payout) { // also making the assumption here that profit is supposed to be the profit just from the last bet. So a loss should be -betamount and a win would be betamount * payout - betamout // if this is not the case and you wanted a running netProfit you will have to add that in yourself to track it as the balance value is only ever accurate when the script initially starts. its like a snap shot. let profit = currentBet * config.payout.value - currentBet; // Didn't see this declared anywhere just used below so i am initializing it before the nextbet is modified previousbet = nextbet; runningBalance -= previousbet; if(payout > 1) { runningBalance += previousbet * payout; if(profit >= tg) { tg = profit * ppc; nextbet = base2; } else { if(profit >= 0) { mt = 1; } else { mt = -1; } nextbet = profit * mt * 0.15 + base; } } else { if(profit >= 0) { mt = 1; } else { mt =- 1; } nextbet = previousbet * (chance/25); if( nextbet >= profit) { base = previousbet * 0.1 + base } } if(runningBalance >= balmax) { balmax = runningBalance * 1.001 nextbet = base2 log.info("balmax: " + balmax) } }) } } function GetRandomInt(min, max) { var retValue = Math.floor(Math.random() * (max - min)) + min; return retValue; } function GetRandomFloat(min, max) { var retValue = Math.parseFloat((Math.floor(Math.random() * (max - min)) + min).toFixed(4)); return retValue; }
-
@Sjjmhwpenyb hit me up on telegram.
-
yeah it interacting with the UI doesn't matter to me either, i already recreate limbo's UI for when i am on shuffle. so it wouldn't be hard at all actually to just reuse that stuff. And this method should work for all the games i would imagine. Except for maybe beauties. Hit me up on TG. @skele69 @Sjjmhwpenyb
-
I completely agree with the experience becoming worse and worse, and especially that the hosts are essentially pointless. I would also like to tag on that the loss in trust was a huge one for me. First with all the promoting and hoopla to get people to wager and get excited for the DEGEN PASS, and then for them to just drop that like it never happened, that was shady as shit. Also the first rake back they took away, that sucked but i get it, trying to take away the locked bcd, which was promotional stuff they gave us. A company can't be an indian giver there are enough of those as players already. The having to wager 1:1 to withdraw is also bullshit i think, its your money you put it in, why do you have to risk it to pull it back out? Wagering 30 or 40 to 1 for the free money from spins and shit i can understand, but not to withdraw my own deposit.
- 1 reply
-
1
-
Dude this is pretty awesome. And yes the Hashes on the files will change whenever they update. Thanks for this though.
-
Most likely will take some investigating to figure it out. My guess is that it is all now being done in a service worker, so you would have to figure out the correct message and send it. But I don't know for sure. I guess the other way you can do it is to automate through the actual UI, as in actually call click on the button etc.. The problem here is that they do something funky with the bet amount field so that even if you set it programatically it won't persist unless you click into the field. My guess as to what they are doing there is they are checking for a property on events that will tell you if it is actually a user event. Unfortunately you can't fake this in a client side script. You can however fake it in a browser plugin.
-
you rewrite the script to be client side. Inject an html div that has a form for your input. Call the javascript object model to actually power the game etc.. Then you will get the full set of information and not just a subset of info that they choose to give to you in the sandbox environment.
-
This one like i said works client side not in the sandboxed scripts: log.info('Dernier jeu : ' + hdg.myBets[0].gameValue.gameValue); as in use the dev console. The game object itself does have a history property but it doesn't look like they populate it before handing it to us. but when i ran log.info(JSON.stringify(game)) it came back with the output: {"_events":{},"_eventsCount":0,"history":[],"isHistoryWarning":false} so clientside is the only way you will be able to get it.