Avant de procéder à l'installation, Greasy Forkattention ce script contient des contre-fonctionnalités, qui sont là pour le bénéfice de l'auteur du script, plutôt que pour le vôtre.
Ce script injectera des ads/Pub sur les sites que vous visitez.
Free ChronoHack cheat for the game ev.io with features such as esp, convenient aimbot and beautiful clickgui
// ==UserScript== // @name Ev.IO ChronoHack // @namespace http://tampermonkey.net/ // @version 0.1.2 // @description Free ChronoHack cheat for the game ev.io with features such as esp, convenient aimbot and beautiful clickgui // @author ilyxa05 // @match *://ev.io/* // @icon https://www.google.com/s2/favicons?sz=64&domain=ev.io // @grant none // @run-at document-end // @antifeature ads // @license MIT // ==/UserScript== let espEnabled = false; let aimbotEnabled = false; let tracers = true; let espSize = 1; const ver = 'v0.1'; let AIMBOT_FOV = THREE.MathUtils.degToRad(50); let AIMBOT_DELAY = 300; // 300 миллисекунд = 0.3 секунды const geometry = new THREE.EdgesGeometry( new THREE.BoxGeometry( 1, 2, 1 ).translate( 0, 1, 0 ) ); const material = new THREE.RawShaderMaterial( { vertexShader: ` attribute vec3 position; uniform mat4 projectionMatrix; uniform mat4 modelViewMatrix; void main() { gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); gl_Position.z = 1.0; } `, fragmentShader: ` void main() { gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); } ` } ); let worldScene; WeakMap.prototype.set = new Proxy( WeakMap.prototype.set, { apply( target, thisArgs, [ object ] ) { if ( object.type === 'Scene' ) { if ( object.children.length > 4 ) { worldScene = object; console.log( 'SCENE FOUND!', worldScene ); } } return Reflect.apply( ...arguments ); } } ); const precision = Math.pow( 10, 4 ); function createKey( object ) { return Math.round( precision * object.position.x ) + ',' + Math.round( precision * object.position.z ); } function findHeadBone( player ) { for ( let j = 0; j < player.children.length; j ++ ) { const child = player.children[ j ].children[ 0 ]; if ( child && child.isSkinnedMesh ) { const bones = child.skeleton.bones; for ( let k = 0; k < bones.length; k ++ ) { const bone = bones[ k ]; if ( bone.name.indexOf( 'Head' ) > - 1 ) { return bone; } } } } return null; } const canvas = document.getElementById( 'canvas' ); const p = new THREE.Vector3(); const raycaster = new THREE.Raycaster(); /*let tracersLines = []; function createTracer(start, end) { const material = new THREE.LineBasicMaterial({ color: 0xff0000 }); const geometry = new THREE.Geometry(); geometry.vertices.push(start, end); const line = new THREE.Line(geometry, material); worldScene.add(line); return line; }*/ function animate() { if ( worldScene ) { let myCamera; const spriteMap = {}; const players = []; for ( let i = 0; i < worldScene.children.length; i ++ ) { const child = worldScene.children[ i ]; if ( child.type === 'PerspectiveCamera' ) { myCamera = child; } else if ( child.type === 'Sprite' ) { try { if ( child.material.map.image.className === 'canvas_healthbar' ) { child.isEnemy = child.material.depthTest === true; spriteMap[ createKey( child ) ] = child; } } catch ( err ) {} } else if ( child.name !== '' && child.type === 'Group' && child.visible ) { if ( child.headBone === undefined ) { child.headBone = findHeadBone( child ); } if ( child.headBone ) { players.push( child ); } } } let targetPlayer; let minDistance = Infinity; for ( let i = 0; i < players.length; i ++ ) { const player = players[ i ]; p.setScalar( 0 ).applyMatrix4( player.headBone.matrixWorld ) player.isAlive = Math.hypot( p.x - player.position.x, p.z - player.position.z ) < 1; if ( ! player.myBox ) { player.myBox = new THREE.LineSegments( geometry, material ); player.add( player.myBox ); } player.myBox.scale.setScalar( espSize ); if ( ! player.sprite || player.sprite.parent !== worldScene ) { player.sprite = spriteMap[ createKey( player ) ]; } player.myBox.visible = player.isAlive && ( player.sprite ? player.sprite.isEnemy : true ); if ( player.myBox.visible ) { const d = player.position.distanceTo( myCamera.position ); if ( d < minDistance ) { targetPlayer = player; minDistance = d; } } player.myBox.visible &&= espEnabled; } /*if (tracers) { // Очистка старых линий tracersLines.forEach(line => worldScene.remove(line)); tracersLines = []; players.forEach(player => { if (player.myBox.visible) { const startPoint = new THREE.Vector3(0, 0, 0.5).unproject(myCamera); // Создаем трейсер между центром экрана и игроком const line = createTracer(startPoint, player.position); worldScene.add(line); tracersLines.push(line); } }); } else { // Если трейсеры выключены, удаляем все линии tracersLines.forEach(line => worldScene.remove(line)); tracersLines = []; }*/ //aimbot func | if ( aimbotEnabled && targetPlayer ) { if (aimbotEnabled && targetPlayer) { const directionToPlayer = targetPlayer.position.clone().sub(myCamera.position).normalize(); const angle = directionToPlayer.angleTo(myCamera.getWorldDirection(new THREE.Vector3())); if (angle < AIMBOT_FOV) { setTimeout(() => { const yaw = myCamera.rotation.y; const pitch = myCamera.rotation.x; myCamera.rotation.order = 'YXZ'; myCamera.lookAt(targetPlayer.position.x, targetPlayer.position.y + 1.5, targetPlayer.position.z); canvas.dispatchEvent(new MouseEvent('mousemove', { movementX: (yaw - myCamera.rotation.y) * 500, movementY: (pitch - myCamera.rotation.x) * 500 })); }, AIMBOT_DELAY); } } } } window.requestAnimationFrame = new Proxy( window.requestAnimationFrame, { apply( target, thisArgs, args ) { args[ 0 ] = new Proxy( args[ 0 ], { apply( target, thisArgs, args ) { Reflect.apply( ...arguments ); animate(); } } ); return Reflect.apply( ...arguments ); } } ); const value = parseInt( new URLSearchParams( window.location.search ).get( 'showAd' ), 16 ); const shouldShowAd = isNaN( value ) || Date.now() - value < 0 || Date.now() - value > 10 * 60 * 1000; const el = document.createElement( 'div' ); const msgClassName = randomString(); const dialogClassName = randomString(); const aimfovsliderClassName = randomString(); //kvadratik const statusBoxEl = document.createElement('div'); statusBoxEl.className = 'statusBox'; const espStatusEl = document.createElement('div'); espStatusEl.className = 'statusIndicator'; espStatusEl.textContent = espEnabled ? 'ESP [V]: ON' : 'ESP [V]: OFF'; espStatusEl.style.borderRight = espEnabled ? "3px solid #77eb34" : "3px solid #eb4034"; const aimbotStatusEl = document.createElement('div'); aimbotStatusEl.className = 'statusIndicator'; aimbotStatusEl.textContent = aimbotEnabled ? 'Aimbot [B]: ON' : 'Aimbot [B]: OFF'; aimbotStatusEl.style.borderRight = aimbotEnabled ? '3px solid #77eb34' : '3px solid #eb4034'; const watermark = document.createElement('div'); watermark.className = 'watermark'; watermark.textContent = "Chrono b1 | by ilyxa05"; statusBoxEl.appendChild(aimbotStatusEl); statusBoxEl.appendChild(espStatusEl); document.body.appendChild(statusBoxEl); document.body.appendChild(watermark); //html interpritator el.innerHTML = ` <style> .watermark{ border-radius: 4px!important; display: flex; justify-content: center; align-items: center; color:#fff; width: 300px; height: 30px; background: #29292970; position: absolute; top: 5px; right: 5px; z-index: 999999; border-top: 4px solid; border-image: url(https://i.giphy.com/media/3otO6NFBIAFg2vPZuM/giphy.webp) 100; } .dialog { position: absolute; left: 50%; top: 50%; background: rgba(31, 31, 31, 0.8); border-radius: 6px!important; color: #fff; transform: translate(-50%, -50%); box-shadow: 0 0 0 10000px rgba(0, 0, 0, 0.3); text-align: center; z-index: 999998; } .dialog * { color: #fff; } .dialog .btn { cursor: pointer; padding: 0.5em; background: hsla(0, 67%, 44%, 0.7); border: 3px solid rgba(0, 0, 0, 0.2); } .dialog .btn:active { transform: scale(0.8); } .chrono{ font-weight: 700; font-size: 20px; margin-right: 20px; display: flex; align-items: center; z-index: 999999; } .chrono img{ width: 35px; height: 35px; } .tab-container { display: flex; align-items: center; padding: 5px; border-radius: 6px!important; background: rgba(26, 26, 26, 0.8); display: flex; } .tab-button { width: 80px; border-radius: 4px!important; padding: 10px 20px; margin: 5px; border: none; cursor: pointer; background-color: #a96ec7; } .tab-button:hover { background-color: #8b54a6; } .tab-content { margin-top: 10px; display: flex; justify-content: center; } .tab-content h2 { margin-top: 0; } .tab-content p { margin-bottom: 0; } .chronolabelcheck{ margin-right: 4px; margin-left: 10px; } .chronoslider{ margin-bottom: 20px; max-width: 200px; } .chronosliders{ display: flex; justify-content: center; align-items: center; flex-direction: column; } .close { position: absolute; right: 5px; top: 5px; width: 20px; height: 20px; opacity: 0.5; cursor: pointer; } .close:before, .close:after { content: ' '; position: absolute; left: 50%; top: 50%; width: 100%; height: 20%; transform: translate(-50%, -50%) rotate(-45deg); background: #fff; } .close:after { transform: translate(-50%, -50%) rotate(45deg); } .close:hover { opacity: 1; } .msg { position: absolute; left: 10px; bottom: 10px; background: rgba(50, 0, 0, 0.8); color: #fff; padding: 15px; animation: msg 0.5s forwards, msg 0.5s reverse forwards 3s; z-index: 999999; pointer-events: none; background: #29292990; } @keyframes msg { from { transform: translate(-120%, 0); } to { transform: none; } } .statusBox { position: absolute; top: 76px; right: 10px; border-radius: 5px; z-index: 9999999; } .statusIndicator { background: #29292990; display: block; margin: 5px 0; width: 130px; height: 30px; color: #fff; text-align: right; padding-right: 10px; line-height: 30px; border-top-left-radius: 5px!important; border-bottom-left-radius: 5px!important; } #aimbot-fov { border-collapse: separate; perspective: 1px; position: absolute; top: 50%; left: 50%; border-radius: 50%!important; border: 2px solid red; pointer-events: none; z-index: 9999; } .chronocheckbox{ margin-right: 5px; width: 9px; height: 9px; } </style> <div class="dialog"> <div class="tab-container"> <div class="chrono"> <img src="https://i.ibb.co/YkpnJvC/chrono-logo.png" alt="">Chrono </div> <button class="tab-button" id="tab1Button">AimBot</button> <button class="tab-button" id="tab2Button">Visuals</button> <button class="tab-button" id="tab3Button">Misc</button> </div> <div id="tab1" class="tab-content"> <label class="chronolabelcheck" for="aimbotcheckbox"> AimBot: </label> <input class="chronocheckbox" type="checkbox" id="aimbotCheckbox" onchange="toggleAimbot()"> <label class="chronolabelcheck" for="ragefovcheckbox"> RageFOV: </label> <input class="chronocheckbox" type="checkbox" id="ragefovcheckbox" onchange="toggleRageFOV()"> <br> <div class="chronosliders"> <label for="aimfovslider">AimBot FOV: <span id="aimfovvalue"> 50</span></label> <input class="chronoslider" type="range" id="aimfovslider" min="10" max="100" value="50"> </div> <div class="chronosliders"> <label for="aimdelayslider">AimBot Delay: <span id="aimdelayvalue"> 300</span></label> <input class="chronoslider" type="range" id="aimdelayslider" min="20" max="800" value="50"> </div> </div> <div id="tab2" class="tab-content"> <label for="espCheckbox"> ESP: </label> <input class="chronocheckbox" type="checkbox" id="espCheckbox" onchange="toggleEsp()"> <label for="wallhackCheckbox"> WallHack: </label> \ <input class="chronocheckbox" type="checkbox" id="espCheckbox" onchange="toggleWallHack()"> </div> <div id="tab3" class="tab-content"> <p>soon.</p> </div> </div> <div class="msg" style="display: none;"></div> <div id="aimbot-fov"></div> ` .replaceAll( 'dialog', dialogClassName ) .replaceAll( 'close', randomString() ) .replaceAll( 'msg', msgClassName ) .replaceAll( 'btn', randomString() ); //render aimbotfov function updateAimbotFovVisibility() { const fovElement = document.getElementById('aimbot-fov'); if (aimbotEnabled) { fovElement.style.display = 'block'; } else { fovElement.style.display = 'none'; } } function updateAimbotFovElement() { const fovElement = document.getElementById('aimbot-fov'); if (!fovElement) return; const fovDiameterPx = Math.tan(AIMBOT_FOV / 2) * window.innerHeight; // Это только пример. Формула может отличаться в зависимости от вашей реализации. fovElement.style.width = `${fovDiameterPx}px`; fovElement.style.height = `${fovDiameterPx}px`; fovElement.style.marginTop = `-${fovDiameterPx / 2}px`; fovElement.style.marginLeft = `-${fovDiameterPx / 2}px`; } window.onload = updateAimbotFovElement; function randomString() { return Math.random().toString( 32 ).slice( 2 ).replace( /^\d/, 'a' ); } const msgEl = el.getElementsByClassName( msgClassName )[ 0 ]; const dialogEl = el.getElementsByClassName( dialogClassName )[ 0 ]; while ( el.children.length > 0 ) { document.body.appendChild( el.children[ 0 ] ); } function toggleWallHack() { const checkbox = document.getElementById('wallhackCheckbox'); if (checkbox.checked) { enableWallHack(); showMsg( 'Aimbot: ' + ( aimbotEnabled ? 'ON' : 'OFF' ) ); } else { disableWallHack(); } } function enableWallhack() { worldScene.traverse(function(child) { console.log(child); // Логирование каждого объекта в сцене для отладки if (child instanceof THREE.Mesh && child.name === 'Enemy') { // Проверьте правильность имени 'Enemy' для вашей игры if (Array.isArray(child.material)) { child.material.forEach(mat => { mat.transparent = true; mat.opacity = 0.5; }); } else { child.material.transparent = true; child.material.opacity = 0.5; } } }); } function disableWallHack() { if (worldScene) { worldScene.traverse(function(child) { if (child instanceof THREE.Mesh) { if (child.name === 'Enemy') { child.material.transparent = false; child.material.opacity = 1; } } }); } } function updateAimbotFovFromSlider() { const sliderValue = document.getElementById('aimfovslider').value; AIMBOT_FOV = THREE.MathUtils.degToRad(parseInt(sliderValue)); updateAimbotFovElement(); } const aimfovslider = document.getElementById('aimfovslider'); aimfovslider.addEventListener('input', updateAimbotFovFromSlider); document.addEventListener('DOMContentLoaded', () => { updateAimbotFovElement(); }); function updateAimbotDelayFromSlider() { const sliderValue = document.getElementById('aimfovslider').value; AIMBOT_FOV = THREE.MathUtils.degToRad(parseInt(sliderValue)); updateAimbotDelayElement(); } const aimdelayslider = document.getElementById('aimdelayslider'); aimdelayslider.addEventListener('input', updateAimbotDelayFromSlider); document.addEventListener('DOMContentLoaded', () => { updateAimbotDelayElement(); }); function openTab(tabName) { var i, tabContent; tabContent = document.getElementsByClassName("tab-content"); for (i = 0; i < tabContent.length; i++) { tabContent[i].style.display = "none"; } document.getElementById(tabName).style.display = "block"; } document.getElementById('aimfovslider').addEventListener('input', function() { const fovValue = this.value; document.getElementById('aimfovvalue').textContent = ' '+fovValue; // Здесь вы можете также обновить значение AIMBOT_FOV, если необходимо AIMBOT_FOV = THREE.MathUtils.degToRad(fovValue); }); document.getElementById('aimdelayslider').addEventListener('input', function() { const delayValue = this.value; document.getElementById('aimdelayvalue').textContent = ' '+delayValue; AIMBOT_DELAY = delayValue; }); document.getElementById("tab1Button").addEventListener("click", function() { openTab('tab1'); }); document.getElementById("tab2Button").addEventListener("click", function() { openTab('tab2'); }); document.getElementById("tab3Button").addEventListener("click", function() { openTab('tab3'); }); openTab('tab1'); function toggleEsp() { espEnabled = !espEnabled; } function toggleAimbot() { updateAimbotFovVisibility(); } updateAimbotFovVisibility(); document.addEventListener('DOMContentLoaded', function() { const espCheckbox = document.getElementById('espCheckbox'); espCheckbox.addEventListener('change', toggleWallHack); // Или enableWallhack, в зависимости от вашего имени функции }); const espCheckbox = document.getElementById('espCheckbox'); // Добавляем обработчик события для изменения состояния чекбокса espCheckbox.addEventListener('change', function () { espEnabled = espCheckbox.checked; // Обновляем значение переменной в зависимости от состояния чекбокса showMsg('ESP: ' + (espEnabled ? 'ON' : 'OFF')); espStatusEl.textContent = espEnabled ? 'ESP [V]: ON' : 'ESP [V]: OFF'; espStatusEl.style.borderRight = espEnabled ? "3px solid #77eb34" : "3px solid #eb4034"; }); const aimbotCheckbox = document.getElementById('aimbotCheckbox'); aimbotCheckbox.addEventListener('change', function () { aimbotEnabled = aimbotCheckbox.checked; showMsg('AimBot: ' + (aimbotEnabled ? 'ON' : 'OFF')); updateAimbotFovVisibility(); aimbotStatusEl.textContent = aimbotEnabled ? 'AimBot [B]: ON' : 'AimBot [B]: OFF'; aimbotStatusEl.style.borderRight = aimbotEnabled ? "3px solid #77eb34" : "3px solid #eb4034"; }); let defaultFOV = THREE.MathUtils.degToRad(50); const ragefovcheckbox = document.getElementById('ragefovcheckbox').addEventListener('change', toggleRageFOV); function toggleRageFOV() { console.log("toggleRageFOV function is called!"); const rageFovCheckbox = document.getElementById('ragefovcheckbox'); if (rageFovCheckbox.checked) { AIMBOT_FOV = THREE.MathUtils.degToRad(999); console.log("RageFOV activated:", AIMBOT_FOV); // Добавьте этот вывод для отладки } else { AIMBOT_FOV = defaultFOV; console.log("RageFOV deactivated:", AIMBOT_FOV); // Добавьте этот вывод для отладки } showMsg('RageFOV: ON'); } window.addEventListener( 'keyup', function ( event ) { switch ( event.code ) { case 'KeyV': espEnabled = !espEnabled; showMsg('ESP: ' + (espEnabled ? 'ON' : 'OFF')); espStatusEl.textContent = espEnabled ? 'ESP [V]: ON' : 'ESP [V]: OFF'; espStatusEl.style.borderRight = espEnabled ? "3px solid #77eb34" : "3px solid #eb4034"; break; case 'KeyB': aimbotEnabled = ! aimbotEnabled; updateAimbotFovVisibility(); showMsg( 'Aimbot: ' + ( aimbotEnabled ? 'ON' : 'OFF' ) ); aimbotStatusEl.textContent = aimbotEnabled ? 'AimBot [B]: ON' : 'AimBot [B]: OFF'; aimbotStatusEl.style.borderRight = aimbotEnabled ? '3px solid #77eb34' : '3px solid #eb4034'; break; case 'Comma': if (AIMBOT_FOV > THREE.MathUtils.degToRad(10)) { AIMBOT_FOV -= THREE.MathUtils.degToRad(5); updateAimbotFovElement(); showMsg("AIMBOT_FOV Size Descreased"); } break; case 'Period': if (AIMBOT_FOV < THREE.MathUtils.degToRad(360)) { AIMBOT_FOV += THREE.MathUtils.degToRad(5); updateAimbotFovElement(); showMsg("AIMBOT_FOV Size Increased"); } break; case 'KeyH': dialogEl.style.display = dialogEl.style.display === '' ? 'none' : ''; break; } } ); function showMsg( msg ) { msgEl.innerText = msg; msgEl.style.display = 'none'; void msgEl.offsetWidth; msgEl.style.display = ''; }