// ==UserScript==
// @name bloxd.io auto clicker, account gen (Draggable UI, Notifications, Right Default)
// @namespace https://bloxd.io
// @version 1.1
// @description Auto clicker for bloxd.io with draggable UI (defaults top right), notifications, arraylist, and simultaneous modules
// @author MakeItOrBreakIt
// @match https://staging.bloxd.io/*
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/531448/bloxdio%20auto%20clicker%2C%20account%20gen%20%28Draggable%20UI%2C%20Notifications%2C%20Right%20Default%29.user.js
// @updateURL https://update.greasyfork.icu/scripts/531448/bloxdio%20auto%20clicker%2C%20account%20gen%20%28Draggable%20UI%2C%20Notifications%2C%20Right%20Default%29.meta.js
// ==/UserScript==
(function () {
const config = JSON.parse(localStorage.getItem('bloxdConfig')) || {
leftClickKey: 'KeyR',
rightClickKey: 'KeyF'
};
let minCPS = 10, maxCPS = 15;
let leftClickActive = false, rightClickActive = false;
let leftClickInterval, rightClickInterval;
let arraylistVisible = true;
let arraylist = [];
// Notification system
function showNotification(msg, duration = 1800) {
let notif = document.createElement("div");
notif.className = "bloxd-notification";
notif.textContent = msg;
document.body.appendChild(notif);
setTimeout(() => {
notif.style.opacity = "0";
setTimeout(() => notif.remove(), 400);
}, duration);
}
// Original click simulation: dispatchEvent on canvas
const TARGET_SELECTOR = "#noa-canvas";
function simulateClick(button) {
const element = document.querySelector(TARGET_SELECTOR);
if (!element) return;
element.dispatchEvent(new MouseEvent("mousedown", { button, bubbles: true }));
element.dispatchEvent(new MouseEvent("mouseup", { button, bubbles: true }));
if (button === 0) element.dispatchEvent(new MouseEvent("click", { button, bubbles: true }));
if (button === 2) element.dispatchEvent(new MouseEvent("contextmenu", { button, bubbles: true }));
}
function randomInterval() {
return 1000 / (Math.random() * (maxCPS - minCPS) + minCPS);
}
function startLeftClick() {
if (leftClickActive) return;
leftClickActive = true;
function loop() {
if (!leftClickActive) return;
simulateClick(0);
leftClickInterval = setTimeout(loop, randomInterval());
}
loop();
updateArraylist();
}
function stopLeftClick() {
leftClickActive = false;
clearTimeout(leftClickInterval);
updateArraylist();
}
function toggleLeftClick() {
leftClickActive ? stopLeftClick() : startLeftClick();
}
function startRightClick() {
if (rightClickActive) return;
rightClickActive = true;
function loop() {
if (!rightClickActive) return;
simulateClick(2);
rightClickInterval = setTimeout(loop, randomInterval());
}
loop();
updateArraylist();
}
function stopRightClick() {
rightClickActive = false;
clearTimeout(rightClickInterval);
updateArraylist();
}
function toggleRightClick() {
rightClickActive ? stopRightClick() : startRightClick();
}
function saveConfig() {
localStorage.setItem('bloxdConfig', JSON.stringify(config));
}
function clearCookies() {
document.cookie.split(";").forEach(cookie => {
document.cookie = cookie.split("=")[0] + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/";
});
setTimeout(() => location.reload(), 1000);
}
function updateArraylist() {
arraylist = [];
if (leftClickActive) arraylist.push("Auto Left Click");
if (rightClickActive) arraylist.push("Auto Right Click");
renderArraylist();
}
function renderArraylist() {
const arrDiv = document.getElementById("bloxd-arraylist");
arrDiv.innerHTML = arraylist.length
? arraylist.map(f => `${f}`).join("
")
: `No features active`;
arrDiv.style.display = arraylistVisible ? "block" : "none";
}
function createUI() {
// Load saved position or use default (right: 10px, top: 10px)
let saved = JSON.parse(localStorage.getItem('bloxdUIPos') || '{}');
let useCustom = typeof saved.x === "number" && typeof saved.y === "number";
let startX = saved.x || 0, startY = saved.y || 10;
// Main UI container
let ui = document.createElement("div");
ui.id = "bloxd-ui-container";
if (useCustom) {
ui.setAttribute("style", `position: fixed; top: ${startY}px; left: ${startX}px; right: auto; background: rgba(0,0,0,0.8); color: white; padding: 10px; border-radius: 8px; z-index: 9999; font-size: 14px; min-width: 320px; max-width: 440px; box-shadow: 0 2px 8px #0008; cursor: move;`);
} else {
ui.setAttribute("style", `position: fixed; top: 10px; right: 10px; left: auto; background: rgba(0,0,0,0.8); color: white; padding: 10px; border-radius: 8px; z-index: 9999; font-size: 14px; min-width: 320px; max-width: 440px; box-shadow: 0 2px 8px #0008; cursor: move;`);
}
ui.innerHTML = `