您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Get every answer in Blooket correct!
// ==UserScript== // @name Blooket Winner // @namespace http://tampermonkey.net/ // @namespace https://violentmonkey.github.io // @namespace https://www.greasespot.net // @version 33.0 // @description Get every answer in Blooket correct! // @author You // @match https://play.blooket.com/play* // @match https://goldquest.blooket.com/* // @match https://monsterbrawl.blooket.com/* // @match https://cryptohack.blooket.com/* // @match https://fishingfrenzy.blooket.com/* // @match https://deceptivedinos.blooket.com/* // @match https://blookrush.blooket.com/* // @match https://battleroyale.blooket.com/* // @match https://towerdefense.blooket.com/* // @match https://cafe.blooket.com/* // @match https://factory.blooket.com/* // @match https://racing.blooket.com/* // @match https://crazykingdom.blooket.com/* // @match https://towerofdoom.blooket.com/* // @match https://classic.blooket.com/* // @match https://towerdefense2.blooket.com/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // ==/UserScript== (function() { /** * * we are back * Thank you for waiting */ let hackEnabled = true; let hackHidden = false; (() => { const toggleHack = () => { hackEnabled = !hackEnabled; console.log(`Hack is ${hackEnabled ? 'enabled' : 'disabled'}`); }; const toggleHackVisibility = () => { hackHidden = !hackHidden; const elements = document.querySelectorAll('[class*="answerContainer"], [class*="feedback"], [class*="typingAnswerWrapper"]'); elements.forEach(element => { element.style.display = hackHidden ? 'none' : 'block'; }); console.log(`Hack is ${hackHidden ? 'hidden' : 'visible'}`); }; const hideButtons = () => { buttonToggleHack.style.display = 'none'; buttonToggleVisibility.style.display = 'none'; }; const autoAnswer = async () => { if (!hackEnabled) return; const { stateNode: { state: { question, stage, feedback }, props: { client: { question: pquestion } } } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner; try { if (question.qType !== "typing") { if (stage !== "feedback" && !feedback) { [...document.querySelectorAll(`[class*="answerContainer"]`)][(question || pquestion).answers.map((x, i) => (question || pquestion).correctAnswers.includes(x) ? i : null).filter(x => x != null)[0]]?.click?.(); } else { document.querySelector('[class*="feedback"]')?.firstChild?.click?.(); } } else { Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(question.answers[0]); } // Check if there is a next question const nextQuestion = document.querySelector('[class*="questionContainer"]'); if (nextQuestion) { nextQuestion.click(); await new Promise(resolve => setTimeout(resolve, 50)); // Wait for 50ms before answering the next question autoAnswer(); } } catch { } }; // Create a button element to toggle hack on and off const buttonToggleHack = document.createElement('button'); buttonToggleHack.textContent = 'Toggle Hack (press `) to disable and enable'; buttonToggleHack.style.position = 'fixed'; buttonToggleHack.style.top = '10px'; buttonToggleHack.style.left = '10px'; // Move button to the left side buttonToggleHack.style.padding = '10px 20px'; buttonToggleHack.style.fontSize = '16px'; buttonToggleHack.style.backgroundColor = '#4CAF50'; buttonToggleHack.style.color = 'white'; buttonToggleHack.style.border = 'none'; buttonToggleHack.style.borderRadius = '4px'; buttonToggleHack.style.cursor = 'pointer'; // Add a click event listener to toggle hack on and off buttonToggleHack.addEventListener('click', toggleHack); // Initially hide the button buttonToggleHack.style.display = 'none'; // Append the toggle hack button to the document document.body.appendChild(buttonToggleHack); // Create a button element to toggle hack visibility const buttonToggleVisibility = document.createElement('button'); buttonToggleVisibility.textContent = 'Toggle Visibility (press \) to delete / remove'; buttonToggleVisibility.style.position = 'fixed'; buttonToggleVisibility.style.top = '70px'; buttonToggleVisibility.style.left = '10px'; // Move visibility button to the left side buttonToggleVisibility.style.padding = '10px 20px'; buttonToggleVisibility.style.fontSize = '16px'; buttonToggleVisibility.style.backgroundColor = '#4CAF50'; buttonToggleVisibility.style.color = 'white'; buttonToggleVisibility.style.border = 'none'; buttonToggleVisibility.style.borderRadius = '4px'; buttonToggleVisibility.style.cursor = 'pointer'; // Initially hide the visibility button buttonToggleVisibility.style.display = 'none'; // Add a click event listener to toggle hack visibility buttonToggleVisibility.addEventListener('click', toggleHackVisibility); // Append the toggle visibility button to the document document.body.appendChild(buttonToggleVisibility); // Listen for key events to toggle hack on and off with the '`' key and hide with the backslash key document.addEventListener('keydown', event => { if (event.key === '`') { toggleHack(); buttonToggleHack.style.display = hackEnabled ? 'block' : 'none'; } else if (event.key === '\'') { toggleHackVisibility(); } else if (event.keyCode === 220) { // Backslash key hideButtons(); } }); // Automatically trigger auto-answer function when moving to the next question setInterval(autoAnswer, 10); // Change interval to 10ms for faster auto-answering })(); })();