- // ==UserScript==
- // @name VOXploit
- // @namespace http://tampermonkey.net/
- // @match https://voxiom.io/*
- // @run-at document-start
- // @grant none
- // @version 1.0.1
- // @author Cloud1
- // @description Aimbot, triggerbot, chams, no-recoil for voxiom.io
- // @license GPL
- // @require https://cdn.jsdelivr.net/npm/lil-gui@0.19.2/dist/lil-gui.umd.min.js
- // @require https://unpkg.com/three@0.150.0/build/three.min.js
- // @icon https://www.google.com/s2/favicons?sz=64&domain=voxiom.io
- // ==/UserScript==
-
- const THREE = window.THREE;
- delete window.THREE;
-
- // avoid detection
- const matchDetection = /^function\(\){\w+\['\w+'\]\(\);}$/;
- const setIntervalHandler = {
- apply: function(target, thisArg, argumentsList) {
- const callback = argumentsList[0];
- const delay = argumentsList[1];
- if (delay === 1000 && callback && callback.toString().match(matchDetection)) {
- console.log('Blocked detection');
- return null;
- }
- return Reflect.apply(...arguments);
- }
- };
- window.setInterval = new Proxy(window.setInterval, setIntervalHandler);
-
- // add #lil-gui container
- const lilGuiContainer = document.createElement('div');
- lilGuiContainer.id = 'lil-gui';
- document.body.appendChild(lilGuiContainer);
-
- const style = document.createElement('style');
- const guiStyle = document.createElement('style');
- const GUI = lil.GUI;
- const gui = new GUI({ container: lilGuiContainer, title: 'Controls' });
-
- let espConfig = {
- heightLine: 1.16,
- sneakHeight: 0.4,
- ennemyDistance: 50,
- maxAngleInRadians: 0.1,
- noRecoil: true,
- showBox: 0,
- showOutline: 0,
- showPlayer: 2,
- showLine: 1,
- wireframe: false,
- allEnnemies: false,
- isSniper: false,
- aimbot: 2,
- triggerBot: 2,
- aimbotIgnoreWall: false,
- mapZoom: 30,
- mapOffsetZ: 0,
- autoClaimAds: false,
- antiAFK: false,
- rainbow: false,
- showAimRadius: false,
- lockAimbotTriggerBot: false,
- aimbotKey: 'b',
- triggerBotKey: 't',
- toggleUIKey: '.',
- };
-
- const aimbotFolder = gui.addFolder('Aimbot');
- aimbotFolder.add(espConfig, 'aimbot').name(`aimbot (${espConfig.aimbotKey})`).options({Off: 0, LeftClick: 1, RightClick: 2, Always: 3}).listen();
- aimbotFolder.add(espConfig, 'triggerBot').name(`triggerBot (${espConfig.triggerBotKey})`).options({Off: 0, LeftClick: 1, RightClick: 2, Always: 3}).listen();
- aimbotFolder.add(espConfig, 'noRecoil');
- aimbotFolder.add(espConfig, 'allEnnemies');
- aimbotFolder.add(espConfig, 'isSniper');
- const advancedAimbotFolder = aimbotFolder.addFolder('Advanced');
- advancedAimbotFolder.close();
- advancedAimbotFolder.add(espConfig, 'aimbotIgnoreWall');
- advancedAimbotFolder.add(espConfig, 'showAimRadius');
- advancedAimbotFolder.add(espConfig, 'maxAngleInRadians', 0.01, 0.5, 0.01);
- advancedAimbotFolder.add(espConfig, 'heightLine', .5, 1.25, 0.01);
- advancedAimbotFolder.add(espConfig, 'sneakHeight', 0, 1, 0.01);
-
- const chamsFolder = gui.addFolder('Chams');
- chamsFolder.close();
- chamsFolder.add(espConfig, 'showPlayer').options({Off: 0, Ennemies: 1, All: 2});
- chamsFolder.add(espConfig, 'showLine').options({Off: 0, Ennemies: 1, All: 2});
- chamsFolder.add(espConfig, 'showOutline').options({Off: 0, Ennemies: 1, All: 2});
- chamsFolder.add(espConfig, 'showBox').options({Off: 0, Ennemies: 1, All: 2});
- chamsFolder.add(espConfig, 'ennemyDistance', 10, 100, 1);
- chamsFolder.add(espConfig, 'wireframe');
- chamsFolder.add(espConfig, 'rainbow');
- chamsFolder.add(espConfig, 'mapZoom', 20, 100, 1);
- chamsFolder.add(espConfig, 'mapOffsetZ', -50, 50, 1);
-
- const toolsFolder = gui.addFolder('Tools');
- toolsFolder.close();
- toolsFolder.add(espConfig, 'autoClaimAds');
- toolsFolder.add(espConfig, 'antiAFK');
- toolsFolder.add(espConfig, 'lockAimbotTriggerBot');
-
- // load/save config
- const configFolder = gui.addFolder('Config');
- configFolder.add(espConfig, 'toggleUIKey').name('Toggle UI key');
- configFolder.add(espConfig, 'aimbotKey').name('Aimbot key');
- configFolder.add(espConfig, 'triggerBotKey').name('Triggerbot key');
- configFolder.close();
- const defaultConfig = gui.save();
- let config = { configName: 'espConfig' };
- configFolder.add(config, 'configName').name('Config name');
- configFolder.add({ export: () => {
- const currentConfig = JSON.stringify(gui.save(), null, 2);
- const element = document.createElement('a');
- element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(currentConfig));
- element.setAttribute('download', config.configName + '.json');
- element.style.display = 'none';
- document.body.appendChild(element);
- element.click();
- document.body.removeChild(element);
- }}, 'export').name('Export config');
- configFolder.add({ import: () => {
- const input = document.createElement('input');
- input.type = 'file';
- input.accept = '.json';
- input.onchange = (e) => {
- const file = e.target.files[0];
- const reader = new FileReader();
- reader.onload = (e) => {
- gui.load(JSON.parse(e.target.result));
- };
- reader.readAsText(file);
- };
- input.click();
- }}, 'import').name('Import config');
- configFolder.add({ reset: () => {
- gui.load(defaultConfig);
- localStorage.removeItem('espConfig');
- }}, 'reset').name('Reset config');
-
- // auto load/save config
- const savedConfig = localStorage.getItem('espConfig');
- if (savedConfig) {
- console.log('Loaded config', savedConfig);
- gui.load(JSON.parse(savedConfig));
- }
- gui.onChange(() => {
- localStorage.setItem('espConfig', JSON.stringify(gui.save()));
- });
-
- // listen for key press
- document.addEventListener('keydown', (e) => {
- if (!espConfig.lockAimbotTriggerBot && e.key === espConfig.aimbotKey) {
- espConfig.aimbot = (espConfig.aimbot + 1) % 4;
- }
- if (!espConfig.lockAimbotTriggerBot && e.key === espConfig.triggerBotKey) {
- espConfig.triggerBot = (espConfig.triggerBot + 1) % 4;
- }
- if (e.key === espConfig.toggleUIKey) {
- lilGuiContainer.style.display = lilGuiContainer.style.display === 'none' ? 'block' : 'none';
- }
- if (e.key === 'e') {
- if (espConfig.autoClaimAds) {
- setTimeout(() => {
- claimAds();
- }, 100);
- }
- }
- });
-
- // no-recoil
- let foundRecoil = false;
- const arrayPushHandler = {
- apply: function(target, thisArg, argumentsList) {
- if (!foundRecoil && argumentsList.length === 1) {
- const item = argumentsList[0];
- if (item && typeof item === 'object') {
- const keys = Object.keys(item);
- if (keys.length === 44) {
- for (const key in item) {
- if (item[key] === 0.3) {
- console.log('Recoil key found', key);
- foundRecoil = true;
- Object.defineProperty(Object.prototype, key, {
- get: () => {
- return espConfig.noRecoil ? 0 : item[key];
- },
- set: (baseRecoil) => {
- _baseRecoil = baseRecoil;
- }
- });
- break;
- }
- }
- }
- }
- }
- return Reflect.apply(...arguments);
- }
- };
- Array.prototype.push = new Proxy(Array.prototype.push, arrayPushHandler);
-
- // listen for mouse click
- let isLeftClick = false;
- let isRightClick = false;
- document.addEventListener('mousedown', (e) => {
- if (e.button === 0) {
- isLeftClick = true;
- }
- if (e.button === 2) {
- if (espConfig.isSniper) {
- setTimeout(() => {
- isRightClick = true;
- }, 400);
- } else {
- isRightClick = true;
- }
- }
- });
- document.addEventListener('mouseup', (e) => {
- if (e.button === 0) {
- isLeftClick = false;
- }
- if (e.button === 2) {
- isRightClick = false;
- }
- });
-
- // obfuscaed keys
- let worldScene = null;
- let childrenKey = null;
- let worldCamera = null;
- let projectionMatrixKey = null;
- let matrixWorldKey = null;
- let matrixElKey = null;
-
- // three.js setup
- const scene = new THREE.Scene();
- const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);
- camera.rotation.order = 'YXZ';
- let saveViewport = new THREE.Vector4();
- let saveScissor = new THREE.Vector4();
- let minimapViewport = new THREE.Vector4(20, window.innerHeight - 250 - 20, 250, 250);
- const minimapCamera = new THREE.OrthographicCamera(-espConfig.mapZoom, espConfig.mapZoom, espConfig.mapZoom, -espConfig.mapZoom, 0.1, 1000);
- minimapCamera.rotation.order = 'YXZ';
- minimapCamera.position.set(0, 50, 0);
- minimapCamera.lookAt(0, 0, 0);
- const renderer = new THREE.WebGLRenderer( {
- alpha: true,
- antialias: true
- });
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.domElement.id = 'overlayCanvas';
- document.body.appendChild(renderer.domElement);
-
-
- function setTransform(target, transform, isMatrix = true) {
- const matrix = new THREE.Matrix4().fromArray(isMatrix ? transform : transform[matrixWorldKey][matrixElKey]);
- matrix.decompose(target.position, target.quaternion, target.scale);
- }
-
- doOnce = (fn) => {
- let done = false;
- return (...args) => {
- if (!done) {
- done = true;
- return fn(...args);
- }
- };
- };
-
- function checkWorldCamera(object) {
- if (worldCamera && object.uuid === worldCamera.uuid) return;
- let hasProjectionMatrix = false;
- for (const key in object) {
- const element = object[key];
- if (!element) continue;
- if (typeof element == 'object') {
- if (hasProjectionMatrix) continue;
- const valueKey = Object.keys(element)[0];
- const value = element[valueKey];
- if (Array.isArray(value) && value[11] === -1) {
- hasProjectionMatrix = true;
- matrixElKey = valueKey;
- projectionMatrixKey = key;
- }
- } else if (typeof element === 'function') {
- const code = element.toString();
- const match = /verse'\]\(this\['([^']+)'\]\);/.exec(code);
- if (match) {
- matrixWorldKey = match[1];
- }
- }
- if (hasProjectionMatrix && matrixWorldKey) {
- console.log('Found camera', {object}, object);
- worldCamera = object;
- object[projectionMatrixKey] = new Proxy(object[projectionMatrixKey], {
- get: function(target, prop, receiver) {
- setTransform(camera, object, false);
- camera.near = worldCamera.near;
- camera.far = worldCamera.far;
- camera.aspect = worldCamera.aspect;
- camera.fov = worldCamera.fov;
- camera.updateProjectionMatrix();
- worldCamera = object;
- window.worldCamera = object;
- return Reflect.get(...arguments);
- }
- });
- break;
- }
- }
- }
-
- function checkWorldScene(object) {
- if (worldScene || object instanceof THREE.Scene) return;
- for (const key in object) {
- const element = object[key];
- if (!element) continue;
- if (Array.isArray(element) && element.length === 9) {
- const value = element[0];
- if (value && typeof value === 'object' && value.hasOwnProperty('uuid')) {
- childrenKey = key;
- }
- }
- if (childrenKey) {
- console.log('Found scene', {childrenKey}, object);
- worldScene = object;
- window.worldScene = object;
- renderer.setAnimationLoop(animate);
- break;
- }
- }
- }
-
- Object.defineProperty( Object.prototype, 'overrideMaterial', {
- get: function() {
- checkWorldScene(this);
- return this._overrideMaterial;
- },
- set: function(value) {
- this._overrideMaterial = value;
- }
- });
- Object.defineProperty( Object.prototype, 'far', {
- get: function() {
- checkWorldCamera(this);
- return this._far;
- },
- set: function(value) {
- this._far = value;
- }
- });
-
- function isPlayer(entity) {
- try {
- return entity[childrenKey].length > 2 || !entity[childrenKey][1].geometry;
- } catch {
- return false;
- }
- }
-
- // claim ads
- function claimAds() {
- document.querySelectorAll('svg').forEach(svg => {
- if (svg.getAttribute('data-icon') === 'play-circle') {
- svg.closest('div').click();
- console.log('Claimed ads');
- }
- });
- }
-
- const context2DFillTextHandler = {
- apply: function(target, thisArg, argumentsList) {
- thisArg.canvas.lastText = argumentsList[0];
- return Reflect.apply(...arguments);
- }
- };
- CanvasRenderingContext2D.prototype.fillText = new Proxy(CanvasRenderingContext2D.prototype.fillText, context2DFillTextHandler);
-
- function isEnnemy(entity) {
- for (const child of entity[childrenKey]) {
- try {
- const matImage = child.material.map.image;
- if (matImage instanceof HTMLCanvasElement && matImage.hasOwnProperty('lastText')) {
- entity.playerName = matImage.lastText;
- return false;
- }
- } catch {}
- }
- return true;
- }
-
- function setFiring(shouldFire) {
- if (setFiring.firing === shouldFire) return;
- setFiring.firing = shouldFire;
- if (shouldFire) {
- if (espConfig.isSniper) { // need improvement
- setTimeout(() => {
- document.dispatchEvent(new MouseEvent('mousedown', { buttons: 3 }));
- setTimeout(() => {
- document.dispatchEvent(new MouseEvent('mouseup', { buttons: 0 }));
- }, 200);
- // setFiring.firing = false;
- }, 300);
- } else {
- document.dispatchEvent(new MouseEvent('mousedown', { buttons: 3 }));
- }
- } else {
- document.dispatchEvent(new MouseEvent('mouseup', { buttons: 0 }));
- }
- }
-
- const colors = {
- ennemy: new THREE.Color(0xff0000),
- player: new THREE.Color(0x00ff00),
- blue: new THREE.Color(0x0000ff)
- };
-
- const outlineMats = {
- ennemy: new THREE.LineBasicMaterial({ color: colors.ennemy }),
- player: new THREE.LineBasicMaterial({ color: colors.player })
- };
- const meshMats = {
- ennemy: new THREE.MeshBasicMaterial({ color: colors.ennemy, transparent: true, opacity: 0.5 }),
- player: new THREE.MeshBasicMaterial({ color: colors.player, transparent: true, opacity: 0.5 })
- };
-
- const raycaster = new THREE.Raycaster();
- const edgesGeometry = new THREE.EdgesGeometry(new THREE.BoxGeometry(1, 1, 1).translate(0, 0.5, 0));
-
-
- const lineGeometry = new THREE.BufferGeometry();
- const lineMaterial = new THREE.LineBasicMaterial({ vertexColors: true, transparent: true });
- const line = new THREE.LineSegments(lineGeometry, lineMaterial);
- line.frustumCulled = false;
- scene.add(line);
-
- const dummyLookAt = new THREE.PerspectiveCamera();
- const color = new THREE.Color();
-
- const chunkMaterial = new THREE.MeshNormalMaterial();
-
- const boxPlayerGeometry = new THREE.BoxGeometry(.25, 1.25, 0.25);
-
-
- // crosshair circle
- const crosshairGeometry = new THREE.CircleGeometry(.5, 32);
- const crosshairMaterial = new THREE.LineBasicMaterial({ color: 0xffffff, transparent: true, opacity: 0.2 });
- const crosshair = new THREE.LineLoop(crosshairGeometry, crosshairMaterial);
- camera.add(crosshair);
- scene.add(camera);
-
- function calculateValue(maxAngleInRadians) {
- const a = -79.83;
- const b = -30.06;
- const c = -0.90;
- return a * Math.exp(b * maxAngleInRadians) + c;
- }
-
- function animate(time) {
- const now = Date.now();
- const entities = childrenKey ? worldScene[childrenKey][5][childrenKey] : [];
- const lineOrigin = camera.localToWorld(new THREE.Vector3(0, 0, -10));
- const linePositions = [];
- crosshair.position.z = calculateValue(espConfig.maxAngleInRadians);
- crosshair.visible = espConfig.showAimRadius;
- const colorArray = [];
- const aimbotTarget = { angleDifference: Infinity};
- const chunks = [];
- const gameChunks = childrenKey ? worldScene[childrenKey][4][childrenKey] : [];
- for (const chunk of gameChunks) {
- if (!chunk || !chunk.geometry) continue;
- const chunkPositions = chunk.geometry.attributes.position.array;
- if (!chunkPositions || !chunkPositions.length) continue;
- if (!chunk.myChunk) {
- const geometry = new THREE.BufferGeometry();
- geometry.setAttribute(
- 'position',
- new THREE.Float32BufferAttribute(chunkPositions, 3)
- );
- geometry.setIndex(
- new THREE.BufferAttribute(chunk.geometry.index.array, 1)
- );
- geometry.computeVertexNormals();
- geometry.computeBoundingBox();
- chunk.myChunk = new THREE.Mesh(geometry, chunkMaterial);
- chunk.myChunk.box = new THREE.Box3();
- }
- const myChunk = chunk.myChunk;
- if (chunk.material) chunk.material.wireframe = espConfig.wireframe;
- setTransform(myChunk, chunk, false);
- myChunk.updateMatrixWorld();
- myChunk.box.copy(myChunk.geometry.boundingBox).applyMatrix4(myChunk.matrixWorld);
- chunks.push(myChunk);
- }
-
- chunks.sort((a, b) => {
- const distanceA = a.position.distanceTo(camera.position);
- const distanceB = b.position.distanceTo(camera.position);
- return distanceB - distanceA;
- });
-
- const shouldAimbot = espConfig.aimbot === 3 || (espConfig.aimbot === 1 && isLeftClick) || (espConfig.aimbot === 2 && isRightClick);
-
- entities.forEach(entity => {
- if (!entity || !entity.parent) return;
- if (!entity.myObject3D) {
- entity.myObject3D = new THREE.Object3D();
- entity.myObject3D.frustumCulled = false;
- entity.discovered = now;
- entity.loaded = false;
- entity.logged = false;
- entity.ennemy = null;
- return;
- }
- if (typeof entity.visible === 'boolean' && !entity.visible) {
- entity.myObject3D.visible = false;
- return;
- }
- if (!entity.loaded && now - entity.discovered < 500) return;
- entity.loaded = true;
- if (!entity.logged && isPlayer(entity)) {
- const skinnedMesh = entity[childrenKey][1][childrenKey][3];
- entity.isPlayer = true;
- entity.logged = true;
- entity.ennemy = isEnnemy(entity);
- const playerMesh = new THREE.Mesh(skinnedMesh.geometry, entity.ennemy ? meshMats.ennemy : meshMats.player);
- entity.myObject3D.add(playerMesh);
- entity.myObject3D.playerMesh = playerMesh;
- const playerMiniMap = new THREE.Mesh(skinnedMesh.geometry, entity.ennemy ? meshMats.ennemy : meshMats.player);
- playerMiniMap.visible = false;
- entity.myObject3D.add(playerMiniMap);
- entity.myObject3D.playerMiniMap = playerMiniMap;
- const outline = new THREE.LineSegments(edgesGeometry, entity.ennemy ? outlineMats.ennemy : outlineMats.player);
- outline.scale.set(0.5, 1.25, 0.5);
- outline.frustumCulled = false;
- entity.myObject3D.add(outline);
- entity.myObject3D.outline = outline;
- const boxMesh = new THREE.Mesh(boxPlayerGeometry, entity.ennemy ? meshMats.ennemy : meshMats.player);
- boxMesh.position.y = 0.625;
- entity.myObject3D.add(boxMesh);
- entity.myObject3D.boxMesh = boxMesh;
- const dir = new THREE.Vector3(0, 0, -1);
- const origin = new THREE.Vector3(0, 1, 0);
- const arrowLookingAt = new THREE.ArrowHelper(dir, origin, 1, entity.ennemy ? colors.ennemy : colors.player, 0.5, .4);
- playerMiniMap.add(arrowLookingAt);
- setTransform(entity.myObject3D, entity, false);
- scene.add(entity.myObject3D);
- }
- if (entity.isPlayer) {
- entity.myObject3D.playerMesh.rotation.y = -entity[childrenKey][1].rotation._y;
- entity.myObject3D.playerMiniMap.rotation.y = -entity[childrenKey][1].rotation._y;
- const skinnedMesh = entity[childrenKey][1][childrenKey][3];
- const isSneak = skinnedMesh.skeleton.bones[4].rotation._x > 0.1;
- entity.myObject3D.boxMesh.scale.set(1, isSneak ? .4 : 1, 1);
- entity.myObject3D.outline.scale.set(0.5, isSneak ? .9 : 1.25, 0.5);
- entity.myObject3D.playerMesh.scale.set(1, isSneak ? .7 : 1, 1);
-
- entity.myObject3D.visible = true;
- entity.myObject3D.playerMesh.visible = espConfig.showPlayer === 2 || (espConfig.showPlayer === 1 && !entity.ennemy);
- entity.myObject3D.boxMesh.visible = espConfig.showBox === 2 || (espConfig.showBox === 1 && entity.ennemy);
- entity.myObject3D.outline.visible = espConfig.showOutline === 2 || (espConfig.showOutline === 1 && entity.ennemy);
- setTransform(entity.myObject3D, entity, false);
-
- // aimbot and line
- const pos = entity.myObject3D.position.clone();
- pos.y -= isSneak ? espConfig.sneakHeight : 0;
- // line
- if (espConfig.showLine === 2 || (espConfig.showLine === 1 && entity.ennemy)) {
- if (espConfig.rainbow) {
- color.setHSL(time % 2000 / 2000, 1, 0.5);
- } else if (entity.ennemy) {
- color.lerpColors(colors.ennemy, colors.player, pos.distanceTo(camera.position) / espConfig.ennemyDistance);
- color.a = .8;
- } else {
- color.set(colors.blue);
- color.a = .3;
- }
- linePositions.push(lineOrigin.x, lineOrigin.y, lineOrigin.z);
- pos.y += 1.25;
- linePositions.push(pos.x, pos.y, pos.z);
- pos.y -= 1.25;
- colorArray.push(color.r, color.g, color.b, color.a);
- colorArray.push(color.r, color.g, color.b, color.a);
- }
- pos.y += espConfig.heightLine;
- // aimbot
- if (shouldAimbot && (entity.ennemy || espConfig.allEnnemies)) {
- const distance = pos.distanceTo(camera.position);
- const target = pos.clone();
- const dummy = new THREE.PerspectiveCamera();
- setTransform(dummy, worldCamera, false);
- dummy.lookAt(target);
- const cameraVector = new THREE.Vector3(0, 0, -1).applyQuaternion(camera.quaternion);
- const targetVector = new THREE.Vector3(0, 0, -1).applyQuaternion(dummy.quaternion);
- const angleDifference = cameraVector.angleTo(targetVector);
- if (angleDifference < espConfig.maxAngleInRadians && angleDifference < aimbotTarget.angleDifference) {
- const directionV3 = new THREE.Vector3();
- directionV3.subVectors(target, camera.position).normalize();
- raycaster.set(camera.position, directionV3);
- let behindBlock = false;
- if (espConfig.aimbotIgnoreWall) {
- aimbotTarget.angleDifference = angleDifference;
- aimbotTarget.target = target;
- } else {
- for (const chunk of chunks) {
- if (raycaster.ray.intersectsBox(chunk.box)) {
- const hit = raycaster.intersectObject(chunk)[0];
- if (hit && hit.distance < distance) {
- behindBlock = true;
- break;
- }
- }
- }
- if (!behindBlock) {
- aimbotTarget.angleDifference = angleDifference;
- aimbotTarget.target = target;
- color.setHSL(time % 2000 / 2000, 1, 0.5);
- }
- }
- }
- }
- }
- });
-
- // aim at target
- if (espConfig.aimbot && shouldAimbot && aimbotTarget.target) {
- setTransform(dummyLookAt, worldCamera, false);
- dummyLookAt.lookAt(aimbotTarget.target);
- worldCamera.rotation.set(
- dummyLookAt.rotation.x,
- dummyLookAt.rotation.y,
- dummyLookAt.rotation.z
- );
- }
- // triggerbot
- const shouldTrigger = espConfig.triggerBot === 3 || (espConfig.triggerBot === 1 && isLeftClick) || (espConfig.triggerBot === 2 && isRightClick);
- if (shouldTrigger) {
- raycaster.set(camera.position, camera.getWorldDirection(new THREE.Vector3()));
- let hasHit = false;
- for (const entity of entities) {
- if (!entity.myObject3D.visible) continue;
- if (entity.isPlayer && (entity.ennemy || espConfig.allEnnemies)) {
- const hit = raycaster.intersectObject(entity.myObject3D.playerMesh);
- if (hit.length) {
- hasHit = true;
- const distance = hit[0].distance;
- for (const chunk of chunks) {
- if (raycaster.ray.intersectsBox(chunk.box)) {
- const hitBlock = raycaster.intersectObject(chunk)[0];
- if (hitBlock && hitBlock.distance < distance) {
- hasHit = false;
- break;
- }
- }
- }
- if (hasHit) {
- break;
- }
- }
- }
- }
- setFiring(hasHit);
- } else {
- setFiring(false);
- }
-
- line.geometry.setAttribute('color', new THREE.Float32BufferAttribute(colorArray, 4));
- line.geometry.setAttribute('position', new THREE.Float32BufferAttribute(linePositions, 3));
- line.visible = espConfig.showLine;
-
- renderer.render(scene, camera);
-
- // minimap
- // make entities larger for minimap
- const scale = espConfig.mapZoom / 3;
- entities.forEach(entity => {
- if (entity.isPlayer) {
- entity.myObject3D.playerMesh.visible = false;
- entity.myObject3D.boxMesh.visible = false;
- entity.myObject3D.outline.visible = false;
- entity.myObject3D.playerMiniMap.visible = true;
- entity.myObject3D.playerMiniMap.scale.set(scale, 1, scale);
- }
- });
- if (worldCamera) {
- line.visible = false;
- crosshair.visible = false;
- // update orthographic camera based on espConfig.mapZoom
- minimapCamera.left = -espConfig.mapZoom;
- minimapCamera.right = espConfig.mapZoom;
- minimapCamera.top = espConfig.mapZoom;
- minimapCamera.bottom = -espConfig.mapZoom;
-
- // update position with camera position
- minimapCamera.position.copy(camera.position);
- minimapCamera.position.y += 50;
- minimapCamera.position.z += espConfig.mapOffsetZ;
- minimapCamera.rotation.y = camera.rotation.y;
- minimapCamera.updateProjectionMatrix();
-
- renderer.getViewport(saveViewport);
- renderer.getScissor(saveScissor);
- let saveScissorTest = renderer.getScissorTest();
- renderer.setViewport(minimapViewport);
- renderer.setScissor(minimapViewport);
- renderer.setScissorTest(true);
-
- renderer.render(scene, minimapCamera);
-
- renderer.setViewport(saveViewport);
- renderer.setScissor(saveScissor);
- renderer.setScissorTest(saveScissorTest);
- }
- entities.forEach(entity => {
- if (entity.isPlayer) {
- entity.myObject3D.playerMiniMap.visible = false;
- }
- });
-
- scene.children.forEach(child => {
- if (child.type === 'Object3D') {
- child.visible = false;
- }
- });
- }
-
- window.addEventListener('resize', () => {
- renderer.setSize( window.innerWidth, window.innerHeight );
- });
-
- // add style to header
- style.innerHTML = `
- #overlayCanvas {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- pointer-events: none;
- z-index: 1000;
- }
- #lil-gui {
- position: absolute;
- top: 50%;
- right: 0;
- z-index: 1001;
- transform: translateY(-50%);
- }
- .lil-gui {
- --background-color: rgba(0, 0, 0, 0.5);
- }
- `;
- guiStyle.innerHTML = `
- .lil-gui {
- --title-background-color: #ff0019;
- --number-color: #00ff33;
- }
- `;
- document.head.appendChild(style);
- document.head.appendChild(guiStyle);
-
- // anti-afk
- setInterval(() => {
- if (espConfig.antiAFK) {
- // move left for .5s then right for .5s
- document.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 87}));
- setTimeout(() => {
- document.dispatchEvent(new KeyboardEvent('keyup', { keyCode: 87}));
- document.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 83}));
- setTimeout(() => {
- document.dispatchEvent(new KeyboardEvent('keyup', { keyCode: 83}));
- }, 500);
- }, 500);
- }
- }, 5000);
-
-
- // wait for load
- window.addEventListener('load', () => {
- console.log('Loaded');
- if (espConfig.autoClaimAds) {
- setTimeout(() => {
- claimAds();
- }, 500);
- }
- });