// ==UserScript==
// @name Autodarts - Change throw via a number pad
// @namespace http://tampermonkey.net/
// @version 1.2
// @description
// @match https://play.autodarts.io/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=autodarts.io
// @require https://code.jquery.com/jquery-3.7.1.min.js
// @require https://code.jquery.com/ui/1.14.0/jquery-ui.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js
// @grant GM_addStyle
// @license MIT
// @description test
// ==/UserScript==
(function() {
'use strict';
let buttons = '';
let newnumber = 0;
let zahl = 0;
let i= 0;
let dartnr ='';
let image = ' data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM1MiwgMjAyMC8wMS8zMC0xNTo1MDozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0E1OTkxMjk3NDcxMTFFRjg2QTVGN0Y5NEEyMUI1NEYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0E1OTkxMjg3NDcxMTFFRjg2QTVGN0Y5NEEyMUI1NEYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIwMjAgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJGQTY4NDQ4N0MxM0FCRDE4MkY5MDNCMUE5RTAzMUZBOCIgc3RSZWY6ZG9jdW1lbnRJRD0iRkE2ODQ0ODdDMTNBQkQxODJGOTAzQjFBOUUwMzFGQTgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4emfOxAAAAvVBMVEXi4uL19fXQ0NDS0tLOzs7l5eXKysr09PTo6OjY2Njz8/PW1tbx8fH39/fw8PD9/f3y8vLDw8PX19fZ2dns7Ozq6urp6enk5OT29vbHx8fT09P+/v7j4+PLy8vPz8/FxcX4+PjR0dHU1NT6+vrd3d3f39/ExMTV1dXNzc3Jycnt7e38/Pzn5+fm5ube3t7b29vh4eHg4ODr6+vGxsbc3Nza2tru7u7IyMjBwcHCwsL7+/vv7+/5+fn///////+O6ZBTAAAAP3RSTlP//////////////////////////////////////////////////////////////////////////////////wCOJnwXAAAB80lEQVR42qzV6ZKiMBQFYFy6kcim7LiMS7u1OtrrzKAn7/9YHRERASWpmuOfVMlXeO+NiTQCX3oKTSKBN4cMeW5UJlza0DMkpBzxbkidQxAXpiCZWlNFkNCaTUVJJinRJPXwIKqZfK1LKenzzoekhGAqVWa/d9BLyQFPh2N1loiyROOofXhLahykWUGCliJIOoC6ECKduKUTAdI5j8EMeUnExHiL0AEJOckbMJAdLBQV5oiPvJhNnzr4ok21O+Ws5ch+XAtdtjAEmsxIm3Mus688eX2aPSSnCebIDGb9AZmzXmk5oujwh3cJe8ef6PxgLy4/zsSFVr9D2Dsm3zU5ju6inSy1BoFfLyUrtkX0WvIcMTAi55Wms7Nb+ywjLw//9osy4u3Z1lrsLIXF6n5DacernbV8BT6M0lo8CXJwmdu1fGMA/LrXMY9tyL+FUY4TUT4Xb4bkyL6S3xdxZ/pbScmPcmev/vu2zJBuOWmUEUeq03ULFj28TYwCGWw9Qql+SzbAP2pDkRswtAJZR8a7y47xG9JiTQr6aA7TXl2JdtoJ8iZP6IaZI/tgXqhFJ4T4DqVqvvzWeb/Ni+Vf1sWOuSfToSKEup+9DypGqG9TUXLnfrmSPs8NPs4QFWqweq5KMMQ6JTbvJW6kpP8eHXkStX8EGADehvKqxXrnJQAAAABJRU5ErkJggg==';
const corrections = {
"S1": {"x": 0.23864869472714267, "y": 0.7450953567163014},
"S2": {"x": 0.45156927001320907, "y": -0.5932624277493371},
"S3": {"x": 0.006614487481989349, "y": -0.8056185967301086},
"S4": {"x": 0.6363481572289519, "y": 0.4769283984847778},
"S5": {"x": -0.24335398593069038, "y": 0.71623182889537861},
"S6": {"x": 0.7887362326309516, "y": -0.004146439478043747},
"S7": {"x": -0.4574008834816887 , "y":-0.6323923445494517 },
"S8": {"x": -0.7412494631215135, "y": -0.23441905139777536},
"S9": {"x": -0.6534612426143511, "y": 0.48251813111811254},
"S10": {"x": 0.7482240114833393, "y": -0.24319787404082716},
"S11": {"x": -0.7997749434596216 , "y": 0.002609159964620326},
"S12": {"x": -0.44862206143097255, "y": 0.6376106644786924},
"S13": {"x": 0.7657816555847717, "y": 0.2630475650418204},
"S14": {"x": -0.7588071072229459, "y": 0.24548991975571716},
"S15": {"x": 0.6340993248240286, "y": -0.4626684401171191},
"S16": {"x": -0.6446824205636349, "y": -0.47144726276017057 },
"S17": {"x": 0.23612605852489288, "y": -0.7640746841952271},
"S18": {"x": 0.4555966097927985, "y": 0.6463894871217442},
"S19": {"x": -0.22915151016306695, "y": -0.7465170389091238},
"S20": {"x": -0.009680958895161329, "y": 0.7839243751962206},
"D1": {"x": 0.29821686695850486 , "y": 0.921979532538415 },
"D2": {"x": 0.5877363642403922 , "y": -0.7781926904772413 },
"D3": {"x": 0.006683720409154148 , "y": -0.9669106431745664 },
"D4": {"x": 0.7814205788508053 , "y": 0.5626980260563854 },
"D5": {"x": -0.29874138724572774 , "y": 0.9153026218855984 },
"D6": {"x": 0.9602060077219553 , "y": -0.005938962992133956 },
"D7": {"x": -0.5743689234220842 , "y": -0.793091476216504 },
"D8": {"x": -0.9195241263816659, "y": -0.30888093969047203 },
"D9": {"x": -0.7804687928152158, "y": 0.567664287969473 },
"D10": {"x": 0.9254421743303428 , "y": -0.28901589203812184 },
"D11": {"x": -0.9617373526429098, "y": -0.010905224905221356 },
"D12": {"x": -0.5669195305524531, "y": 0.7836966811887797 },
"D13": {"x": 0.9179927814607116, "y": 0.2845873589234851},
"D14": {"x": -0.9269735192512972, "y": 0.2994861446627476 },
"D15": {"x": 0.7814205788508053, "y": -0.5646434282144784 },
"D16": {"x": -0.7879181856848471 , "y": -0.5646434282144784 },
"D17": {"x": 0.2972100423247734, "y": -0.9172480240436915 },
"D18": {"x": 0.5529725308487797, "y": 0.7961123359714984 },
"D19": {"x": -0.31115704202844646, "y": -0.90979863117406 },
"D20": {"x": 0.006683720409154148, "y": 0.9773808957991924 },
"T1": {"x": 0.1854691492803045, "y": 0.5626980260563854 },
"T2": {"x": 0.36673770910799847, "y": -0.4752507137789034 },
"T3": {"x": 0.012218921762980582, "y": -0.590141739888456 },
"T4": {"x": 0.4780778274565276, "y": 0.3544569629003027 },
"T5": {"x": -0.1917285254300467, "y": 0.5691384862613842 },
"T6": {"x": 0.5918590348379009, "y": 0.002379264588128967 },
"T7": {"x": -0.3527396679508579, "y": -0.482800978207915 },
"T8": {"x": -0.5803020827136042, "y": -0.195127736904066 },
"T9": {"x": -0.49013584290195006, "y": 0.3544569629003027 },
"T10": {"x": 0.5725376977354034, "y": -0.20156818260489834},
"T11": {"x": -0.5974766045824907, "y": 0.002379264588128967 },
"T12": {"x": -0.34629922225002546 , "y": 0.48541269215056226 },
"T13": {"x": 0.5618036215673494, "y": 0.18700537467865902 },
"T14": {"x": -0.5803020827136042, "y": 0.18700537467865902 },
"T15": {"x": 0.4952523493254142, "y": -0.3389643575559905 },
"T16": {"x": -0.479401766733896, "y": -0.35184524895765573 },
"T17": {"x": 0.17323006428379178, "y": -0.5665267723187372 },
"T18": {"x": 0.33424120680460284, "y": 0.48541269215056226 },
"T19": {"x": -0.18528807972921424 , "y": -0.5600863266179045 },
"T20": {"x": -0.007102415339516647, "y": 0.605634345232768 },
"25": {"x": -0.0006619696386841871, "y": 0.060343275895620954 },
"BULL": {"x": 0.005778476062148273 , "y": -0.004061181112703493 }
};
let fields = [
[ ],
["S20", "S1", "S18", "D20", "D1", "D18", "T20", "T1", "T18"], // 1
["S17", "S2", "S15", "D17", "D2", "D15", "T17", "T2", "T15"], // 2
["S19", "S3", "S17", "D19", "D3", "D17", "T19", "T3", "T17"], // 3
["S18", "S4", "S13", "D18", "D4", "D13", "T18", "T4", "T13"], // 4
["S12", "S5", "S20", "D12", "D5", "D20", "T12", "T5", "T20"], // 5
["S13", "S6", "S10", "D13", "D6", "D10", "T13", "T6", "T10"], // 6
["S16", "S7", "S19", "D16", "D7", "D19", "T16", "T7", "T19"], // 7
["S11", "S8", "S16", "D11", "D8", "D16", "T11", "T8", "T16"], // 8
["S14", "S9", "S12", "D14", "D9", "D12", "T14", "T9", "T12"], // 9
["S15", "S10", "S6", "D15", "D10", "D6", "T15", "T10", "T6"], // 10
["S8", "S11", "S14", "D8", "D11", "D14", "T8", "T11", "T14"], // 11
["S9", "S12", "S5", "D9", "D12", "D5", "T9", "T12", "T5"], // 12
["S4", "S13", "S6", "D4", "D13", "D6", "T4", "T13", "T6"], // 13
["S11", "S14", "S9", "D11", "D14", "D9", "T11", "T14", "T9"], // 14
["S2", "S15", "S10", "D2", "D15", "D10", "T2", "T15", "T10"], // 15
["S8", "S16", "S7", "D8", "D16", "D7", "T8", "T16", "T7"], // 16
["S3", "S17", "S2", "D3", "D17", "D3", "T3", "T17", "T2"], // 17
["S1", "S18", "S4", "D1", "D18", "D4", "T1", "T18", "T4"], // 18
["S7", "S19", "S3", "D7", "D19", "D3", "T7", "T19", "T3"], // 19
["S5", "S20", "S1", "D5", "D20", "D1", "T5", "T20", "T1"], // 20
];
function generate_buttons(fields, zahl, dartnr ) {
console.log('numpad zahl: '+fields[zahl][2]);
buttons = '';
for (let i = 0; i < 9; i++) {
if ( i<=2) { // color of button
var btn_class = 'single';}
else if ( i <= 5) {
var btn_class = 'double';}
else {
var btn_class = 'triple';}
buttons += '<button class="numpadbtn '+btn_class+'" value="'+fields[zahl][i]+'" >'+fields[zahl][i]+'</button>';
}
return buttons;
}
GM_addStyle("#container { } ");
GM_addStyle(".overlay { border-radius: 10px; position: absolute; bottom: 20px; font-size: 18px; background-color: #525e9c; z-index: 98; height: 260px; border: 1px solid #a9b1cb;}")
GM_addStyle(".numpadbtn{ color: black; z-index: 99; width: 29%; height: 50px; background-color: blue; color: white; padding: 10px 2% 10px 2%; margin-left: 3%; margin-top: 10px; vertical-align: middle; border-radius: 15px; border: 1px solid #a9b1cb;}")
GM_addStyle(".single { background-color: #7aa2ff;} .double { background-color: #3873fc;} .triple{ background-color: #004dff;} .miss{ background-color: grey;} .halfbull{ background-color: green;} .bull { background-color: red;} ");
$(document).ready( function() {
//Append
$('body').append('<div id="container"><div class="overlay"></div></div>');
$('#container').hide();
$(document).on("click",".numpadbtn",function() {
//$('.ad-ext-turn-throw').eq(dartnr).css('color','#d69e2e');
console.log('Numpad clicked:' + $(this).val() );
newnumber = $(this).val();
if (newnumber === 'BOUNCER') {
var body = '{"changes":{"'+dartnr+'":{"type":"bouncer"}}}'; }
else {
var x = corrections[newnumber]['x'];
var y = corrections[newnumber]['y'];
var body = '{"changes":{"'+dartnr+'":{"point":{"x":'+x+',"y":'+y+'},"type":"normal"}}}';
}
fetch('https://api.autodarts.io/gs/v0/matches/'+location.pathname.split("/")[2]+'/throws', {
credentials: 'include',
method: 'PATCH',
body: body
}).then((response) => {
console.log('status code', response.status)
if(response.status != 200) { // if Authorization-token has expired
$('.ad-ext-turn-throw > .chakra-text').eq(dartnr).hide();
// fetch again
// get new Authorization-token (click a miss)
$("button:contains('Bouncer')").trigger("click", function() { }); // Bouncer-Button click
setTimeout(function(){
$("button:contains('Ok')").trigger("click", function() { }); // OK-Button click
}, 500);
setTimeout(function(){
// correct darts again with old values and new Authorization-token
fetch('https://api.autodarts.io/gs/v0/matches/'+location.pathname.split("/")[2]+'/throws', {
credentials: 'include',
method: 'PATCH',
body: body
})
// $('.ad-ext-turn-throw').eq(dartnr).css('color','#ffffff');
$('.ad-ext-turn-throw > .chakra-text').eq(dartnr).show();
}, 1000);
// end fetch again
}
})
$('#container').hide('slow');
});
$(document).on("click",".css-1x1xjw8",function() {
$('#container').fadeOut(500);
})
$(document).on("click",".ad-ext-turn-throw",function(e) {
// get width of button
console.log( $( this).width());
$('.overlay').css('width', $( this).width()+'px' );
var offset = $(this).offset(); // throw-div
console.log(offset);
var posY = offset.top +360 ;
var posX = offset.left;
$("#container").css({top: posY, left: posX, position:'absolute'});
$("#container").draggable();
dartnr = $(this).index()-1;
zahl = parseInt( $(this).text().replace(/\D/g,'') );
var extra_buttons = '<button class="numpadbtn miss" value="BOUNCER" >Miss</button><button class="numpadbtn halfbull" value="25" >25</button><button class="numpadbtn bull" value="BULL" >Bull</button><div style="width: 100%; text-align: center;"><img src="'+image+'" style="margin-top: 10px;width: 25px; height: 25px;"></div>';
if(zahl != 25 && Number.isInteger(zahl) && $(this).hasClass('css-1tv7rud') == true ) {
$(".overlay" ).html( generate_buttons(fields, zahl, dartnr ) + extra_buttons );
$('#container').fadeIn(500);
}
else {
$('#container').fadeOut(500);
}
});
});
})();