Jump to content

Scripting questions for someone wanting to learn......


BeggarsBeDamned
 Share

Recommended Posts

So, I've dabbled with java on some other sites, and always ran into a wall and got frustrated and stopped.    I was pleased to see the editable scrips on the Crash game, and dabbled with that a bit, but have a couple of questions I hope an experienced person wouldn't mind sharing.


1.  How do you run scripts on the other games other than Crash?  Crash has the up-front testing method, but not sure how it is being done on the other games.  Is it simply through the console, or some other method

2.  One thing I have been very poor about doing in reading the scripts is identifying how to read the event result.  ie, win/loss/push and also placing this into a variable. 

2a. An alternate idea I've had to the above is to read the balance before/after and determine what happened that way.  I also have several ideas which use the balance, ie,  start the bet at a certain amount, and as the balance begins to increase, the bet amount goes down to reduce risk.  But, I haven't found out how to do this either, so wondering if someone can identify the best way to read in the current balance amount.

3. I have found Limbo exceptionally unreliable and not following true odds.   I haven't tracked large enough pieces of data, but I almost NEVER find any pieces of data outside the norm to the bettor's benefit.   Example of what I'm talking about:  I put the payout as 1.1, which is a 90% win.   I should expect 1 out of 10 to be losses, and of course in any small data batch this can be not right.    But, here's some examples of one of my more recent comparisons:  Fails =  8 out of 50. 14 out of 100, 22 out of 200, 67 out of 500, 114 out of 1,000.      Every single group, higher than the expected 10% norm.   And this is true whenever I test.    Because of this, Limbo makes me hesitant to trust it for any lengthy or large multiplication string.

4. I assume array types can be used, but what is the syntax ?  Is it like this:   RollResult[1[, or RollResult[LastGame].    Will these work, or if not what is the right syntax ?  

5.  What environment do you like to develop your scripts in ?


Thanks in advance for anyone who helps me

Link to comment
Share on other sites

1. I use a browser extension called code injector, there are a number of user script plugins that will do this type of thing for you.  I like that one because it separates out html and css and js into their own tabs and injects them separately. You could also write your own browser extension.

2. on there the results for most games are pretty easy to read there is usually a profitAmount, if your getting your results from like dg.history[0] but to discover this in the console is very easy you can just throw the object in there and then explore it. otherwise you can use similar methods to how is used in the example crash scripts.

2a.  Not a bad idea you could do this, as well something like ss.wallet.dict[ss.wallet.current].amount will get you the current balance of the current coin.

3. I have history on thousands of games of limbo and if interested have a script that will track your results and export it as a .csv every 1000 bets.

4. arrays in javascript are just the standard array[index] to access.  There are a number of methods you can look up add and manipulating them 

5. I use visual studio, you can use visual studio code (which is free), or my personal goto for most things is notepad++ which is also free and comes with a lot of plugins (not all of them stable or well written) but there is a lot of semi helpful tools already written for it.

Link to comment
Share on other sites

13 hours ago, Skele said:

5. I use visual studio, you can use visual studio code (which is free), or my personal goto for most things is notepad++ which is also free and comes with a lot of plugins (not all of them stable or well written) but there is a lot of semi helpful tools already written for it.

Thanks for replying! 

First, lots of things to reply to but start with this one really quickly.  I was indeed using N++ to go through one of the codes on another thread and to try to tweak it.  Nothing major, but success so far.   I do have VS but wanting to work with simplistic for right now, just to get my feet wet


 

Link to comment
Share on other sites

yeah really for html and javascript there is no real value add with visual studio except maybe some intellisense.  The autoformatting and syntax highlighting i am pretty sure you can find plugins to do for you in notepad++

Link to comment
Share on other sites

Okay, so I'm missing some essential step.  I obtained code injector, actually a couple different versions.   I loaded up the cave script, just because it was close to find, and made no edits and saved it, and got good results.    But then.... 😕    I don't see how to implement the code.  I refresh the site, and nothing happens.  There is no added menu or anything like that.  What am I doing wrong ?

Link to comment
Share on other sites

did you add UI to show up? how did you add it if not through the UI of the plugin.image.thumb.png.58eb46751cb34804b709cfde2b5305d2.png

oh i know what your problem likely is, the code injector needs an actual page load before it recognizes the change since  bc does a lot of ajaxy nice navigation stuff.  There is a way to capture that event but its not worth putting in these scripts.  It could be useful if you write a browser plugin though.

Link to comment
Share on other sites

On 7/20/2022 at 4:16 PM, Skele said:

did you add UI to show up? how did you add it if not through the UI of the plugin.image.thumb.png.58eb46751cb34804b709cfde2b5305d2.png

oh i know what your problem likely is, the code injector needs an actual page load before it recognizes the change since  bc does a lot of ajaxy nice navigation stuff.  There is a way to capture that event but its not worth putting in these scripts.  It could be useful if you write a browser plugin though.

I think I'm already pushing the limits of my self-teaching ability, but how in the world does one write their own browser plugin??

In regards to what I tried, I opened the extension and added one of the scripts on another thread, saved and named it.    I went to that game, refreshed the page, and went to the extension to find some way to run it, and..... nothing

Link to comment
Share on other sites

Hello Friends,

maybe here i had something that will helps.

 

But first BIG THANKS to Skele. All your inspirations and reply's in forum gives me good stuff to teaching/learning myself.👍

 

So the last weeks i thought about, if i should share that here or not. It is not a finished code/script/strategie, but it helps me much to understand the code and bring me forward. So also why should i not share here to the people who are will leraning to code. I also found at researching, thats not my Github.

 

It is only a basic structure for Classic Dice without any Strategie.

--> Translate the description into your language to understand

BC.Game Classic Dice Automation Script Template:

https://gist.github.com/thaolt/8f37564a616d6559c35bd1b05b2f6745

GOOD  LUCK  🙂

 

But if your will to learn coding, its possible to do. I lernad also myself, integrated my strategie and changed it from game Classic Dice to Limbo. I am sure that also will be possible for any other game, but you need to do it yourself.

Here i will show a screen from my Limbo control, that you see i'm talking the true and its possible.

image.png.6a09701e748737242237152ad23aa063.png

Edited by GTKPos
Link to comment
Share on other sites

On 7/22/2022 at 9:32 PM, GTKPos said:

Hello Friends,

maybe here i had something that will helps.

 

But first BIG THANKS to Skele. All your inspirations and reply's in forum gives me good stuff to teaching/learning myself.👍

 

So the last weeks i thought about, if i should share that here or not. It is not a finished code/script/strategie, but it helps me much to understand the code and bring me forward. So also why should i not share here to the people who are will leraning to code. I also found at researching, thats not my Github.

 

It is only a basic structure for Classic Dice without any Strategie.

--> Translate the description into your language to understand

BC.Game Classic Dice Automation Script Template:

https://gist.github.com/thaolt/8f37564a616d6559c35bd1b05b2f6745

GOOD  LUCK  🙂

 

But if your will to learn coding, its possible to do. I lernad also myself, integrated my strategie and changed it from game Classic Dice to Limbo. I am sure that also will be possible for any other game, but you need to do it yourself.

Here i will show a screen from my Limbo control, that you see i'm talking the true and its possible.

image.png.6a09701e748737242237152ad23aa063.png

Where to change this (Classic Dice Automation Script Template) to use in limbo

 

function CDAuto() {

  this.currentBet = 0;
  this.betamount = 0;
  this.stopped = true;

  this.resolveBet = (betlog) => {
    if (betlog.winAmount > 0) {
      cd.isHigh = !cd.isHigh;
      this.currentBet = this.betamount;
    } else {
      this.currentBet = this.currentBet * 2;
    }
  }

  this.cplay = () => {
    cd.bet(this.currentBet).then(this.resolveBet).then(() => {
      if (!this.stopped) {
        setTimeout(() => {
          this.cplay();
        }, 350);
      }
    });
  }

  this.start = () => {
    this.betamount = parseFloat(document.querySelector('#betamount').value);
    this.stopped = false;

    this.stopButton.style.display = '';
    this.startButton.style.display = 'none';

    cd.isHigh = false; 
    cd.betChance = 50; 
    this.currentBet = this.betamount;
    this.cplay();
  }

  this.stop = () => {
    this.startButton.style.display = '';
    this.stopButton.style.display = 'none';
    this.stopped = true;
  }

  const htmlToElement = function(html) {
    let template = document.createElement('template');
    html = html.trim();
    template.innerHTML = html;
    return template.content.firstChild;
  }

  document.querySelector('div.ui-radio.game-control-switch > button > div.label').innerHTML = 'Script';
  document.querySelector('div.game-control-panel .game-coininput').style.display = 'none';
  document.querySelector('div.game-control-panel > div > button.bet-button').style.display = 'none';

  this.funding = htmlToElement('<div class="ui-input small"><div class="input-label">Bet amount</div><div class="input-control"><input type="text" value="0.0001" id="betamount"></div></div>');
  this.startButton = htmlToElement('<button class="ui-button button-big s-conic start-auto" style="margin-top:15px"><div class="button-inner">Start Auto</div></button>');
  this.stopButton = htmlToElement('<button class="ui-button button-big s-conic2 stop-auto" style="margin-top:15px"><div class="button-inner">Stop Auto</div></button>');
  this.stopButton.style.display = 'none';

  document.querySelector('div.game-control-panel > div').appendChild(this.funding);
  document.querySelector('div.game-control-panel > div').appendChild(this.startButton);
  document.querySelector('div.game-control-panel > div').appendChild(this.stopButton);

  this.startButton.onclick = this.start;
  this.stopButton.onclick = this.stop;
}


const cdauto = new CDAuto();

Link to comment
Share on other sites

On 7/22/2022 at 10:02 PM, GTKPos said:

Hello Friends,

maybe here i had something that will helps.

 

But first BIG THANKS to Skele. All your inspirations and reply's in forum gives me good stuff to teaching/learning myself.👍

 

So the last weeks i thought about, if i should share that here or not. It is not a finished code/script/strategie, but it helps me much to understand the code and bring me forward. So also why should i not share here to the people who are will leraning to code. I also found at researching, thats not my Github.

 

It is only a basic structure for Classic Dice without any Strategie.

--> Translate the description into your language to understand

BC.Game Classic Dice Automation Script Template:

https://gist.github.com/thaolt/8f37564a616d6559c35bd1b05b2f6745

GOOD  LUCK  🙂

 

But if your will to learn coding, its possible to do. I lernad also myself, integrated my strategie and changed it from game Classic Dice to Limbo. I am sure that also will be possible for any other game, but you need to do it yourself.

Here i will show a screen from my Limbo control, that you see i'm talking the true and its possible.

image.png.6a09701e748737242237152ad23aa063.png

Can you help my to add stop profit at this script...please sir... thanks..

var config = {
  bet: { label: "bet profit(Min allowed amount / split)", value: 0.002, type: "number" },
  splitSize: { label: "Size of Split", value: 20, type: "number" },
  cycleSize: { label: "Maximum number of Cycles", value: 200, type: "number" },
  payout: { label: "payout", value: 2.1, type: "number" },

};

var betAmount = 0;
var iterationCount = 0;
var betCount = 0;

function createArray(profit,splitSize){
  var item = strip(profit/splitSize);
  var splits = [];
  for (var i=0;i<splitSize; i++){
    splits.push(item);
  }
  return splits;

}
var bettingArray;
function main() {
  bettingArray = createArray(config.bet.value,config.splitSize.value);
  betAmount = strip(bettingArray[0] + bettingArray[bettingArray.length-1]);
  
  game.onBet = function() {
    game.bet(betAmount, config.payout.value).then(function(payout) {
      betCount++;
      var message = betAmount + " NewBet" + betAmount + 
        " Bets Remaining[" + bettingArray.length + "]";
      if (payout > 1) {
        log.success(iterationCount + " Won! " +  message);
        console.log(iterationCount + " Won! " + betAmount);
        bettingArray.shift();
        bettingArray.pop();
      } else {
        bettingArray.push(betAmount);
        log.error("Lost!  " + message);
        console.log("Lost!  " + betAmount);
      }
      if(bettingArray.length == 0 || betCount == config.cycleSize.value){
        console.log("Resetting the bet!");
        bettingArray = createArray(config.bet.value,config.splitSize.value);
        iterationCount++;
        betCount = 0;
        clearConsoleLog();
      }
      if(bettingArray.length == 1){
        betAmount = bettingArray[0];
      }else{
        betAmount = strip(bettingArray[0] + bettingArray[bettingArray.length-1]);
      }
      
      console.log(betCount + " NewBet" + betAmount + 
        " BettingAray[" + bettingArray.length + "]" +
        bettingArray.join(" "));
      
    });
  };
}

function clearConsoleLog(){ 
  
  console.log("Restarting!"); 
}
function strip(number) {
    return (parseFloat(number).toPrecision(10))/1;
}

13 hours ago, KyawHtetNyein said:

Where to change this (Classic Dice Automation Script Template) to use in limbo

 

function CDAuto() {

  this.currentBet = 0;
  this.betamount = 0;
  this.stopped = true;

  this.resolveBet = (betlog) => {
    if (betlog.winAmount > 0) {
      cd.isHigh = !cd.isHigh;
      this.currentBet = this.betamount;
    } else {
      this.currentBet = this.currentBet * 2;
    }
  }

  this.cplay = () => {
    cd.bet(this.currentBet).then(this.resolveBet).then(() => {
      if (!this.stopped) {
        setTimeout(() => {
          this.cplay();
        }, 350);
      }
    });
  }

  this.start = () => {
    this.betamount = parseFloat(document.querySelector('#betamount').value);
    this.stopped = false;

    this.stopButton.style.display = '';
    this.startButton.style.display = 'none';

    cd.isHigh = false; 
    cd.betChance = 50; 
    this.currentBet = this.betamount;
    this.cplay();
  }

  this.stop = () => {
    this.startButton.style.display = '';
    this.stopButton.style.display = 'none';
    this.stopped = true;
  }

  const htmlToElement = function(html) {
    let template = document.createElement('template');
    html = html.trim();
    template.innerHTML = html;
    return template.content.firstChild;
  }

  document.querySelector('div.ui-radio.game-control-switch > button > div.label').innerHTML = 'Script';
  document.querySelector('div.game-control-panel .game-coininput').style.display = 'none';
  document.querySelector('div.game-control-panel > div > button.bet-button').style.display = 'none';

  this.funding = htmlToElement('<div class="ui-input small"><div class="input-label">Bet amount</div><div class="input-control"><input type="text" value="0.0001" id="betamount"></div></div>');
  this.startButton = htmlToElement('<button class="ui-button button-big s-conic start-auto" style="margin-top:15px"><div class="button-inner">Start Auto</div></button>');
  this.stopButton = htmlToElement('<button class="ui-button button-big s-conic2 stop-auto" style="margin-top:15px"><div class="button-inner">Stop Auto</div></button>');
  this.stopButton.style.display = 'none';

  document.querySelector('div.game-control-panel > div').appendChild(this.funding);
  document.querySelector('div.game-control-panel > div').appendChild(this.startButton);
  document.querySelector('div.game-control-panel > div').appendChild(this.stopButton);

  this.startButton.onclick = this.start;
  this.stopButton.onclick = this.stop;
}


const cdauto = new CDAuto();

you help my to add stop profit at this script...please sir... thanks..

var config = {
  bet: { label: "bet profit(Min allowed amount / split)", value: 0.002, type: "number" },
  splitSize: { label: "Size of Split", value: 20, type: "number" },
  cycleSize: { label: "Maximum number of Cycles", value: 200, type: "number" },
  payout: { label: "payout", value: 2.1, type: "number" },

};

var betAmount = 0;
var iterationCount = 0;
var betCount = 0;

function createArray(profit,splitSize){
  var item = strip(profit/splitSize);
  var splits = [];
  for (var i=0;i<splitSize; i++){
    splits.push(item);
  }
  return splits;

}
var bettingArray;
function main() {
  bettingArray = createArray(config.bet.value,config.splitSize.value);
  betAmount = strip(bettingArray[0] + bettingArray[bettingArray.length-1]);
  
  game.onBet = function() {
    game.bet(betAmount, config.payout.value).then(function(payout) {
      betCount++;
      var message = betAmount + " NewBet" + betAmount + 
        " Bets Remaining[" + bettingArray.length + "]";
      if (payout > 1) {
        log.success(iterationCount + " Won! " +  message);
        console.log(iterationCount + " Won! " + betAmount);
        bettingArray.shift();
        bettingArray.pop();
      } else {
        bettingArray.push(betAmount);
        log.error("Lost!  " + message);
        console.log("Lost!  " + betAmount);
      }
      if(bettingArray.length == 0 || betCount == config.cycleSize.value){
        console.log("Resetting the bet!");
        bettingArray = createArray(config.bet.value,config.splitSize.value);
        iterationCount++;
        betCount = 0;
        clearConsoleLog();
      }
      if(bettingArray.length == 1){
        betAmount = bettingArray[0];
      }else{
        betAmount = strip(bettingArray[0] + bettingArray[bettingArray.length-1]);
      }
      
      console.log(betCount + " NewBet" + betAmount + 
        " BettingAray[" + bettingArray.length + "]" +
        bettingArray.join(" "));
      
    });
  };
}

function clearConsoleLog(){ 
  
  console.log("Restarting!"); 
}
function strip(number) {
    return (parseFloat(number).toPrecision(10))/1;
}

Link to comment
Share on other sites

On 7/25/2022 at 12:50 PM, KyawHtetNyein said:

Where to change this (Classic Dice Automation Script Template) to use in limbo

 

function CDAuto() {

  this.currentBet = 0;
  this.betamount = 0;
  this.stopped = true;

  this.resolveBet = (betlog) => {
    if (betlog.winAmount > 0) {
      cd.isHigh = !cd.isHigh;
      this.currentBet = this.betamount;
    } else {
      this.currentBet = this.currentBet * 2;
    }
  }

  this.cplay = () => {
    cd.bet(this.currentBet).then(this.resolveBet).then(() => {
      if (!this.stopped) {
        setTimeout(() => {
          this.cplay();
        }, 350);
      }
    });
  }

  this.start = () => {
    this.betamount = parseFloat(document.querySelector('#betamount').value);
    this.stopped = false;

    this.stopButton.style.display = '';
    this.startButton.style.display = 'none';

    cd.isHigh = false; 
    cd.betChance = 50; 
    this.currentBet = this.betamount;
    this.cplay();
  }

  this.stop = () => {
    this.startButton.style.display = '';
    this.stopButton.style.display = 'none';
    this.stopped = true;
  }

  const htmlToElement = function(html) {
    let template = document.createElement('template');
    html = html.trim();
    template.innerHTML = html;
    return template.content.firstChild;
  }

  document.querySelector('div.ui-radio.game-control-switch > button > div.label').innerHTML = 'Script';
  document.querySelector('div.game-control-panel .game-coininput').style.display = 'none';
  document.querySelector('div.game-control-panel > div > button.bet-button').style.display = 'none';

  this.funding = htmlToElement('<div class="ui-input small"><div class="input-label">Bet amount</div><div class="input-control"><input type="text" value="0.0001" id="betamount"></div></div>');
  this.startButton = htmlToElement('<button class="ui-button button-big s-conic start-auto" style="margin-top:15px"><div class="button-inner">Start Auto</div></button>');
  this.stopButton = htmlToElement('<button class="ui-button button-big s-conic2 stop-auto" style="margin-top:15px"><div class="button-inner">Stop Auto</div></button>');
  this.stopButton.style.display = 'none';

  document.querySelector('div.game-control-panel > div').appendChild(this.funding);
  document.querySelector('div.game-control-panel > div').appendChild(this.startButton);
  document.querySelector('div.game-control-panel > div').appendChild(this.stopButton);

  this.startButton.onclick = this.start;
  this.stopButton.onclick = this.stop;
}


const cdauto = new CDAuto();

 

If you will use that script its important that your knowing what you do, so you need to add your own startegie into there.

To use in Limbo its needed to undetstand the code and change some things on it. You need to figure it out yourself whats all to do.

The different "obj" for the Games are:
    - classic dice is "cd"
    - limbo is "lbg"

 

Link to comment
Share on other sites

11 hours ago, GTKPos said:

 

If you will use that script its important that your knowing what you do, so you need to add your own startegie into there.

To use in Limbo its needed to undetstand the code and change some things on it. You need to figure it out yourself whats all to do.

The different "obj" for the Games are:
    - classic dice is "cd"
    - limbo is "lbg"

 

thank you, so limbo is lbg (i try lb or lm it not work)

Link to comment
Share on other sites

  • Member
On 7/19/2022 at 12:09 AM, CryptoCraps said:

3. I have found Limbo exceptionally unreliable and not following true odds.   I haven't tracked large enough pieces of data, but I almost NEVER find any pieces of data outside the norm to the bettor's benefit.   Example of what I'm talking about:  I put the payout as 1.1, which is a 90% win.   I should expect 1 out of 10 to be losses, and of course in any small data batch this can be not right.    But, here's some examples of one of my more recent comparisons:  Fails =  8 out of 50. 14 out of 100, 22 out of 200, 67 out of 500, 114 out of 1,000.      Every single group, higher than the expected 10% norm.   And this is true whenever I test.    Because of this, Limbo makes me hesitant to trust it for any lengthy or large multiplication string.
 

I wrote some about Limbo odds a while ago.

 

 

 

 

 

Link to comment
Share on other sites

On 7/27/2022 at 12:58 AM, KyawHtetNyein said:

thank you, so limbo is lbg (i try lb or lm it not work)

Its also worth it to learn how to discover these values.  I typically open the dev console, and will just type "window" and hit enter and explore that object.

Crash - crash
Hashdice - hdg
Tower - twg
Mines - mineg
Wheel of fortune - lbg
Coin flip - cfg
oriental beauties - sob
plinko - dg
cave - dg
wheel - wlg
sword - sg
limbo - lbg
Hilo - hog
Keno - dg
egyptian - sea

 

These are the other game objects i know off the top of my head, if its not on here its because i don't play it so didn't look it up yet.

On 7/22/2022 at 10:56 AM, CryptoCraps said:

I think I'm already pushing the limits of my self-teaching ability, but how in the world does one write their own browser plugin??

In regards to what I tried, I opened the extension and added one of the scripts on another thread, saved and named it.    I went to that game, refreshed the page, and went to the extension to find some way to run it, and..... nothing

So that string that appears to be a label for those scripts is in reality a regex expression which matches on the Url for it to know when to inject the code. You will know when it is matching because the text turns blue.

Then to write your own plugin you essentially just need to build out a folder structure with a manifest.json at the root.  The contents of that manifiest should be structured just like they have in the documentation for chrome and Edge.  So you have to look that up and know what you are trying to accomplish.  You will also if you want any direct interaction in your popup (the window that is shown when you click on a plugin's icon) and the actual page all communication needs to be done through messaging which isn't hard just something to keep in mind. The advantage to doing it this way is greater freedom to structure your stuff for reusability, you can more logically store settings and stuff in persisted storage. You can monitor window.location for when that changes and then you will be able to capture the navigation events that aren't captured by many of the other code injectors because of it being all ajax and smooth navigation instead of the old school asp.net post back style.  

This should be reiterated again though, please if you are going to play around with this type of stuff have a basic understanding of programming languages, and understand how the page life cycle works, threading and async calls, a conceptual understanding of client vs server code.  I was also going to say don't write grabbers but i guess with the overly aggressive captcha change no need to say that anymore.  There are some other interesting classes i haven't looked into yet like the public chart store (would be cool to preserve those charts across sessions i think).  There is also rechargestore these are next on my list to dig into to see wtf they do.

Link to comment
Share on other sites

"understand how the page life cycle works, threading and async calls, a conceptual understanding of client vs server code"

 

Yeah, programming I got...  what you list above is where I'm lacking..  that, and time, sadly

Link to comment
Share on other sites

  • 8 months later...
On 8/2/2022 at 6:58 PM, Skele said:

Its also worth it to learn how to discover these values.  I typically open the dev console, and will just type "window" and hit enter and explore that object.

Crash - crash
Hashdice - hdg
Tower - twg
Mines - mineg
Wheel of fortune - lbg
Coin flip - cfg
oriental beauties - sob
plinko - dg
cave - dg
wheel - wlg
sword - sg
limbo - lbg
Hilo - hog
Keno - dg
egyptian - sea

What is the Ultimate Dice code, please?

In Hash Dice one of the variables is hdg.bet. What is the equivalent variable in Ultimate Dice?

Link to comment
Share on other sites

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 account

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...