// ==UserScript== // @name Click Helper [bloxd io/bloxd/bloxd.io] // @namespace https://bloxd.io // @icon https://i.ibb.co/rfmXMwQz/Click-Helper-Icon.png // @version 1.5.1.8 // @description Auto Clicker (L/R), Custom CPS, Account Generator, Killaura, Aimbot, BHOP, ViewModel, Player ESP. // @author MakeItOrBreakIt // @license MIT // @match *://*.bloxd.io/* // @match *://*.bloxd.com/* // @match *://*.bloxd.dev/* // @match *://*.bloxdhop.io/* // @match *://*.bloxdunblocked.*/* // @match *://*.unbloxd.*/* // @match *://*.playbloxd.com/* // @match *://*.buildhub.*/* // @match *://*.skillhub.vip/* // @match *://*.classcraft.*/* // @match *://*.collabspace.space/* // @match *://*.creativebuilding.*/* // @match *://*.bedwars*.net/* // @match *://*.bedwars*.space/* // @match *://*.buildminecreate.com/* // @match *://*.iogamesunblocked.com/* // @match *://*.unblockedgames.club/* // @grant none // @run-at document-start // @downloadURL https://update.greasyfork.icu/scripts/531448/Click%20Helper%20%5Bbloxd%20iobloxdbloxdio%5D.user.js // @updateURL https://update.greasyfork.icu/scripts/531448/Click%20Helper%20%5Bbloxd%20iobloxdbloxdio%5D.meta.js // ==/UserScript== /* * MIT License * Copyright (c) 2026 MakeItOrBreakIt */ (() => { 'use strict'; const attempt = (fn, fb = null) => { try { return fn(); } catch (_) { return fb; } }; const vals = o => Object.values(o ?? {}); const ks = o => Object.keys(o ?? {}); const _call = Function.prototype.call; const bloxd = { noa: null, init() { let captured = false; Object.defineProperty(Function.prototype, 'call', { enumerable: false, configurable: true, writable: true, value: function (thisArg, ...args) { if (!captured) { const c = args[0]; if (c && c.entities && c.bloxd) { captured = true; window.noa = c; bloxd.noa = c; console.log( "%c[Click Helper]%c Injected successfully!", "background: linear-gradient(90deg, #7c5cfc, #c84cff); color: #fff; font-weight: bold; padding: 3px 8px; border-radius: 4px;", "color: #50FA7B; font-weight: bold; margin-left: 6px;" ); Function.prototype.call = _call; } } return _call.apply(this, [thisArg, ...args]); } }); } }; const _attackFnCache = new Map(); const game = { _held: null, inGame() { return !!(bloxd.noa?.bloxd?.client?.msgHandler); }, getPos(id) { return attempt(() => bloxd.noa.entities.getState(id, 'position').position); }, getIds() { return attempt(() => bloxd.noa?.bloxd?.getPlayerIds?.() ?? {}, {}); }, getMovement(id = 1) { return attempt(() => bloxd.noa.entities.getState(id, 'movement')); }, getHeld(id = 1) { if (!bloxd.noa) return null; if (!this._held) this._held = vals(bloxd.noa.entities).find(fn => { if (typeof fn !== 'function' || fn.length !== 1) return false; const s = fn.toString(); return s.length < 80 && s.includes(').') && !s.includes('opWrapper'); }); return attempt(() => this._held?.(id)); }, _findAttackFn(item) { const proto = Object.getPrototypeOf(item); if (_attackFnCache.has(proto)) return _attackFnCache.get(proto); const fn = Object.getOwnPropertyNames(proto) .map(k => item[k]) .find(f => typeof f === 'function' && f.length === 3) ?? null; if (fn) _attackFnCache.set(proto, fn); return fn; }, doAttack(id) { attempt(() => { const item = attempt(() => game.getHeld(1)?.heldItemState?.fistItem); if (!item) return; const fn = game._findAttackFn(item); if (!fn) return; let offset = [0, 0, 0]; const jitter = state.killaura.jitter; if (jitter > 0) { const cam = bloxd.noa?.camera; if (cam && cam.heading !== undefined && cam.pitch !== undefined) { const yaw = cam.heading + (Math.random() - 0.5) * jitter * 0.35; const pitch = cam.pitch + (Math.random() * 0.8 - 0.2) * jitter * 0.5; const amt = jitter * 0.12; offset = [ Math.sin(yaw) * Math.cos(pitch) * amt, Math.sin(pitch) * amt, Math.cos(yaw) * Math.cos(pitch) * amt ]; } else { offset = [ (Math.random() - 0.5) * jitter, (Math.random() - 0.5) * jitter * 0.8, (Math.random() - 0.5) * jitter * 0.6 ]; } } fn.call(item, offset, id.toString(), 'HeadMesh'); }); }, fireInput(action, down) { attempt(() => { const inp = bloxd.noa?.inputs; if (!inp) return; (down ? inp.down : inp.up)._events?.[action]?.(0); }); }, updateESP(enabled, now) { if (!this._espCache) this._espCache = { lastUpdate: 0, interval: 100 }; if (now - this._espCache.lastUpdate < this._espCache.interval) return; this._espCache.lastUpdate = now; attempt(() => { if (!bloxd.noa) return; const r = vals(bloxd.noa)[12]; if (!r) return; const tm = vals(r).find(v => v?.thinMeshes)?.thinMeshes; if (Array.isArray(tm)) { tm.forEach(i => { const m = i?.meshVariations?.__DEFAULT__?.mesh; if (m && typeof m.renderingGroupId === "number") { m.renderingGroupId = enabled ? 2 : 0; } }); } }); } }; const state = { killaura: { enabled: false, delay: 50, range: 6.7, jitter: 0.35, _last: 0 }, aimbot: { enabled: false, range: 16, smooth: 0.8, delay: 8, fov: 135, _last: 0 }, clicker: { left: { enabled: false, iv: null }, right: { enabled: false, iv: null }, cpsMin: 14, cpsMax: 19 }, movement: { bhop: false, bhopChance: 100 }, visuals: { esp: false }, viewmodel: { enabled: false, pos: { x: 0, y: 0, z: 0 }, rot: { x: 0, y: 0, z: 0 }, spin: false, spinSpeed: { x: 0, y: 2, z: 0 }, spinAngle: { x: 0, y: 0, z: 0 }, _lastTime: 0 }, binds: { ka: 'KeyK', aim: '', lc: 'KeyR', rc: 'KeyF', bhop: 'KeyZ', esp: '', vm: '', menu: 'ShiftRight' } }; let savedBinds = {}; const bindsStr = localStorage.getItem('clickHelper-keybinds'); if (bindsStr) { try { savedBinds = JSON.parse(bindsStr); } catch (_) {} } Object.assign(state.binds, savedBinds); let savedSettings = {}; const settingsStr = localStorage.getItem('clickHelper-settings'); if (settingsStr) { try { savedSettings = JSON.parse(settingsStr); } catch (_) {} } if (savedSettings.killaura) Object.assign(state.killaura, savedSettings.killaura); if (savedSettings.aimbot) Object.assign(state.aimbot, savedSettings.aimbot); if (savedSettings.clicker) { state.clicker.cpsMin = savedSettings.clicker.cpsMin ?? state.clicker.cpsMin; state.clicker.cpsMax = savedSettings.clicker.cpsMax ?? state.clicker.cpsMax; } if (savedSettings.movement) state.movement.bhopChance = savedSettings.movement.bhopChance ?? state.movement.bhopChance; if (savedSettings.viewmodel) { if (savedSettings.viewmodel.pos) Object.assign(state.viewmodel.pos, savedSettings.viewmodel.pos); if (savedSettings.viewmodel.rot) Object.assign(state.viewmodel.rot, savedSettings.viewmodel.rot); if (savedSettings.viewmodel.spinSpeed) Object.assign(state.viewmodel.spinSpeed, savedSettings.viewmodel.spinSpeed); } function saveBinds() { localStorage.setItem('clickHelper-keybinds', JSON.stringify(state.binds)); } function saveSettings() { const settings = { killaura: { delay: state.killaura.delay, range: state.killaura.range, jitter: state.killaura.jitter }, aimbot: { range: state.aimbot.range, smooth: state.aimbot.smooth, delay: state.aimbot.delay }, clicker: { cpsMin: state.clicker.cpsMin, cpsMax: state.clicker.cpsMax }, movement: { bhopChance: state.movement.bhopChance }, viewmodel: { pos: state.viewmodel.pos, rot: state.viewmodel.rot, spinSpeed: state.viewmodel.spinSpeed } }; localStorage.setItem('clickHelper-settings', JSON.stringify(settings)); } let saveTimeout; function debouncedSave() { clearTimeout(saveTimeout); saveTimeout = setTimeout(() => { saveBinds(); saveSettings(); }, 300); } function toggleClicker(side) { const s = state.clicker[side]; const action = side === 'left' ? 'primary-fire' : 'alt-fire'; s.enabled = !s.enabled; clearTimeout(s.iv); if (s.enabled) { const tick = () => { if (!s.enabled) return; game.fireInput(action, true); setTimeout(() => game.fireInput(action, false), 20); let next = 1000 / (state.clicker.cpsMin + Math.random() * (state.clicker.cpsMax - state.clicker.cpsMin)); s.iv = setTimeout(tick, Math.max(10, next)); }; tick(); } return s.enabled; } function clearAndReload() { document.cookie.split(';').forEach(c => { const n = c.split('=')[0].trim(); [`path=/`, `path=/;domain=${location.hostname}`, `path=/;domain=.${location.hostname}`] .forEach(p => document.cookie = `${n}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;${p}`); }); localStorage.clear(); sessionStorage.clear(); location.reload(); } function bindDisplay(code) { if (!code) return '—'; return code.replace('Key', '').replace('Digit', '').replace('ShiftRight', 'RS').replace('ShiftLeft', 'LS') .replace('ControlLeft', 'LC').replace('ControlRight', 'RC').replace('AltLeft', 'LA').replace('AltRight', 'RA') .replace('Backquote', '`').replace('Backslash', '\\').replace('BracketLeft', '[').replace('BracketRight', ']') .replace('Semicolon', ';').replace('Quote', "'").replace('Comma', ',').replace('Period', '.') .replace('Slash', '/').replace('Minus', '-').replace('Equal', '=').replace('Space', 'SPC') .replace('Tab', 'TAB').replace('CapsLock', 'CAPS').replace('Enter', 'ENT').replace('Escape', 'ESC').replace('Arrow', ''); } function safeAppend(el) { if (document.body) return document.body.appendChild(el); const observer = new MutationObserver(() => { if (document.body) { observer.disconnect(); document.body.appendChild(el); } }); observer.observe(document.documentElement, { childList: true }); } function buildUI() { if (document.getElementById('ch-root')) return; const css = document.createElement('style'); css.textContent = ` @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css'); #ch-root, #ch-root * { box-sizing: border-box; } :root { --ghost-bg: rgba(18, 18, 24, 0.95); --ghost-panel: rgba(28, 28, 40, 0.85); --ghost-panel-border: rgba(255,255,255,0.06); --ghost-accent-1: #7c5cfc; --ghost-accent-2: #c84cff; --ghost-text: #e8e4f0; --ghost-text-dim: #8a8499; --ghost-on: #7c5cfc; --ghost-off: rgba(60,55,80,0.6); --ghost-danger: #ff4466; --ghost-success: #44ffaa; } #ch-root { position: fixed; top: 20px; left: 20px; width: 300px; background: var(--ghost-bg); border: 1px solid var(--ghost-panel-border); border-radius: 10px; font-family: 'Inter', sans-serif; font-size: 11px; color: var(--ghost-text); z-index: 99999; box-shadow: 0 16px 40px rgba(0,0,0,0.6), 0 0 1px rgba(124,92,252,0.4); user-select: none; transition: opacity 0.3s ease, transform 0.3s ease; backdrop-filter: blur(16px) saturate(1.2); transform-origin: center center; } #ch-root.hidden { opacity: 0; pointer-events: none; transform: scale(0.92); } #ch-root.mini #ch-body, #ch-root.mini #ch-tabs { display: none; } #ch-hdr { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: linear-gradient(-45deg, #7c5cfc, #c84cff, #5c9cff, #7c5cfc); background-size: 300% 300%; animation: ghostGradient 4s ease infinite; cursor: grab; border-radius: 9px 9px 0 0; } @keyframes ghostGradient { 0%{background-position:0% 50%} 50%{background-position:100% 50%} 100%{background-position:0% 50%} } #ch-title { font-weight: 700; font-size: 14px; color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,0.3); letter-spacing: 0.5px; } #ch-title span { opacity: 0.7; font-weight: 500; font-size: 10px; margin-left: 6px; } .ch-hbtn { background: rgba(255,255,255,0.2); border: none; color: #fff; font-size: 12px; cursor: pointer; padding: 2px 8px; border-radius: 4px; transition: 0.2s; display: flex; align-items: center; justify-content: center; width: 28px; height: 24px; } .ch-hbtn:hover { background: rgba(255,255,255,0.4); } .ch-hbtn i { font-size: 13px; } /* === TABS === */ #ch-tabs { display: flex; background: rgba(0,0,0,0.25); border-bottom: 1px solid var(--ghost-panel-border); padding: 0; margin: 0; gap: 0; } .ch-tab { flex: 1; padding: 10px 0 9px 0; text-align: center; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.8px; color: var(--ghost-text-dim); cursor: pointer; transition: color 0.2s, background 0.2s, box-shadow 0.2s; position: relative; border: none; background: transparent; outline: none; font-family: 'Inter', sans-serif; } .ch-tab:hover { color: var(--ghost-text); background: rgba(124,92,252,0.06); } .ch-tab.active { color: #fff; } .ch-tab.active::after { content: ''; position: absolute; bottom: 0; left: 15%; right: 15%; height: 2.5px; background: linear-gradient(90deg, var(--ghost-accent-1), var(--ghost-accent-2)); border-radius: 2px 2px 0 0; box-shadow: 0 0 8px rgba(124,92,252,0.5); } .ch-tab i { margin-right: 5px; font-size: 12px; } /* === TAB PANELS === */ .ch-tab-panel { display: none; flex-direction: column; gap: 8px; } .ch-tab-panel.active { display: flex; } #ch-body { padding: 10px; display: flex; flex-direction: column; gap: 8px; max-height: calc(100vh - 120px); overflow-y: auto; } #ch-body::-webkit-scrollbar { width: 4px; } #ch-body::-webkit-scrollbar-thumb { background: var(--ghost-accent-1); border-radius: 4px; } .ch-sec { display: flex; flex-direction: column; gap: 6px; background: var(--ghost-panel); padding: 10px 12px; border-radius: 6px; border: 1px solid var(--ghost-panel-border); } .ch-lbl { font-size: 10px; font-weight: 700; color: var(--ghost-text-dim); text-transform: uppercase; letter-spacing: 1px; padding-bottom: 4px; border-bottom: 1px solid rgba(255,255,255,0.04); margin-bottom: 2px; } .mod-row { display: flex; align-items: center; justify-content: space-between; padding: 2px 0; } .mod-left { display: flex; align-items: center; gap: 8px; flex: 1; } .mod-name { font-size: 12px; font-weight: 600; color: var(--ghost-text); } .tg { width: 30px; height: 16px; background: var(--ghost-off); border-radius: 8px; position: relative; cursor: pointer; transition: 0.25s; flex-shrink: 0; } .tg::after { content: ''; width: 12px; height: 12px; background: #888; border-radius: 50%; position: absolute; top: 2px; left: 2px; transition: 0.25s; } .tg.on { background: var(--ghost-on); box-shadow: 0 0 10px rgba(124,92,252,0.4); } .tg.on::after { left: 16px; background: #fff; } .kb { background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.08); color: var(--ghost-text-dim); font-size: 9px; font-weight: 600; padding: 2px 6px; border-radius: 4px; cursor: pointer; transition: 0.2s; display: flex; align-items: center; gap: 4px; font-family: monospace; } .kb:hover { background: rgba(124,92,252,0.15); border-color: rgba(124,92,252,0.4); color: var(--ghost-text); } .kb.listening { border-color: var(--ghost-accent-2); color: var(--ghost-accent-2); animation: kbpulse 0.8s ease infinite; } @keyframes kbpulse { 0%,100%{opacity:1;} 50%{opacity:0.4;} } .kb-x { font-size: 8px; color: rgba(255,100,100,0.5); cursor: pointer; } .kb-x:hover { color: var(--ghost-danger); } .val-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } .val-item { display: flex; flex-direction: column; gap: 4px; } .val-label { font-size: 9px; color: var(--ghost-text-dim); font-weight: 600; text-transform: uppercase; } .val-inp { background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.08); border-radius: 4px; color: var(--ghost-text); font-family: monospace; font-size: 11px; padding: 4px 6px; text-align: center; outline: none; transition: 0.2s; width: 100%; } .val-inp:focus { border-color: var(--ghost-accent-1); box-shadow: 0 0 8px rgba(124,92,252,0.2); } .sl-row { display: flex; align-items: center; gap: 8px; margin-top: 6px; width: 100%; } .sl-label { font-size: 10px; color: var(--ghost-text-dim); font-weight: 600; width: 36px; flex-shrink: 0; } input[type=range] { flex: 1; -webkit-appearance: none; background: transparent; cursor: pointer; } input[type=range]::-webkit-slider-runnable-track { height: 4px; background: rgba(255,255,255,0.08); border-radius: 2px; } input[type=range]::-webkit-slider-thumb { height: 12px; width: 12px; border-radius: 50%; background: #fff; cursor: pointer; -webkit-appearance: none; margin-top: -4px; box-shadow: 0 0 6px rgba(124,92,252,0.6); } .sl-val-inp { width: 44px; flex-shrink: 0; background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.1); color: var(--ghost-accent-1); font-family: monospace; font-size: 10px; font-weight: 600; text-align: center; border-radius: 4px; outline: none; padding: 3px 0; } .sl-val-inp:focus { border-color: var(--ghost-accent-1); } .ch-action-btn { width: 100%; padding: 8px; border-radius: 6px; border: 1px solid rgba(255,68,102,0.3); background: rgba(255,68,102,0.1); color: #ff6688; font-weight: 700; font-size: 11px; cursor: pointer; transition: 0.2s; text-transform: uppercase; letter-spacing: 0.5px; } .ch-action-btn:hover { background: rgba(255,68,102,0.2); border-color: #ff4466; color: #ff8899; } /* Text input fields */ .ch-text-inp { background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.08); border-radius: 4px; color: var(--ghost-text); font-family: 'Inter', sans-serif; font-size: 11px; padding: 6px 8px; outline: none; transition: 0.2s; width: 100%; } .ch-text-inp:focus { border-color: var(--ghost-accent-1); box-shadow: 0 0 8px rgba(124,92,252,0.2); } .ch-text-inp::placeholder { color: var(--ghost-text-dim); opacity: 0.6; } #ch-status { padding: 8px 16px; background: rgba(0,0,0,0.3); border-top: 1px solid var(--ghost-panel-border); font-size: 9px; color: var(--ghost-text-dim); display: flex; justify-content: space-between; align-items: center; border-radius: 0 0 9px 9px; font-weight: 600; letter-spacing: 0.5px; } #ch-status .dot { width: 6px; height: 6px; border-radius: 50%; display: inline-block; margin-right: 6px; } #ch-status .dot.green { background: var(--ghost-success); box-shadow: 0 0 8px rgba(68,255,170,0.5); } #ch-status .dot.red { background: var(--ghost-danger); box-shadow: 0 0 8px rgba(255,68,102,0.5); } #ch-gen { background: rgba(255,68,102,0.3) !important; color: #ff8899 !important; } #ch-gen:hover { background: rgba(255,68,102,0.5) !important; } #ch-root input[type="text"], #ch-root input[type="number"], #ch-root textarea { background: rgba(0,0,0,0.3) !important; border: 1px solid rgba(255,255,255,0.08) !important; border-radius: 4px !important; color: var(--ghost-text) !important; font-family: 'Inter', monospace !important; font-size: 11px !important; padding: 4px 6px !important; outline: none !important; transition: 0.2s !important; box-shadow: none !important; } #ch-root input[type="text"]:focus, #ch-root input[type="number"]:focus, #ch-root textarea:focus { border-color: var(--ghost-accent-1) !important; box-shadow: 0 0 8px rgba(124,92,252,0.2) !important; } #ch-root input::placeholder, #ch-root textarea::placeholder { color: var(--ghost-text-dim) !important; opacity: 0.6 !important; } `; document.head.appendChild(css); const mkToggle = (id, name, bindKey) => { const disp = bindDisplay(state.binds[bindKey]); const hasKey = !!state.binds[bindKey]; return `