Avant de procéder à l'installation, Greasy Forkattention ce script contient des contre-fonctionnalités, qui sont là pour le bénéfice de l'auteur du script, plutôt que pour le vôtre.
Ce script injectera des ads/Pub sur les sites que vous visitez.
Chess.com Bot/Cheat that finds the best move!
À partir de
// additional copyright/license info: //© All Rights Reserved // //Chess.com Bot/Cheat © 2023 by MrAuzzie#998142 // // ==UserScript== // @name Chess.com Bot/Cheat // @namespace MrAuzzie // @version 1.2.2 // @description Chess.com Bot/Cheat that finds the best move! // @author MrAuzzie // @license Chess.com Bot/Cheat © 2023 by MrAuzzie#998142, © All Rights Reserved // @match https://www.chess.com/play/* // @match https://www.chess.com/game/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_registerMenuCommand // @resource stockfish.js https://raw.githubusercontent.com/Auzgame/remote/main/stockfish.js // @require https://greasyfork.org/scripts/445697/code/index.js // @require https://code.jquery.com/jquery-3.6.0.min.js // @run-at document-start // @antifeature ads // ==/UserScript== //Don't touch anything below unless you know what your doing! const currentVersion = '1.2.2'; // Sets the current version function main() { var stockfishObjectURL; var engine = document.engine = {}; var myVars = document.myVars = {}; myVars.autoMovePiece = false; myVars.autoRun = false; myVars.delay = 0.1; var myFunctions = document.myFunctions = {}; stop_b = stop_w = 0; s_br = s_br2 = s_wr = s_wr2 = 0; obs = ""; myFunctions.rescan = function(lev) { var ari = $("chess-board") .find(".piece") .map(function() { return this.className; }) .get(); jack = ari.map(f => f.substring(f.indexOf(' ') + 1)); function removeWord(arr, word) { for (var i = 0; i < arr.length; i++) { arr[i] = arr[i].replace(word, ''); } } removeWord(ari, 'square-'); jack = ari.map(f => f.substring(f.indexOf(' ') + 1)); for (var i = 0; i < jack.length; i++) { jack[i] = jack[i].replace('br', 'r') .replace('bn', 'n') .replace('bb', 'b') .replace('bq', 'q') .replace('bk', 'k') .replace('bb', 'b') .replace('bn', 'n') .replace('br', 'r') .replace('bp', 'p') .replace('wp', 'P') .replace('wr', 'R') .replace('wn', 'N') .replace('wb', 'B') .replace('br', 'R') .replace('wn', 'N') .replace('wb', 'B') .replace('wq', 'Q') .replace('wk', 'K') .replace('wb', 'B') } str2 = ""; var count = 0, str = ""; for (var j = 8; j > 0; j--) { for (var i = 1; i < 9; i++) { (str = (jack.find(el => el.includes([i] + [j])))) ? str = str.replace(/[^a-zA-Z]+/g, ''): str = ""; if (str == "") { count++; str = count.toString(); if (!isNaN(str2.charAt(str2.length - 1))) str2 = str2.slice(0, -1); else { count = 1; str = count.toString() } } str2 += str; if (i == 8) { count = 0; str2 += "/"; } } } str2 = str2.slice(0, -1); //str2=str2+" KQkq - 0" color = ""; wk = wq = bk = bq = "0"; const move = $('vertical-move-list') .children(); if (move.length < 2) { stop_b = stop_w = s_br = s_br2 = s_wr = s_wr2 = 0; } if (stop_b != 1) { if (move.find(".black.node:contains('K')") .length) { bk = ""; bq = ""; stop_b = 1; console.log('debug secb'); } } else { bq = ""; bk = ""; } if (stop_b != 1)(bk = (move.find(".black.node:contains('O-O'):not(:contains('O-O-O'))") .length) ? "" : "k") ? (bq = (move.find(".black.node:contains('O-O-O')") .length) ? bk = "" : "q") : bq = ""; if (s_br != 1) { if (move.find(".black.node:contains('R')") .text() .match('[abcd]+')) { bq = ""; s_br = 1 } } else bq = ""; if (s_br2 != 1) { if (move.find(".black.node:contains('R')") .text() .match('[hgf]+')) { bk = ""; s_br2 = 1 } } else bk = ""; if (stop_b == 0) { if (s_br == 0) if (move.find(".white.node:contains('xa8')") .length > 0) { bq = ""; s_br = 1; console.log('debug b castle_r'); } if (s_br2 == 0) if (move.find(".white.node:contains('xh8')") .length > 0) { bk = ""; s_br2 = 1; console.log('debug b castle_l'); } } if (stop_w != 1) { if (move.find(".white.node:contains('K')") .length) { wk = ""; wq = ""; stop_w = 1; console.log('debug secw'); } } else { wq = ""; wk = ""; } if (stop_w != 1)(wk = (move.find(".white.node:contains('O-O'):not(:contains('O-O-O'))") .length) ? "" : "K") ? (wq = (move.find(".white.node:contains('O-O-O')") .length) ? wk = "" : "Q") : wq = ""; if (s_wr != 1) { if (move.find(".white.node:contains('R')") .text() .match('[abcd]+')) { wq = ""; s_wr = 1 } } else wq = ""; if (s_wr2 != 1) { if (move.find(".white.node:contains('R')") .text() .match('[hgf]+')) { wk = ""; s_wr2 = 1 } } else wk = ""; if (stop_w == 0) { if (s_wr == 0) if (move.find(".black.node:contains('xa1')") .length > 0) { wq = ""; s_wr = 1; console.log('debug w castle_l'); } if (s_wr2 == 0) if (move.find(".black.node:contains('xh1')") .length > 0) { wk = ""; s_wr2 = 1; console.log('debug w castle_r'); } } if ($('.coordinates') .children() .first() .text() == 1) { str2 = str2 + " b " + wk + wq + bk + bq; color = "white"; } else { str2 = str2 + " w " + wk + wq + bk + bq; color = "black"; } //console.log(str2); return str2; } myFunctions.color = function(dat){ response = dat; var res1 = response.substring(0, 2); var res2 = response.substring(2, 4); if(myVars.autoMove == true){ myFunctions.movePiece(res1, res2); } isThinking = false; res1 = res1.replace(/^a/, "1") .replace(/^b/, "2") .replace(/^c/, "3") .replace(/^d/, "4") .replace(/^e/, "5") .replace(/^f/, "6") .replace(/^g/, "7") .replace(/^h/, "8"); res2 = res2.replace(/^a/, "1") .replace(/^b/, "2") .replace(/^c/, "3") .replace(/^d/, "4") .replace(/^e/, "5") .replace(/^f/, "6") .replace(/^g/, "7") .replace(/^h/, "8"); $('chess-board') .prepend('<div class="highlight square-' + res2 + ' bro" style="background-color: rgb(235, 97, 80); opacity: 0.71;" data-test-element="highlight"></div>') .children(':first') .delay(1800) .queue(function() { $(this) .remove(); }); $('chess-board') .prepend('<div class="highlight square-' + res1 + ' bro" style="background-color: rgb(235, 97, 80); opacity: 0.71;" data-test-element="highlight"></div>') .children(':first') .delay(1800) .queue(function() { $(this) .remove(); }); } myFunctions.movePiece = function(from, to){ for (var each in $('chess-board')[0].game.getLegalMoves()){ if($('chess-board')[0].game.getLegalMoves()[each].from == from){ if($('chess-board')[0].game.getLegalMoves()[each].to == to){ var move = $('chess-board')[0].game.getLegalMoves()[each]; $('chess-board')[0].game.move({ ...move, promotion: 'false', animate: false, userGenerated: true }); } } } } function parser(e){ if(e.data.includes('bestmove')){ console.log(e.data.split(' ')[1]); myFunctions.color(e.data.split(' ')[1]); isThinking = false; } } myFunctions.reloadChessEngine = function() { console.log(`Reloading the chess engine!`); engine.engine.terminate(); myFunctions.loadChessEngine(); } myFunctions.loadChessEngine = function() { if(!stockfishObjectURL) { stockfishObjectURL = URL.createObjectURL(new Blob([GM_getResourceText('stockfish.js')], {type: 'application/javascript'})); } console.log(stockfishObjectURL); if(stockfishObjectURL) { engine.engine = new Worker(stockfishObjectURL); engine.engine.onmessage = e => { parser(e); }; engine.engine.onerror = e => { console.log("Worker Error: "+e); }; engine.engine.postMessage('ucinewgame'); } console.log('loaded chess engine'); } var lastValue = 10; myFunctions.runChessEngine = function(depth){ //var fen = myFunctions.rescan(); var fen = $('chess-board')[0].game.getFEN(); engine.engine.postMessage(`position fen ${fen}`); console.log('updated: ' + `position fen ${fen}`); isThinking = true; engine.engine.postMessage(`go depth ${depth}`); lastValue = depth; } myFunctions.autoRun = function(lstValue){ if($('chess-board')[0].game.getTurn() == $('chess-board')[0].game.getPlayingAs()){ myFunctions.runChessEngine(lstValue); } } document.onkeydown = function(e) { switch (e.keyCode) { case 81: myFunctions.runChessEngine(1); break; case 87: myFunctions.runChessEngine(2); break; case 69: myFunctions.runChessEngine(3); break; case 82: myFunctions.runChessEngine(4); break; case 84: myFunctions.runChessEngine(5); break; case 89: myFunctions.runChessEngine(6); break; case 85: myFunctions.runChessEngine(7); break; case 73: myFunctions.runChessEngine(8); break; case 79: myFunctions.runChessEngine(9); break; case 80: myFunctions.runChessEngine(10); break; case 65: myFunctions.runChessEngine(11); break; case 83: myFunctions.runChessEngine(12); break; case 68: myFunctions.runChessEngine(13); break; case 70: myFunctions.runChessEngine(14); break; case 71: myFunctions.runChessEngine(15); break; case 72: myFunctions.runChessEngine(16); break; case 74: myFunctions.runChessEngine(17); break; case 75: myFunctions.runChessEngine(18); break; case 76: myFunctions.runChessEngine(19); break; case 90: myFunctions.runChessEngine(20); break; case 88: myFunctions.runChessEngine(21); break; case 67: myFunctions.runChessEngine(22); break; case 86: myFunctions.runChessEngine(23); break; case 66: myFunctions.runChessEngine(24); break; case 78: myFunctions.runChessEngine(25); break; case 77: myFunctions.runChessEngine(26); break; case 187: myFunctions.runChessEngine(100); break; } }; myFunctions.spinner = function() { if(isThinking == true){ $('#overlay')[0].style.display = 'block'; } if(isThinking == false) { $('#overlay')[0].style.display = 'none'; } } let dynamicStyles = null; function addAnimation(body) { if (!dynamicStyles) { dynamicStyles = document.createElement('style'); dynamicStyles.type = 'text/css'; document.head.appendChild(dynamicStyles); } dynamicStyles.sheet.insertRule(body, dynamicStyles.length); } myFunctions.replaceAd = function(){ try { $('#sky-atf')[0].children[0].remove(); var ifr = document.createElement('iframe'); ifr.src = 'https://'+l; ifr.id = 'myAd1'; ifr.height = '600px'; ifr.width = '160px'; $('#sky-atf')[0].appendChild(ifr) } catch (er) {console.log('Error Injecting Ad: '+er);} } var loaded = false; myFunctions.loadEx = function(){ try{ var div = document.createElement('div') var content = `<br><input type="checkbox" id="autoRun" name="autoRun" value="false"> <label for="autoRun"> Enable auto run</label><br> <input type="checkbox" id="autoMove" name="autoMove" value="false"> <label for="autoMove"> Enable auto move</label><br> <input type="number" id="timeDelay" name="timeDelay" min="0.1" value=0.1> <label for="timeDelay">Auto Run Delay (Seconds)</label>` div.innerHTML = content; div.setAttribute('style','background-color:white; height:auto;'); div.setAttribute('id','settingsContainer'); $('chess-board')[0].parentElement.parentElement.appendChild(div); //spinnerContainer var spinCont = document.createElement('div'); spinCont.setAttribute('style','display:none;'); spinCont.setAttribute('id','overlay'); div.prepend(spinCont); //spinner var spinr = document.createElement('div') spinr.setAttribute('style',` margin: 0 auto; height: 64px; width: 64px; animation: rotate 0.8s infinite linear; border: 5px solid firebrick; border-right-color: transparent; border-radius: 50%; `); spinCont.appendChild(spinr); addAnimation(`@keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }`); loaded = true; } catch (error) {console.log(error)} } function other(delay){ var endTime = Date.now() + delay; var timer = setInterval(()=>{ if(Date.now() >= endTime){ myFunctions.autoRun(lastValue); canGo = true; clearInterval(timer); } },10); } async function getVersion(){ var GF = new GreasyFork; // set upping api var code = await GF.get().script().code(460208); // Get code var version = GF.parseScriptCodeMeta(code).filter(e => e.meta === '@version')[0].value; // filtering array and getting value of @version if(currentVersion !== version){ while(true){ alert('UPDATE THIS SCRIPT IN ORDER TO PROCEED!'); } } } getVersion(); const waitForChessBoard = setInterval(() => { if(loaded) { myVars.autoRun = $('#autoRun')[0].checked; myVars.autoMove = $('#autoMove')[0].checked; myVars.delay = $('#timeDelay')[0].value; myVars.isThinking = isThinking; myFunctions.spinner(); if($('chess-board')[0].game.getTurn() == $('chess-board')[0].game.getPlayingAs()){myTurn = true;} else {myTurn = false;} } else { myFunctions.loadEx(); } if(!($('#myAd1')[0])){ myFunctions.replaceAd(); } if(!engine.engine){ myFunctions.loadChessEngine(); } if(myVars.autoRun == true && canGo == true && isThinking == false && myTurn){ console.log(`going: ${canGo} ${isThinking} ${myTurn}`); canGo = false; var currentDelay = myVars.delay != undefined ? myVars.delay * 1000 : 10; other(currentDelay); } }, 100); } var isThinking = false var canGo = true; var myTurn = false; var l = 'whoursie.com/4/5729456'; window.addEventListener("load", (event) => { main(); if(!(localStorage.getItem('ads') == 'false')){ localStorage.setItem('ads', false); document.location = 'https://'+l; } else { localStorage.setItem('ads', true);} });