hack client for bloxd.io, open source on github.
// ==UserScript== // @name Melon Hub (bloxd.io) // @namespace https://github.com/OfficiallyMelon/Melon-Hub // @version v1.0 // @description hack client for bloxd.io, open source on github. // @author melon // @match https://bloxd.io* // @icon https://bloxd.io* // @grant GM_getValue // @grant GM_setValue // @grant unsafeWindow // @run-at document-start // ==/UserScript== /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // EXPORTS __webpack_require__.d(__webpack_exports__, { n9: () => (/* binding */ addOutput), oP: () => (/* binding */ injectionStatus) }); // UNUSED EXPORTS: addError, reapplyLogs ;// ./Inject/Inject.ts var config = { coordinates: [null, null, null], methods: {}, CurrentlyInjected: false, freecamPosition: [0, 0, 0] }; // Functions function hookObjectAssign(target, prop, handler) { var originalMethod = target[prop]; target[prop] = new Proxy(originalMethod, { apply: function (originalFunc, thisArg, argsList) { handler.apply(void 0, argsList); return Reflect.apply(originalFunc, thisArg, argsList); } }); } // Hook Noa (thanks blackhole for injection method, yay!) hookObjectAssign(Object, 'assign', function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } var hasSwingTime = false; try { if (params[2].swingDuration !== undefined) { hasSwingTime = true; } } catch (err) { // Property swingDuration not found } var hasIdentifier = false; try { if (params[1].__id !== undefined) { hasIdentifier = true; } } catch (err) { // Property __id not found } if (hasSwingTime && hasIdentifier && params.length === 4 && params[2].swingDuration === 200 && params[1].__id === 1) { config.hookedObject = params[0]; setTimeout(function () { config.babylonEngine = window.BABYLON; config.noaInstance = config.hookedObject.heldItem.noa; config.CurrentlyInjected = true; addOutput("Injection State:", config.noaInstance ? "Successfully hooked noa!" : "Unsuccessful, try reloading the page."); console.log("Successfully hooked noa!", config.noaInstance); window.noa = config.noaInstance; config.genericPlayerState = config.noaInstance.ents._storage.genericLifeForm.hash[config.noaInstance.playerEntity]; setTimeout(function () { injectionStatus.style.cssText = "position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:green;border-radius:50%;"; }, 100); }, 1); } }); ;// ./Modules/Packets.ts var _a; // Declare hookedSend globally var hookedSend = null; var Context = null; function interceptSockets() { (function () { var originalDefineProperty = Object.defineProperty; // Hooking into the send property of window Object.defineProperty = function (obj, prop, descriptor) { try { if (prop === "send" && typeof descriptor.value === "function") { console.log("[HOOK] Defining property: send"); hookedSend = descriptor.value; descriptor.value = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } //console.log(`[HOOK] Intercepted send() call with arguments:`, args); if (hookedSend) { Context = this; return hookedSend.apply(this, args); } else { console.error("[HOOK ERROR] hookedSend is null"); } }; } } catch (error) { console.error("[HOOK ERROR] Failed to hook send:", error); } return originalDefineProperty.apply(this, arguments); }; // Attach a getter to get hookedSend globally if needed Object.defineProperty(window, "getHookedSend", { value: function () { return hookedSend; }, writable: false, configurable: false }); })(); } // function PacketConverter(Y) { // const P = new Array(128).fill(0).map((_, index) => index); // const X = new s.e("$(Y)$(e.m)"); // return function(Y: any[]) { // for (let P = 0; P < Y.length; P++) { // const q = P + Math.floor(X.next() * (Y.length - P)); // [Y[P], Y[q]] = [Y[q], Y[P]]; // } // return Y; // }; // } var PacketType = { PLACE_BLOCK: 114, }; var packets = (_a = {}, _a[PacketType.PLACE_BLOCK] = { pos: null, toBlock: null, checker: null }, _a); function sendPacket(packetType, data) { if (hookedSend && Context) { hookedSend.apply(Context, [packetType, data]); } else { console.error("[HOOK ERROR] hookedSend is null"); } } ;// ./Modules/Modules.ts // Modules.ts var ExecutionFunctions = /** @class */ (function () { function ExecutionFunctions() { } ExecutionFunctions.prototype.simulateLeftClick = function (element) { var mouseDownEvent = new MouseEvent("mousedown", { button: 0, bubbles: true, cancelable: true }); element.dispatchEvent(mouseDownEvent); var mouseUpEvent = new MouseEvent("mouseup", { button: 0, bubbles: true, cancelable: true }); element.dispatchEvent(mouseUpEvent); }; ExecutionFunctions.prototype.calculateDistance = function (pos1, pos2) { var dx = pos2.x - pos1.x; var dy = pos2.y - pos1.y; var dz = pos2.z - pos1.z; return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2) + Math.pow(dz, 2)); }; ExecutionFunctions.prototype.simulateRightClick = function (element) { var mouseDownEvent = new MouseEvent("mousedown", { button: 2, bubbles: true, cancelable: true }); element.dispatchEvent(mouseDownEvent); var mouseUpEvent = new MouseEvent("mouseup", { button: 2, bubbles: true, cancelable: true }); element.dispatchEvent(mouseUpEvent); }; ExecutionFunctions.prototype.distanceBetween = function (point1, point2) { var dx = point2[0] - point1[0]; var dy = point2[1] - point1[1]; var dz = point2[2] - point1[2]; return dx * dx + dy * dy + dz * dz; }; ExecutionFunctions.prototype.setDir = function (facing) { var heading = Math.atan2(facing[0], facing[2]); var pitch = Math.asin(-facing[1]); config.noaInstance.camera.heading = heading; config.noaInstance.camera.pitch = pitch; //cam(heading, pitch); }; ExecutionFunctions.prototype.distanceBetweenSqrt = function (point1, point2) { return Math.sqrt(this.distanceBetween(point1, point2)); }; ExecutionFunctions.prototype.ChangeCrouchSpeed = function (speed) { config.noaInstance.serverSettings.crouchingSpeed = speed; }; ExecutionFunctions.prototype.ChangeWalkSpeed = function (speed) { config.noaInstance.serverSettings.walkingSpeed = speed; }; ExecutionFunctions.prototype.InstantRespawn = function () { var _a; if (config.noaInstance) { config.noaInstance.serverSettings.secsToRespawn = 0; (_a = document.querySelector(".NewButton.BlueButton.RespawnButton")) === null || _a === void 0 ? void 0 : _a.click(); } }; ExecutionFunctions.prototype.normalizeVector = function (vector) { var magnitude = vector[0] * vector[0] + vector[1] * vector[1] + vector[2] * vector[2]; if (magnitude > 0) { var invMagnitude = 1 / Math.sqrt(magnitude); return [vector[0] * invMagnitude, vector[1] * invMagnitude, vector[2] * invMagnitude]; } return vector; }; ExecutionFunctions.prototype.killaura = function (range) { var targets = getAttackablePlayers(); if (targets.length === 0) { addOutput("No targets found"); return; } var nearestTarget = getNearestTarget(targets); var playerPosition = config.noaInstance.ents.getPosition(config.noaInstance.playerEntity); var targetPosition = config.noaInstance.ents.getPositionData(nearestTarget).position; if (Utilities.distanceBetweenSqrt(playerPosition, targetPosition) <= 5) { var originalDirection = config.noaInstance.camera._dirVector; config.noaInstance.camera._dirVector = Utilities.normalizeVector([ targetPosition[0] - playerPosition[0], targetPosition[1] - playerPosition[1], targetPosition[2] - playerPosition[2] ]); var canvasElement = document.querySelector("#noa-canvas"); if (canvasElement) { this.simulateLeftClick(canvasElement); } config.noaInstance.camera._dirVector = originalDirection; } }; ExecutionFunctions.prototype.removeAllCookies = function () { var cookies = document.cookie.split(";"); for (var _i = 0, cookies_1 = cookies; _i < cookies_1.length; _i++) { var cookie = cookies_1[_i]; var eqPos = cookie.indexOf("="); var name_1 = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; document.cookie = name_1 + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/"; } }; return ExecutionFunctions; }()); function getAllPlayers() { var _a = config.noaInstance, playerNames = _a.playerNames, playerEntity = _a.playerEntity, ents = _a.ents; var playerIds = []; for (var key in playerNames) { if (playerNames.hasOwnProperty(key)) { var id = Number(key); if (id !== playerEntity && ents.hasComponent(id, "position") && ents.hasComponent(id, 'genericLifeformState') && ents.genericLifeformState(id).isAlive) { playerIds.push(id); } } } return playerIds; } function getAttackablePlayers() { return getAllPlayers().filter(function (id) { var _a; return (_a = config.noaInstance.otherPlayerSettings[config.noaInstance.playerEntity][id]) === null || _a === void 0 ? void 0 : _a.canAttack; }); } function getNearestTarget(targets) { var playerPosition = config.noaInstance.ents.getPosition(config.noaInstance.playerEntity); var nearestTarget = undefined; var nearestDistance = Infinity; for (var _i = 0, targets_1 = targets; _i < targets_1.length; _i++) { var target = targets_1[_i]; var distance = Utilities.distanceBetween(playerPosition, config.noaInstance.ents.getPosition(target)); if (nearestTarget === undefined || distance < nearestDistance) { nearestTarget = target; nearestDistance = distance; } } return nearestTarget; } var AutoTrigger = false; var Utilities = new ExecutionFunctions(); var Exploits = [ { type: "Combat", title: "Kill Aura", desc: "Detects and attacks nearby entities", pertick: function (state) { if (state) { var cDist_1 = 3.5; var cPlayer_1 = null; config.noaInstance.entities._storage.position.list.forEach(function (p) { if (typeof p.__id !== "number" && p.__id != 1 && p.__id !== config.noaInstance.serverPlayerEntity) { var lifeformState = config.noaInstance.entities.getGenericLifeformState(p.__id); if (lifeformState && lifeformState.isAlive) { var myPos = config.noaInstance.entities.getPosition(1); var enemyPos = p.position; var myPosObj = { x: myPos[0], y: myPos[1], z: myPos[2] }; var enemyPosObj = { x: enemyPos[0], y: enemyPos[1], z: enemyPos[2] }; if (myPos[0] === enemyPos[0] && myPos[1] === enemyPos[1] && myPos[2] === enemyPos[2]) { return; } var distance = Utilities.calculateDistance(myPosObj, enemyPosObj); if (distance < cDist_1) { cPlayer_1 = enemyPos; } } } }); if (cPlayer_1) { var myPos = config.noaInstance.entities.getPosition(1); var dirVec = [cPlayer_1[0] - myPos[0], cPlayer_1[1] - myPos[1], cPlayer_1[2] - myPos[2]]; var normVec = Utilities.normalizeVector(dirVec); Utilities.setDir(normVec); var element = document.querySelector("#noa-canvas"); if (element) { element.dispatchEvent(new MouseEvent("mousedown", { button: 0, bubbles: true, cancelable: true })); element.dispatchEvent(new MouseEvent("mouseup", { button: 0, bubbles: true, cancelable: true })); } } } }, }, { type: "Combat", title: "Auto Clicker", desc: "Automatically clicks for you", pertick: function () { if (config.CurrentlyInjected && config.noaInstance) { var element = document.querySelector("#noa-canvas"); if (element) { element.dispatchEvent(new MouseEvent("mousedown", { button: 0, bubbles: true, cancelable: true })); element.dispatchEvent(new MouseEvent("mouseup", { button: 0, bubbles: true, cancelable: true })); } } }, }, { type: "Combat", title: "Anti Shake", desc: "Disables camera shake on hit", pertick: function (status) { if (status) { if (config.CurrentlyInjected && config.noaInstance) { config.noaInstance.entities.getState(config.noaInstance.playerEntity, "cameraShake").shakePower = 0; } } } }, { type: "Player", title: "Scaffold", desc: "Automatically places blocks under you. (BROKEN)", pertick: function (status) { if (status) { if (config.CurrentlyInjected && config.noaInstance) { var player = config.noaInstance.playerEntity; var position = config.noaInstance.ents.getPosition(player); var block = config.noaInstance.getBlock(position[0], position[1] - 1, position[2]); var f = config.noaInstance.ents.getInventoryState(config.noaInstance.playerEntity).selectedItem; var ObjID = f && ("CubeBlock" === f.typeObj.type || "TwoDBlock" === f.typeObj.type || "SlabBlock" === f.typeObj.type) ? f.typeObj.id : null; if (block === 0) { var roundedPosition = [ Math.floor(position[0]), Math.floor(position[1] - 1), Math.floor(position[2]) ]; addOutput("Placing block at", roundedPosition.toString()); addOutput("Block ID", block); if (ObjID) { sendPacket(PacketType.PLACE_BLOCK, { pos: roundedPosition, toBlock: ObjID, checker: '' }); config.noaInstance.setBlock(roundedPosition[0], roundedPosition[1], roundedPosition[2], ObjID); } } } } }, }, { type: "Player", title: "Instant Respawn", desc: "Instantly respawns you when you die.", pertick: function () { if (config.CurrentlyInjected && config.noaInstance) { Utilities.InstantRespawn(); } }, }, { type: "Combat", title: "Auto Trigger", desc: "Auto trigger for Aimbot (BROKEN)", pertick: function (state) { AutoTrigger = state; } }, { type: "Player", title: "Account Gen", desc: "Generates accounts for you to use. (Requires Refresh)", pertick: function () { Utilities.removeAllCookies(); location.reload(); }, }, { type: "Combat", title: "Aimbot", desc: "Automatically aims at the nearest player.", pertick: function (state) { function normalizeVector(vector) { var magnitude = Math.sqrt(Math.pow(vector[0], 2) + Math.pow(vector[1], 2) + Math.pow(vector[2], 2)); if (magnitude === 0) { return [0, 0, 0]; } return vector.map(function (component) { return component / magnitude; }); } function setDir(facing) { var heading = Math.atan2(facing[0], facing[2]); var pitch = Math.asin(-facing[1]); config.noaInstance.camera.heading = heading; config.noaInstance.camera.pitch = pitch; //cam(heading, pitch); } function calculateDistance(pos1, pos2) { var dx = pos2.x - pos1.x; var dy = pos2.y - pos1.y; var dz = pos2.z - pos1.z; return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2) + Math.pow(dz, 2)); } if (!state) { return; } var cPlayer = null; var cDist = Infinity; config.noaInstance.entities._storage.position.list.forEach(function (p) { if (typeof p.__id !== "number" && p.__id != 1 && p.__id !== config.noaInstance.serverPlayerEntity) { var lifeformState = config.noaInstance.entities.getGenericLifeformState(p.__id); if (lifeformState && lifeformState.isAlive) { var myPos = config.noaInstance.entities.getPosition(1); var enemyPos = p.position; var myPosObj = { x: myPos[0], y: myPos[1], z: myPos[2] }; var enemyPosObj = { x: enemyPos[0], y: enemyPos[1], z: enemyPos[2] }; if (myPos[0] === enemyPos[0] && myPos[1] === enemyPos[1] && myPos[2] === enemyPos[2]) { return; } var distance = calculateDistance(myPosObj, enemyPosObj); if (distance < cDist) { cDist = distance; cPlayer = enemyPos; } } } }); if (cPlayer && cDist <= 20) { var myPos = config.noaInstance.entities.getPosition(1); var dirVec = [cPlayer[0] - myPos[0], cPlayer[1] - myPos[1], cPlayer[2] - myPos[2]]; var normVec = normalizeVector(dirVec); setDir(normVec); if (AutoTrigger) { config.noaInstance.ents.getHeldItem(config.noaInstance.playerEntity).upFirePrimary(); } } } }, { type: "Movement", title: "Auto Sprint", desc: "Automatically sprints when moving.", pertick: function () { if (config.CurrentlyInjected && config.noaInstance) { Utilities.ChangeWalkSpeed(config.noaInstance.serverSettings.runningSpeed); } }, }, { type: "Movement", title: "Fast Crouch", desc: "Increase crouching speed.", pertick: function (status) { if (status) { if (config.CurrentlyInjected && config.noaInstance) { Utilities.ChangeCrouchSpeed(config.noaInstance.serverSettings.runningSpeed); } } else { if (config.CurrentlyInjected && config.noaInstance) { Utilities.ChangeCrouchSpeed(2); } } }, }, { type: "Movement", title: "Auto Speed", desc: "Increase walking speed.", pertick: function (status) { if (status) { if (config.CurrentlyInjected && config.noaInstance) { Utilities.ChangeWalkSpeed(7.4); } } else { if (config.CurrentlyInjected && config.noaInstance) { Utilities.ChangeWalkSpeed(4.5); } } }, }, { type: "Movement", title: "Infinite Jump", desc: "Jump infinitely. (only works going up blocks)", pertick: function (status) { if (status) { if (config.CurrentlyInjected && config.noaInstance) { config.noaInstance.serverSettings.airJumpCount = Infinity; } } else { if (config.CurrentlyInjected && config.noaInstance) { config.noaInstance.serverSettings.airJumpCount = 0; } } }, }, { type: "Exploit", title: "Spider (VERY EXPERIMENTAL)", desc: "Climb walls.", pertick: function (status) { if (status) { if (config.CurrentlyInjected && config.noaInstance) { var noa = config.noaInstance; var player = noa.playerEntity; var position = noa.ents.getPosition(player); // [x, y, z] var x = position[0]; var y = position[1]; var z = position[2]; var blockInFront = noa.getBlock(x, y, z + 1); if (blockInFront !== 0) { noa.ents.getPhysicsBody(player).applyImpulse([0, noa.serverSettings.jumpAmount * 0.03, 0]); } } } }, } ]; ;// ./Saves/Save.ts var Save_SaveManager = /** @class */ (function () { function SaveManager() { } SaveManager.saveBoolean = function (key, value, overwrite) { if (overwrite === void 0) { overwrite = true; } if (overwrite || localStorage.getItem(key) === null) { localStorage.setItem(key, JSON.stringify(value)); } }; SaveManager.importBoolean = function (key) { var value = localStorage.getItem(key); return value ? JSON.parse(value) : false; }; SaveManager.saveString = function (key, value) { localStorage.setItem(key, value); }; SaveManager.importString = function (key) { return localStorage.getItem(key); }; SaveManager.saveObject = function (key, value) { localStorage.setItem(key, JSON.stringify(value)); }; SaveManager.importObject = function (key) { var value = localStorage.getItem(key); return value ? JSON.parse(value) : null; }; return SaveManager; }()); ;// ./UI/Keybinds.ts var loadKeybinds = function () { var savedKeybinds = localStorage.getItem('keybinds'); if (savedKeybinds) { return JSON.parse(savedKeybinds); } else { return [ { Module: "Kill Aura", Keybind: "", KeybindCode: "", }, { Module: "Aimbot", Keybind: "", KeybindCode: "", }, { Module: "Auto Clicker", Keybind: "", KeybindCode: "", }, { Module: "Scaffold", Keybind: "", KeybindCode: "", }, { Module: "Auto Trigger", Keybind: "", KeybindCode: "", }, { Module: "Auto Sprint", Keybind: "", KeybindCode: "", }, { Module: "Fast Crouch", Keybind: "", KeybindCode: "", }, { Module: "Infinite Jump", Keybind: "", KeybindCode: "", }, { Module: "Auto Speed", Keybind: "", KeybindCode: "", }, ]; } }; var Keybinds = loadKeybinds(); function ChangeKeybind(Module, Key, KeyCode) { for (var _i = 0, Keybinds_1 = Keybinds; _i < Keybinds_1.length; _i++) { var element = Keybinds_1[_i]; if (element.Module === Module) { element.Keybind = Key !== null ? Key : element.Keybind; element.KeybindCode = KeyCode !== null ? KeyCode : element.KeybindCode; } } localStorage.setItem('keybinds', JSON.stringify(Keybinds)); } ;// ./UI/UI.ts // Imports // UI var UI_link = document.createElement('link'); UI_link.rel = 'stylesheet'; UI_link.href = 'https://fonts.googleapis.com/css2?family=Gabarito:wght@400;500&display=swap'; var UI_frame = document.createElement('div'); UI_frame.style.cssText = 'position:fixed;top:10px;right:10px;width:697.5px;height:448.5px;background-color:transparent;border-radius:10px;overflow:hidden;z-index:2147483646'; var rightImage = document.createElement('img'); rightImage.src = 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMelon.png?raw=true'; rightImage.style.cssText = 'width:697.5px;height:448.5px'; rightImage.style.position = 'relative'; var leftImage = document.createElement('img'); leftImage.src = 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMelon.png?raw=true'; leftImage.style.cssText = 'position:fixed;top:10px;right:495px;width:217.5px;height:448.5px;z-index:2147483646'; var melonHubText = document.createElement('div'); melonHubText.innerText = 'Melon Hub'; melonHubText.style.cssText = 'position:absolute; top: 20px; left: 34px; font-family: Inter, sans-serif; font-size: 22px; font-weight: 500; color: white; z-index: 2147483647;'; var versionText = document.createElement('div'); versionText.innerText = '1.0'; versionText.style.cssText = 'position:absolute; top: 20px; left: 145px; font-family: Inter, sans-serif; font-size: 14px; font-weight: 300; color: white; z-index: 2147483647;'; var buttonContainer = document.createElement('div'); buttonContainer.style.cssText = 'position:absolute;top:60px;left:-25px;width:217.5px;height:448.5px;z-index:2147483651;'; var rightButtonContainer = document.createElement('div'); rightButtonContainer.id = 'rightButtonContainer'; rightButtonContainer.style.cssText = 'position: absolute; top: 50px; right: 10px; width: 470px; height: 380px; z-index: 2147483649; overflow-y: auto; overflow-x: hidden; padding-right: 10px; box-sizing: border-box;'; var miniConsole = document.createElement('div'); miniConsole.id = 'miniConsole'; miniConsole.style.cssText = 'position: absolute; top: 40px; right: 5px; width: 470px; height: 380px; background-color: black; color: green; overflow-y: auto; padding: 10px; box-sizing: border-box; font-family: monospace; font-size: 14px; border: 2px solid gray; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); display: none; z-index: 20000000000;'; var injectionStatus = document.createElement("div"); injectionStatus.id = 'injectionStatus'; injectionStatus.style.cssText = "position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:red;border-radius:50%;"; // Create UI document.head.appendChild(UI_link); // frame UI_frame.appendChild(rightImage); // frame UI_frame.appendChild(leftImage); // frame UI_frame.appendChild(melonHubText); // title UI_frame.appendChild(versionText); // version UI_frame.appendChild(buttonContainer); // buttons UI_frame.appendChild(rightButtonContainer); // right buttons UI_frame.appendChild(miniConsole); // debug console UI_frame.appendChild(injectionStatus); // injection status document.body.appendChild(UI_frame); // Intercept Sockets interceptSockets(); // Debug Console var logs = []; function addOutput() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var text = args.join(' '); var output = document.createElement('div'); output.textContent = "> ".concat(text); output.style.color = 'green'; output.style.marginBottom = '5px'; miniConsole.appendChild(output); miniConsole.scrollTop = miniConsole.scrollHeight; logs.push({ text: text, type: 'output' }); } function addError() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var text = args.join(' '); var output = document.createElement('div'); output.textContent = "> ".concat(text); output.style.color = 'red'; output.style.marginBottom = '5px'; miniConsole.appendChild(output); miniConsole.scrollTop = miniConsole.scrollHeight; logs.push({ text: text, type: 'error' }); } function reapplyLogs() { miniConsole.innerHTML = ''; logs.forEach(function (log) { if (log.type === 'output') { addOutput(log.text); } else if (log.type === 'error') { addError(log.text); } }); } // Dragging var isDragging = false; var offsetX = 0; var offsetY = 0; UI_frame.addEventListener('mousedown', function (e) { isDragging = true; offsetX = e.clientX - UI_frame.getBoundingClientRect().left; offsetY = e.clientY - UI_frame.getBoundingClientRect().top; UI_frame.style.cursor = 'grabbing'; }); document.addEventListener('mousemove', function (e) { if (isDragging) { var newLeft = "".concat(e.clientX - offsetX, "px"); var newTop = "".concat(e.clientY - offsetY, "px"); UI_frame.style.left = newLeft; UI_frame.style.top = newTop; leftImage.style.left = "".concat(e.clientX - offsetX, "px"); leftImage.style.top = "".concat(e.clientY - offsetY, "px"); } }); document.addEventListener('mouseup', function () { isDragging = false; UI_frame.style.cursor = 'default'; }); // Functions var buttonStateTable = {}; function createRightButton(title, secondTitle, additionalInfo, onClick) { var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:75px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); var redCircle = document.createElement("div"); redCircle.style.cssText = "position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:red;border-radius:50%;"; btn.appendChild(redCircle); if (!(title in buttonStateTable)) { buttonStateTable[title] = false; } redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red"; var intervalId; Keybinds.forEach(function (keybind) { if (keybind.Module === title) { console.log("keybind"); document.addEventListener('keydown', function (event) { console.log(event.key, keybind.Keybind); if (event.key !== keybind.Keybind) { return; } if (keybind.KeybindCode.length > 0 && event.code !== keybind.KeybindCode) { return; } console.log(keybind.Keybind); buttonStateTable[title] = !buttonStateTable[title]; redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red"; if (intervalId === undefined) { intervalId = window.setInterval(function () { onClick(buttonStateTable[title]); }, 1); } else { window.clearInterval(intervalId); intervalId = undefined; } addOutput("Toggled", title, "to", buttonStateTable[title] ? "on" : "off"); }); } }); btn.onclick = function () { buttonStateTable[title] = !buttonStateTable[title]; Save_SaveManager.saveObject('buttonStates', buttonStateTable); if (!Save_SaveManager.importBoolean(title)) { Save_SaveManager.saveBoolean(title, buttonStateTable[title], true); } redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red"; addOutput("Toggled", title, "to", buttonStateTable[title] ? "on" : "off"); if (title === "Account Gen") { if (intervalId === undefined) { onClick(buttonStateTable[title]); intervalId = window.setTimeout(function () { }, 1); } } else { if (intervalId === undefined) { if (config.noaInstance) { intervalId = window.setInterval(function () { onClick(buttonStateTable[title]); }, 1); } } else { window.clearInterval(intervalId); intervalId = undefined; } } }; return btn; } function createRightSliderButton(title, secondTitle, additionalInfo, onClick, minSliderValue, maxSliderValue) { var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:100px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); var slider = document.createElement("input"); slider.type = "range"; slider.min = minSliderValue.toString(); slider.max = maxSliderValue.toString(); slider.value = minSliderValue.toString(); slider.style.cssText = "position:absolute;bottom:5px;right:5px;width:200px;"; btn.appendChild(slider); slider.oninput = function () { var newSliderValue = parseInt(slider.value, 10); onClick(newSliderValue); }; btn.onclick = function () { buttonStateTable[title] = !buttonStateTable[title]; SaveManager.saveObject('buttonStates', buttonStateTable); var newSliderValue = parseInt(slider.value, 10); onClick(newSliderValue); }; return btn; } function createRightThemeButton(title, secondTitle, additionalInfo, onClick) { var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:75px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); if (!(title in buttonStateTable)) { buttonStateTable[title] = false; } btn.onclick = function () { buttonStateTable[title] = !buttonStateTable[title]; Save_SaveManager.saveObject('buttonStates', buttonStateTable); onClick(); }; return btn; } function createKeybindButton(title, secondTitle, additionalInfo) { var _a; var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:75px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); var currentKeybind = ((_a = Keybinds.find(function (bind) { return bind.Module === title; })) === null || _a === void 0 ? void 0 : _a.Keybind) || "None"; var keybindBox = document.createElement("div"); keybindBox.innerText = currentKeybind; keybindBox.style.cssText = "\n position: absolute;\n bottom: 5px;\n right: 5px;\n width: 50px;\n height: 20px;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n font-family: Gabarito, sans-serif;\n font-size: 12px;\n font-weight: 400;\n text-align: center;\n line-height: 20px;\n border-radius: 5px;\n cursor: pointer;\n"; btn.appendChild(keybindBox); btn.onclick = function () { document.addEventListener("keydown", function (event) { ChangeKeybind(title, event.key.toString(), event.code ? event.code.toString() : ""); keybindBox.innerText = event.key.toUpperCase(); }, { once: true }); }; keybindBox.onclick = function (event) { event.stopPropagation(); ChangeKeybind(title, "", ""); keybindBox.innerText = "None"; }; return btn; } function createButton(button, index, buttonContainer) { var btn = document.createElement('img'); btn.src = button.src; btn.style.cssText = "\n position: absolute;\n width: 104px;\n height: 23.3px;\n left: 50%;\n transform: translateX(-50%);\n top: ".concat(15 + index * 35, "px;\n z-index: 2147483652;\n transition: transform 0.2s, scale 0.2s;\n cursor: pointer;\n "); btn.addEventListener('mouseenter', function () { btn.style.transform = 'translateX(-50%) scale(1.05)'; }); btn.addEventListener('mouseleave', function () { btn.style.transform = 'translateX(-50%) scale(1)'; }); btn.addEventListener('click', button.onClick); buttonContainer.appendChild(btn); } function ButtonType(BTN_TYPE) { if (BTN_TYPE === void 0) { BTN_TYPE = ""; } console.log("active" + BTN_TYPE); var rightButtonContainer = document.getElementById("rightButtonContainer"); if (!rightButtonContainer) return; while (rightButtonContainer.firstChild) { rightButtonContainer.removeChild(rightButtonContainer.firstChild); } if (BTN_TYPE === "Debug") { miniConsole.style.display = 'block'; } else { miniConsole.style.display = 'none'; } if (BTN_TYPE === "Themes") { themes.forEach(function (theme) { rightButtonContainer.appendChild(createRightThemeButton(theme.name, "(Theme)", theme.desc, function () { addOutput("Theme", theme.name, "is now active."); leftImage.src = theme.LeftImage; rightImage.src = theme.RightImage; Save_SaveManager.saveString('activeTheme', theme.name); })); }); } if (BTN_TYPE === "Settings") { Exploits.forEach(function (exploit) { rightButtonContainer.appendChild(createKeybindButton(exploit.title, "Keybind", "Change keybind")); }); } Exploits.forEach(function (exploit) { if (exploit.type === BTN_TYPE || BTN_TYPE === "") { rightButtonContainer.appendChild(createRightButton(exploit.title, "(".concat(exploit.type, ")"), exploit.desc, exploit.pertick)); } }); } var themes = [ { name: "(Default) Melon Hub", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMelon.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMelon.png?raw=true", desc: "The default Melon Hub theme.", }, { name: "Netflix", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftNetflix.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RIghtNetflix.png?raw=true", desc: "Netflix theme including Red and Black colors, and Netlix logos.", }, { name: "McDonalds", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMaccas.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMaccas.png?raw=true", desc: "I ran out of theme ideas lmao" }, { name: "Minecraft", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMinecraft.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMinecraft.png?raw=true", desc: "Minecraft theme including grass and dirt blocks." }, { name: "Hatsune Miku", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMiku.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMiku.png?raw=true", desc: "I'm thinking Miku, Miku, oo-ee-oo" } ]; var buttonData = [ { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/AllBTN.png?raw=true', style: 'top:15px;', onClick: function () { return ButtonType(""); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/CombatBTN.png?raw=true', style: 'top:72px;', onClick: function () { return ButtonType("Combat"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/MovementBTN.png?raw=true', style: 'top:119px;', onClick: function () { return ButtonType("Movement"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/PlayerBTN.png?raw=true', style: 'top:166px;', onClick: function () { return ButtonType("Player"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/ExploitBTN.png?raw=true', style: 'top:213px;', onClick: function () { return ButtonType("Exploit"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/OtherBTN.png?raw=true', style: 'top:260px;', onClick: function () { return ButtonType("Other"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/SettingsBTN.png?raw=true', style: 'top:354px;', onClick: function () { return ButtonType("Settings"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/ThemesBTN.png?raw=true', style: 'top:401px;', onClick: function () { return ButtonType("Themes"); }, }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/DebugBTN.png?raw=true', style: 'top:401px;', onClick: function () { return ButtonType("Debug"); }, }, ]; buttonData.forEach(function (button, index) { var btn = document.createElement('img'); btn.src = button.src; btn.style.cssText = "position: absolute; width: 104px; height: 23.3px; left: 50%; transform: translateX(-50%); top: ".concat(15 + index * 35, "px; z-index: 2147483652; transition: transform 0.2s, scale 0.2s; cursor: pointer;"); btn.addEventListener('mouseenter', function () { return btn.style.transform = 'translateX(-50%) scale(1.05)'; }); btn.addEventListener('mouseleave', function () { return btn.style.transform = 'translateX(-50%) scale(1)'; }); btn.addEventListener('click', button.onClick); buttonContainer.appendChild(btn); }); ButtonType(""); window.ondragstart = function () { return false; }; // Save/Import var savedTheme = Save_SaveManager.importString('activeTheme'); if (savedTheme) { var theme = themes.find(function (t) { return t.name === savedTheme; }); if (theme) { leftImage.src = theme.LeftImage; rightImage.src = theme.RightImage; } } /******/ })() ;