// ==UserScript== // @name Skribbl Cheat German by Stabel // @version 1.0.0 // @description Fetches the Skribbl.io wordlist and displays clickable hints based on the current word's pattern. // @author Stabel // @match https://skribbl.io/* // @grant none // @namespace https://greasyfork.org/en/users/938580-stabel // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/450561/Skribbl%20Cheat%20German%20by%20Stabel.user.js // @updateURL https://update.greasyfork.icu/scripts/450561/Skribbl%20Cheat%20German%20by%20Stabel.meta.js // ==/UserScript== const wort = document.getElementById("currentWord"); const inputChat = document.getElementById("inputChat"); const formChat = document.getElementById("formChat"); const containerGamePlayers = document.getElementById("containerGamePlayers"); const containerSidebar = document.getElementById("containerSidebar"); const votekick = document.getElementById("votekickCurrentplayer"); const logo = document.getElementsByClassName("logo logoSmall")[0]; const gameHeader = document.getElementsByClassName("gameHeader")[0]; const DomBody = document.body; const timer = document.getElementById("timer"); const timerContainer = document.getElementsByClassName("timer-container")[0]; const inputName = document.getElementById("inputName"); const boxMessages = document.getElementById("boxMessages"); let wortVal = ''; let wortListe; let hints; var searchedWords = []; var cheatOn = false; var theme = "default"; var guiDivId; var guessedStyleId; var startDivId; var guessesHref; var themeSpanId; var autoSpanId; var hintsDisplaySpanId; var playerDiv; var contentDiv; window.onkeydown = function(e){ if(e.altKey){ e.preventDefault(); } } DomBody.onkeyup = (event) => { if(event.key === 'Alt'){ if(!document.getElementById("guiDiv")){ startCheat(); } else{ stopCheat(); } } }; function start(){ var startDiv = document.createElement("div"); startDiv.style.backgroundColor = "#eee"; startDiv.style.textAlign = "center"; startDiv.style.margin = "0 0 10px 0"; startDiv.style.fontWeight = "bold"; startDiv.style.borderRadius = "2px"; startDiv.style.padding = "3px"; startDiv.style.display = "block"; startDiv.setAttribute("id", "startDiv"); var startButton = document.createElement("button"); startButton.setAttribute("id", "cheatStartButton"); startButton.style.background = "#fafafa"; startButton.style.borderRadius = "2px"; startButton.style.border = "0"; startButton.style.color = "rgb(0, 0, 0)"; startButton.style.cursor = "default"; startButton.innerHTML = "Drücke Alt zum Starten"; startDiv.appendChild(startButton); containerSidebar.insertBefore(startDiv, document.getElementById("containerFreespace")); wort.style.userSelect = "all"; timerContainer.style.userSelect = "all"; startDivId = document.getElementById("startDiv"); } function stopCheat(){ guiDivId.remove(); startDivId.style.display = "block"; cheatOn = false; } function createGui(){ //Erstellung der Über Div var guiDiv = document.createElement("div"); guiDiv.style.padding = "1em"; guiDiv.style.margin = "0 0 10px 0"; guiDiv.style.fontWeight = "bold"; guiDiv.style.borderRadius = "2px"; guiDiv.style.userSelect = "none"; guiDiv.setAttribute("id", "guiDiv"); // //Erstellung des Animerten Hintergrundes und Sonstigen Style var styleTag = document.createElement("style"); styleTag.innerHTML = ` #guiDiv{ background:linear-gradient(-35deg,#ee7752, #e73c7e, #23a6d5, #23d5ab); background-size: 800% 800%;animation: gradient 120s linear infinite; } @keyframes gradient{ 0%{background-position: 0% 50%;} 50%{background-position: 100% 50%;} 100%{background-position: 0% 50%;} } .aHints{ cursor:pointer; text-decoration: none; color:#ADADC9; } a:link{ text-decoration: none; } a:visited{ text-decoration: none; } a:hover{ text-decoration: none; color:#808080; animation:gradient 120s linear infinite; } .themesBtn{ color:#696880; margin-right:5px; cursor:pointer; text-decoration:none; } @keyframes rainbow{ 0%{background-color: red} 12.5%{background-color: orange} 25%{background-color: yellow} 37.5%{background-color: lime} 50%{background-color: green} 62.5%{background-color: #4877F4} 75%{background-color: blue} 87.5%{background-color: purple} 100%{background-color: red} }`; // //Erstellung der Überschrift var nameCheat = document.createElement("p"); nameCheat.innerHTML = "Skribbl.io Cheatv1.0 German by Stabel"; nameCheat.style.textAlign = "center"; nameCheat.style.margin = "0"; nameCheat.style.color = "#C5C6D0"; // //Erstellung des Schließen Buttons var stopButton = document.createElement("button"); stopButton.setAttribute("id", "cheatStopButton"); stopButton.innerHTML = "Alt"; stopButton.style.fontSize = "12px"; stopButton.style.position = "absolute"; stopButton.style.top = "0"; stopButton.style.right = "0"; stopButton.style.border = "0"; stopButton.style.backgroundColor = "red"; stopButton.style.borderRadius = "2px"; stopButton.style.padding = "1px 2px 1px 2px"; stopButton.style.cursor = "default"; // //Erstellung des Spieler Namen Spans var playerSpan = document.createElement("span"); playerSpan.style.display = "none"; playerSpan.setAttribute("id", "playerNameSpan"); // //Erstellung des Theme menu var themesMenu = document.createElement("div"); themesMenu.setAttribute("id","themesMenu"); themesMenu.style.textAlign = "center"; var themeTitle = document.createElement("p"); themeTitle.innerHTML = "Designs"; themeTitle.style.textAlign = "center"; themeTitle.style.margin = "0"; themeTitle.style.color = "#CBCBCB"; themesMenu.appendChild(themeTitle); var themeSpan = document.createElement("span"); themeSpan.style.display = "none"; themeSpan.innerHTML = "default"; themeSpan.setAttribute("id", "themeSpan"); themesMenu.appendChild(themeSpan); var themeDefault = document.createElement("a"); themeDefault.innerHTML = "Default"; themeDefault.setAttribute("class", "themesBtn"); themeDefault.setAttribute("onclick", "document.getElementById('themeSpan').innerHTML = 'default'"); themesMenu.appendChild(themeDefault); var themeMeme = document.createElement("a"); themeMeme.innerHTML = "Meme"; themeMeme.setAttribute("class", "themesBtn"); themeMeme.setAttribute("onclick", "document.getElementById('themeSpan').innerHTML = 'meme'"); themesMenu.appendChild(themeMeme); // //Erstellen des Auto Guess Menues var autoMenu = document.createElement("div"); autoMenu.setAttribute("id","autoMenu"); autoMenu.style.textAlign = "center"; var autoTitle = document.createElement("p"); autoTitle.innerHTML = "Automatisches Raten"; autoTitle.style.textAlign = "center"; autoTitle.style.margin = "0"; autoTitle.style.color = "#CBCBCB"; autoMenu.appendChild(autoTitle); var autoSpan = document.createElement("span"); autoSpan.style.display = "none"; autoSpan.innerHTML = "off"; autoSpan.setAttribute("id", "autoSpan"); autoMenu.appendChild(autoSpan); var autoOn = document.createElement("a"); autoOn.innerHTML = "Anschalten"; autoOn.setAttribute("class", "themesBtn"); autoOn.setAttribute("onclick", "document.getElementById('autoSpan').innerHTML = 'on'; if(document.getElementById('playerNameSpan').innerHTML.length == 0){document.getElementById('playerNameSpan').innerHTML = playerName}"); autoMenu.appendChild(autoOn); var autoOff = document.createElement("a"); autoOff.innerHTML = "Ausschalten"; autoOff.setAttribute("class", "themesBtn"); autoOff.setAttribute("onclick", "document.getElementById('autoSpan').innerHTML = 'off'"); autoMenu.appendChild(autoOff); // //Erstellen des erratenen wort menus var guessedWord = document.createElement("div"); guessedWord.style.textAlign = "center"; var guessedWordTitle = document.createElement("p"); guessedWordTitle.innerHTML = "Zuletzt Geraten:"; guessedWordTitle.style.textAlign = "center"; guessedWordTitle.style.margin = "0"; guessedWordTitle.style.color = "#CBCBCB"; guessedWord.appendChild(guessedWordTitle); var guessedWordSpan = document.createElement("span"); guessedWordSpan.setAttribute("id", "guessedWordSpan"); guessedWord.appendChild(guessedWordSpan); // //Einfügen der Elemente in einander guiDiv.appendChild(nameCheat); guiDiv.appendChild(stopButton); guiDiv.appendChild(styleTag); guiDiv.appendChild(guessedWord); guiDiv.appendChild(autoMenu); guiDiv.appendChild(themesMenu); guiDiv.appendChild(playerSpan); // //Injection der Elemente in das Skribbl.io DOM containerSidebar.insertBefore(guiDiv, document.getElementById("containerFreespace")); // guiDivId = document.getElementById("guiDiv"); themeSpanId = document.getElementById("themeSpan"); autoSpanId = document.getElementById("autoSpan"); } function createGuesses(){ if(!document.getElementById("guessesDiv")){ var guessesDiv = document.createElement("div"); guessesDiv.style.display = "none"; guessesDiv.setAttribute("id", "guessesDiv"); guiDivId.appendChild(guessesDiv); } } async function wordDB(){ if(wortListe == undefined){ try { wortListe = await fetch( 'https://api.npoint.io/f3110ae2e42dbf8a5ddc' ).then((response) => response.json()); } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)); return wordDB(); } wortListe = JSON.stringify(wortListe); wortListe = wortListe.substring(1, wortListe.length - 1); } } function insertAfter(referenceNode, newNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); } function wortSuchen(){ const wortVal = wort.innerHTML; let wordRegex = wortVal.replace(/_/g, '[^ \\-"]'); wordRegex = '"'.concat(wordRegex, '"'); wordRegex = new RegExp(wordRegex, 'g'); hints = wortListe.match(wordRegex); hints = hints.map((hint) => { return hint.substring(1, hint.length - 1); }); hints = hints.sort((a, b) => { return a.toLowerCase().localeCompare(b.toLowerCase()); }); checkGuessed(); for(i=0;i { if(cheatOn == true){ wortSuchen(); roundReset(); checkTheme(); getPlayerDiv(); getContentDiv(); } }, 500); setInterval(() => { if(cheatOn == true){ autoGuess(); } }, 950);