Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Path: blob/main/Blook Hack Userscript.js
Views: 137
// PRESS KEY '`' FOR TOGGLE1document.body.insertAdjacentHTML("beforeend","\n<div class='gui2'>\n <div class=\"hack-checkbox\">\n <label for='' style='text-decoration-line:underline'>Utils</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='enemySpeedMultiplier'>Enemy Speed Multiplier: </label>\n <input id='enemySpeedMultiplier' class='input-field'>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='' style='text-decoration-line:underline'>Global</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <input id='autoAnswer' class='hotkey' type='checkbox'>\n <label for='autoAnswer' class=\"slider\"></label>\n <label for='autoAnswer'>Auto Answer</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <input id='autoGetQuestion' class='hotkey' type='checkbox'>\n <label for='autoGetQuestion' class=\"slider\"></label>\n <label for='autoGetQuestion'>Auto Get Question</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <input id='autoNextQuestion' class='hotkey' type='checkbox'>\n <label for='autoNextQuestion' class=\"slider\"></label>\n <label for='autoNextQuestion'>Auto Next Question</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='' style='text-decoration-line:underline'>Tower Defense</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='Health'>Health: </label>\n <input id='Health' class='input-field'>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='Tokens'>Tokens: </label>\n <input id='Tokens' class='input-field'>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='Damage'>Damage: </label>\n <input id='Damage' class='input-field'>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label for='Round'>Round: </label>\n <input id='Round' class='input-field'>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <input id='autoNextRound' class='hotkey' type='checkbox'>\n <label for='autoNextRound' class=\"slider\"></label>\n <label for='autoNextRound'>Auto Next Round</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <input id='autoKillEnemies' class='hotkey' type='checkbox'>\n <label for='autoKillEnemies' class=\"slider\"></label>\n <label for='autoKillEnemies'>Auto Kill Enemies</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <input id='regeneratingHealth' class='hotkey' type='checkbox'>\n <label for='regeneratingHealth' class=\"slider\"></label>\n <label for='regeneratingHealth'>Regenerating Health</label>\n </div>\n <br>\n <div class=\"hack-checkbox\">\n <label id='maxtowers' class='button'>Max Towers</label>\n <label id='killenemies' class='button'>Kill Enemies</label>\n </div>\n <br>\n</div>\n\n<style>\n .gui2 {\n width: 250px;\n border-radius: 20px;\n border: 2px solid #fff;\n padding: 20px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(8px);\n animation: fadeIn 0.5s ease-out;\n z-index: 9999999999;\n }\n\n .hack-checkbox {\n display: flex;\n align-items: center;\n }\n\n .hack-checkbox input[type='checkbox'] {\n display: none;\n }\n\n .hack-checkbox .slider {\n position: relative;\n width: 40px;\n height: 20px;\n background-color: #ccc;\n border-radius: 20px;\n cursor: pointer;\n }\n\n .hack-checkbox .slider:before {\n position: absolute;\n content: \"\";\n height: 16px;\n width: 16px;\n left: 2px;\n bottom: 2px;\n background-color: #fff;\n border-radius: 50%;\n transition: 0.4s;\n }\n\n input[type='checkbox']:checked + .slider:before {\n transform: translateX(20px);\n }\n \n input {\n \n }\n\n .hack-checkbox label {\n margin-left: 10px;\n color: #fff;\n font-family: Arial, sans-serif;\n }\n\n .slider-controls {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .slider-controls label {\n color: #fff;\n font-family: Arial, sans-serif;\n }\n\n .slider-controls input[type='range'] {\n width: 100%;\n -webkit-appearance: none;\n height: 5px;\n border-radius: 10px;\n background: #bbb;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n }\n\n .slider-controls input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #fff;\n cursor: pointer;\n }\n\n .slider-controls input[type='range']::-moz-range-thumb {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #fff;\n cursor: pointer;\n }\n\n .slider-controls output {\n color: #fff;\n font-family: Arial, sans-serif;\n }\n \n .button {\n cursor: pointer;\n background: rgba(0, 0, 0, .2);\n border-radius: 15px;\n padding: 5px;\n }\n \n .input-field {\n width: 25px;\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: 5px;\n font-size: 16px;\n outline: none;\n height: .05px;\n}\n\n/* Styling for the input field when focused */\n.input-field:focus {\n border-color: dodgerblue;\n box-shadow: 0 0 5px rgba(0, 0, 255, 0.5);\n}\n\n/* Styling for the input field placeholder */\n.input-field::placeholder {\n color: #aaa;\n}\n</style>\n");var config={utils:{enemySpeedMult:1},global:{autoAnswer:!1,autoGetQuestions:!1,autoNextQuestion:!1},TowerDefense:{health:null,tokens:null,damage:null,round:null,enemySpeedMultiplier:1,autoNextRound:!1,autoKillEnemies:!1,regeneratingHealth:!1,maxAllTowers:function(){getFuncs().towers.forEach((e=>{e.damage=1e4,e.level=1e4,e.range=1e4}))},clearEnemies:function(){getFuncs().enemies.forEach((e=>{e.health=0,e.alive=!1}))},get health(){return getFuncs().state.health},get tokens(){return getFuncs().state.tokens},get damage(){return getFuncs().dmg},get round(){return getFuncs().state.round},set health(e){getFuncs().state.health=e},set tokens(e){getFuncs().state.tokens=e},set damage(e){getFuncs().dmg=e},set round(e){getFuncs().state.round=e},get enemySpeedMultiplier(){return config.utils.enemySpeedMult},set enemySpeedMultiplier(e){config.utils.enemySpeedMult=e,getFuncs().enemies.forEach((n=>{n.speed=n.speed*e}))}},GameMode:null,get GameMode(){return window.location.href.split("https://towerdefense.blooket.com/")[1]}};function getFuncs(){return Object.values(document.querySelector("#app > div > div"))[1]?.children[1]?._owner?.stateNode}Object.prototype.filter||Object.defineProperty(Object.prototype,"filter",{value:function(e,n){const t={};for(const o in this)this.hasOwnProperty(o)&&e.call(n,this[o],o,this)&&(t[o]=this[o]);return t},enumerable:!1,writable:!0,configurable:!0});var f,r=!0;function a(){if(r){if(f=requestAnimationFrame(a),config.global.autoAnswer&&document.querySelector('div[class*="questionText"]'))try{Array.from(document.querySelectorAll('div[class*="answerText"]')).filter((e=>e.firstChild.textContent==getFuncs().memoizedState.question.correctAnswers[0]))[1].click()}catch(e){Array.from(document.querySelectorAll('div[class*="answerText"]')).filter((e=>e.firstChild.textContent==getFuncs().state.question.correctAnswers[0]))[1].click()}config.global.autoGetQuestions&&document.querySelector('div[class*="modalButton"]')?.firstChild&&document.querySelector('div[class*="modalButton"]')?.firstChild.click(),config.global.autoNextQuestion&&document.querySelector('div[class*="nextText"]')&&document.querySelector('div[class*="nextText"]').click()}if("defense"===config.GameMode)getFuncs()?.state&&(config.TowerDefense.regeneratingHealth&&getFuncs().state.health<1e5&&(getFuncs().state.health=1e5),config.TowerDefense.autoNextRound&&document.querySelector("#nextRound")&&nextRound.click(),config.TowerDefense.autoKillEnemies&&getFuncs().enemies&&config.TowerDefense.clearEnemies())}try{a()}catch(e){r=!1,cancelAnimationFrame(f),console.log(e)}document.getElementById("enemySpeedMultiplier").addEventListener("input",(function(){config.TowerDefense.enemySpeedMultiplier=parseFloat(this.value)})),document.getElementById("autoAnswer").addEventListener("change",(function(){config.global.autoAnswer=this.checked})),document.getElementById("autoGetQuestion").addEventListener("change",(function(){config.global.autoGetQuestions=this.checked})),document.getElementById("autoNextQuestion").addEventListener("change",(function(){config.global.autoNextQuestion=this.checked})),document.getElementById("Health").addEventListener("input",(function(){config.TowerDefense.health=parseFloat(this.value)})),document.getElementById("Tokens").addEventListener("input",(function(){config.TowerDefense.tokens=parseFloat(this.value)})),document.getElementById("Damage").addEventListener("input",(function(){config.TowerDefense.damage=parseFloat(this.value)})),document.getElementById("Round").addEventListener("input",(function(){config.TowerDefense.round=parseFloat(this.value)})),document.getElementById("autoNextRound").addEventListener("change",(function(){config.TowerDefense.autoNextRound=this.checked})),document.getElementById("autoKillEnemies").addEventListener("change",(function(){config.TowerDefense.autoKillEnemies=this.checked})),document.getElementById("regeneratingHealth").addEventListener("change",(function(){config.TowerDefense.regeneratingHealth=this.checked})),document.getElementById("maxtowers").addEventListener("click",(function(){config.TowerDefense.maxAllTowers()})),document.getElementById("killenemies").addEventListener("click",(function(){config.TowerDefense.clearEnemies()})),document.querySelector(".gui2").style.display="block",document.addEventListener("keyup",(e=>{"`"==e.key&&(document.querySelector(".gui2").style.display="none"==document.querySelector(".gui2").style.display?"block":"none")}));234