Automatic answer bot for https://play.ttrockstars.com/
// ==UserScript==
// @name TTRockstars Devil
// @namespace https://github.com/usercromix/TTrockstars-Devil
// @version 1.0
// @description Automatic answer bot for https://play.ttrockstars.com/
// @author usercromix
// @license TTrockstars Devil © 2024 by usercromix, © All Rights Reserved
// @match https://play.ttrockstars.com/*
// @icon https://play.ttrockstars.com/ttrs-favicon.png
// @grant GM_log
// ==/UserScript==
(function() {
'use strict';
GM_log("Your script is running.");
// Key code for enabling/disabling the bot (default is 'B' key)
var toggleKey = 66; // 'B' key code
var speed = 0.225; // Default speed (equivalent to 225 milliseconds)
// Variable to track whether the bot is running or not
var running = false;
// Function to toggle the bot state
function toggleBot() {
running = !running;
GM_log("Bot " + (running ? "enabled" : "disabled"));
}
// Function to change the toggle key
function changeToggleKey(newKeyCode) {
toggleKey = newKeyCode;
GM_log("Toggle key changed to: " + String.fromCharCode(newKeyCode));
}
// Function to set the speed
function setSpeed(newSpeed) {
speed = newSpeed;
GM_log("Speed set to: " + newSpeed);
}
// Event listener to toggle the bot when the toggle key is pressed
document.addEventListener("keydown", function(event) {
if (event.keyCode === toggleKey) {
toggleBot();
} else if (event.shiftKey && event.keyCode !== 16) { // Only Shift key, excluding Shift itself
toggleMenu();
}
});
// Toggle the menu visibility
function toggleMenu() {
var menu = document.getElementById("menu");
if (menu.style.display === "block") {
menu.style.display = "none";
} else {
menu.style.display = "block";
}
}
// Set up an interval function that runs every 100 milliseconds
setInterval(() => {
var equation = document.getElementsByClassName("notranslate height-100 noselect current")[0];
var input = document.getElementsByClassName("input-holder width-100")[0];
if (input == undefined || input == null) {
input = document.getElementsByClassName("input-holder width-100 hint")[0];
}
var enter = document.getElementsByClassName("key-ent ng-star-inserted")[0];
var top = document.getElementsByClassName("next-game-question padding-5")[0];
var keypad = document.getElementsByClassName("keyboard mat-white-color bg-2")[0];
var play;
if (equation != undefined) {
if (!running) {
return;
}
let el = document.createElement("div");
el.setAttribute("href", "https://github.com/usercromix/TTrockstars-Devil");
el.setAttribute("target", "_blank");
for (var i = 0; i < top.children.length; i++) {
top.children[i].remove();
}
el.style = "background-color: peachpuff; color: black; width: auto; align-items: center; margin-top: 10px; margin-bottom: 10px; padding: 5px; border-radius: 10px; text-align: center; font-family: 'Fredoka One', sans-serif;";
el.innerHTML = "Exploit Enabled";
top.appendChild(el);
var id = setInterval(() => {
if (running) {
let raw = equation.innerHTML.replace("×", "*").replace("÷", "/");
console.log(raw);
while (raw.includes("<!---->")) {
raw = raw.replace("<!---->", "");
}
raw = raw.replace(/<\s*span[^>]*>.*?<\s*\/\s*span\s*>/g, '');
raw = raw.trim();
console.log(raw);
let answer = String(eval(raw));
GM_log("answer: " + answer);
[...answer].forEach(char => {
for (var row = 0; row < keypad.children.length; row++) {
for (var key = 0; key < keypad.children[row].children.length; key++) {
let elem = keypad.children[row].children[key];
if (elem.innerHTML.trim() == char) {
elem.click();
elem.style.transform = "scale(0.9)";
setTimeout(() => {
elem.style.transform = "scale(1)";
}, 100);
return;
}
}
}
});
enter.click();
} else {
clearInterval(id);
}
}, speed * 1000); // Convert speed to milliseconds
} else {
running = false;
var gameOver = document.getElementsByClassName("stamp center mat-white-color")[0];
if (gameOver != undefined) {
gameOver.innerHTML = "You like the hacks?😊";
}
}
}, 100);
// Create the menu
var menu = document.createElement("div");
menu.id = "menu";
menu.style = "display: none; position: fixed; top: 10px; left: 10px; z-index: 9999; background-color: rgba(255, 255, 255, 0.8); border: 1px solid #ccc; padding: 20px; border-radius: 10px; width: 300px; font-family: Arial, sans-serif; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); transition: transform 0.3s;";
// Menu content
var menuContent = "<div style='margin-bottom: 20px; text-align: center; font-size: 20px; font-weight: bold; color: #333;'>TTRockstars Devil Menu</div>" +
"<div style='margin-bottom: 20px;'>Recommended to change toggle key before going into a round! Also, speed might be a little buggy so change it if you know how to use! To open and close menu Shift + M on keyboard</div>" +
"<label style='margin-bottom: 15px; display: block;'>Toggle Key: <input type='text' id='toggleKey' value='" + String.fromCharCode(toggleKey) + "' style='width: 30px; text-align: center;'></label>" +
"<label style='margin-bottom: 15px; display: block;'>Speed: <input type='text' id='speed' value='" + speed + "' style='width: 50px; text-align: center;'></label>" +
"<button id='apply' style='padding: 8px 15px; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; margin-right: 10px; transition: transform 0.3s;'>Apply Changes</button>" +
"<button id='closeMenu' style='padding: 8px 15px; background-color: #f44336; color: white; border: none; border-radius: 5px; cursor: pointer; transition: transform 0.3s;'>Close</button>";
menu.innerHTML = menuContent;
document.body.appendChild(menu);
// Add event listener for applying changes
document.getElementById("apply").addEventListener("click", function() {
var newToggleKey = document.getElementById("toggleKey").value.toUpperCase().charCodeAt(0);
changeToggleKey(newToggleKey);
var newSpeed = parseFloat(document.getElementById("speed").value);
setSpeed(newSpeed);
this.style.transform = "scale(0.9)";
setTimeout(() => {
this.style.transform = "scale(1)";
}, 100);
});
// Add event listener to close the menu
document.getElementById("closeMenu").addEventListener("click", function() {
toggleMenu();
this.style.transform = "scale(0.9)";
setTimeout(() => {
this.style.transform = "scale(1)";
}, 100);
});
// Add hover animation for buttons
var buttons = document.querySelectorAll("#menu button");
buttons.forEach(button => {
button.addEventListener("mouseenter", function() {
this.style.transform = "scale(0.95)";
});
button.addEventListener("mouseleave", function() {
this.style.transform = "scale(1)";
});
});
})();