Last active
June 16, 2023 16:24
-
-
Save valex/22cf8dadc0a9c7d99e28bcdf8bae3457 to your computer and use it in GitHub Desktop.
Script for freebitco.in that tracks and presents statistics on rolls in the Multiply BTC game, displaying them in a convenient table format.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name freebitco.in Multiply BTC Roll Counter | |
// @namespace https://gist.github.com/valex/22cf8dadc0a9c7d99e28bcdf8bae3457 | |
// @version 0.1 | |
// @description Script for freebitco.in that tracks and presents statistics on rolls in the Multiply BTC game, displaying them in a convenient table format. | |
// @author valex | |
// @match https://freebitco.in/* | |
// @icon https://www.google.com/s2/favicons?sz=64&domain=freebitco.in | |
// @grant none | |
// @run-at document-end | |
// ==/UserScript== | |
// ================================================ | |
// | |
// If you like this script | |
// please register using link: https://freebitco.in/?r=41688905 | |
// | |
// Or please donate BTC: bc1qu9nv6m3fhp9c5e7j7cf4hazumfyvupnda2vrwn | |
// | |
// ================================================ | |
// ============ INSTALLATION ====================== | |
// | |
// 1. Use Tampermonkey extension to run script | |
// Chrome: https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo | |
// Firefox: https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/ | |
// Opera: https://addons.opera.com/en/extensions/details/tampermonkey-beta/ | |
// Tampermonkey home page: https://www.tampermonkey.net/ | |
// | |
// 2. In Tampermonkey dashboard click '+' sign to add new script | |
// 3. Copy and paste into tampermonkey the entire contents of this file | |
// 4. Save script (Ctrl + S) | |
// 5. Open freebitco.in in new tab or refresh page | |
// | |
// Tampermonkey FAQ page: https://www.tampermonkey.net/faq.php | |
// | |
// | |
// Script is starting after page reload | |
(function() { | |
'use strict'; | |
console.log("Status: Multiply BTC Roll Counter Script loaded"); | |
let numRolls = 0; | |
let numRollsTd = document.createElement('td'); | |
const stat = { | |
4: { | |
'hi': 7625, | |
'lo': 2375, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td'), | |
}, | |
8: { | |
'hi': 8813, | |
'lo': 1188, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td'), | |
}, | |
19: { | |
'hi': 9500, | |
'lo': 500, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
34: { | |
'hi': 9721, | |
'lo': 279, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
64: { | |
'hi': 9852, | |
'lo': 148, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
128: { | |
'hi': 9926, | |
'lo': 74, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
256: { | |
'hi': 9963, | |
'lo': 37, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
512: { | |
'hi': 9981, | |
'lo': 19, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
4750: { | |
'hi': 9998, | |
'lo': 2, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
}, | |
8888: { | |
'hi': 0, | |
'lo': 0, | |
'miss_hi': 0, | |
'miss_lo': 0, | |
'miss_hi_td': document.createElement('td'), | |
'miss_lo_td': document.createElement('td') | |
} | |
}; | |
let div = document.createElement('div'); | |
div.style.cssText = 'position:fixed;top:50px;left:0;background-color:white;'; | |
let table = document.createElement('table'); | |
let rollsTr = tableRollsRow(); | |
let headerTr = tableHeaderRow(); | |
table.appendChild(rollsTr); | |
table.appendChild(headerTr); | |
for (let betLabel in stat) { | |
let tr = document.createElement('tr'); | |
let tdLabel = document.createElement('td'); | |
tdLabel.innerHTML = '<span>'+ betLabel +'</span>'; | |
let tdHi = stat[betLabel]['miss_hi_td']; | |
let tdLo = stat[betLabel]['miss_lo_td']; | |
tr.appendChild(tdLabel); | |
tr.appendChild(tdHi); | |
tr.appendChild(tdLo); | |
table.appendChild(tr); | |
} | |
div.appendChild(table); | |
document.documentElement.appendChild(div); | |
function redraw() { | |
numRollsTd.innerHTML = ''+numRolls+''; | |
for (let betLabel in stat) { | |
stat[betLabel]['miss_hi_td'].innerHTML = ''+stat[betLabel]['miss_hi']+''; | |
stat[betLabel]['miss_lo_td'].innerHTML = ''+stat[betLabel]['miss_lo']+''; | |
} | |
} | |
let table_rows = document.getElementById('bet_history_table_rows'); | |
let rolls = []; | |
// create an observer instance | |
let observer = new MutationObserver(function(mutationsList) { | |
let roll; | |
for (let mutation of mutationsList) { | |
for (let addedNode of mutation.addedNodes) { | |
if(addedNode.className == 'multiply_bet_history_table_row'){ | |
roll = parseInt(addedNode.firstChild.childNodes[3].textContent); | |
if (isNaN(roll)) { | |
console.error('roll is Not a number'); | |
continue; | |
} | |
if (roll >= 0 && roll <= 10000) { | |
numRolls++; | |
// console.log(roll); | |
for (let betLabel in stat) { | |
if(betLabel==8888){ | |
if(roll == 8888){ | |
stat[betLabel]['miss_hi'] = 0; | |
stat[betLabel]['miss_lo'] = 0; | |
}else{ | |
stat[betLabel]['miss_hi'] = stat[betLabel]['miss_hi'] + 1; | |
stat[betLabel]['miss_lo'] = stat[betLabel]['miss_lo'] + 1; | |
} | |
continue; | |
} | |
if(roll > stat[betLabel]['hi']){ | |
stat[betLabel]['miss_hi'] = 0; | |
}else{ | |
stat[betLabel]['miss_hi'] = stat[betLabel]['miss_hi'] + 1; | |
} | |
if(roll < stat[betLabel]['lo']){ | |
stat[betLabel]['miss_lo'] = 0; | |
}else{ | |
stat[betLabel]['miss_lo'] = stat[betLabel]['miss_lo'] + 1; | |
} | |
} | |
}else{ | |
console.error('roll is Not in valid range'); | |
} | |
} | |
} | |
} | |
redraw(); | |
}); | |
// configuration of the observer: | |
let config = { | |
childList: true, | |
// subtree: true | |
}; | |
// pass in the target node, as well as the observer options | |
observer.observe(table_rows, config); | |
// later, you can stop observing | |
//observer.disconnect(); | |
function tableRollsRow(){ | |
let fragment = document.createDocumentFragment(); | |
let tr = document.createElement('tr'); | |
let td = document.createElement('td'); | |
let bold = document.createElement('strong'); | |
let rollsLabel = document.createTextNode('Rolls'); | |
bold.appendChild(rollsLabel); | |
td.appendChild(bold); | |
tr.appendChild(td); | |
tr.appendChild(td.cloneNode()); | |
tr.appendChild(numRollsTd); | |
fragment.appendChild(tr); | |
return fragment; | |
} | |
function tableHeaderRow(){ | |
let fragment = document.createDocumentFragment(); | |
let tr = document.createElement('tr'); | |
let label1 = document.createTextNode('Odds'); | |
let label2 = document.createTextNode('HI'); | |
let label3 = document.createTextNode('LO'); | |
let bLabel1 = document.createElement('strong'); | |
bLabel1.appendChild(label1); | |
let bLabel2 = document.createElement('strong'); | |
bLabel2.appendChild(label2); | |
let bLabel3 = document.createElement('strong'); | |
bLabel3.appendChild(label3); | |
let td1 = document.createElement('td'); | |
td1.appendChild(bLabel1); | |
let td2 = document.createElement('td'); | |
td2.appendChild(bLabel2); | |
let td3 = document.createElement('td'); | |
td3.appendChild(bLabel3); | |
tr.appendChild(td1); | |
tr.appendChild(td2); | |
tr.appendChild(td3); | |
fragment.appendChild(tr); | |
return fragment; | |
} | |
})(); | |
// ================================================ | |
// | |
// If you like this script | |
// please register using link: https://freebitco.in/?r=41688905 | |
// | |
// Or please donate BTC: bc1qu9nv6m3fhp9c5e7j7cf4hazumfyvupnda2vrwn | |
// | |
// ================================================ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment