您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Locks aim to the nearest player in shellshock.io. Comes with an ESP too. Press B, V, N to toggle aimbot, esp, esp lines.
当前为
// ==UserScript== // @name Shellshock.IO Aimbot & ESP // @namespace http://tampermonkey.net/ // @version 0.0.6 // @description Locks aim to the nearest player in shellshock.io. Comes with an ESP too. Press B, V, N to toggle aimbot, esp, esp lines. // @author Zertalious (Zert) // @match *://shellshock.io/* // @icon https://www.google.com/s2/favicons?domain=shellshock.io // @grant none // ==/UserScript== window.espEnabled = true; window.aimbotEnabled = true; window.showLines = true; window.addEventListener( 'keyup', function ( event ) { switch ( String.fromCharCode( event.keyCode ) ) { case 'B' : window.aimbotEnabled = ! window.aimbotEnabled; break; case 'V' : window.espEnabled = ! window.espEnabled; break; case 'N' : window.showLines = ! window.showLines; break; } } ); Node.prototype.appendChild = new Proxy( Node.prototype.appendChild, { apply( target, thisArgs, [ script ] ) { if ( script.tagName === 'SCRIPT' ) { const code = script.innerHTML; const babylonVarName = /new ([a-zA-Z]+)\.Vector3/.exec( code )[ 1 ]; const playersVarName = /([^,]+)=\[\],{}/.exec( code )[ 1 ]; const myPlayerVarName = /"fire":document.pointerLockElement&&([^&]+)&&/.exec( code )[ 1 ]; const sceneVarName = /createMapCells\(([^,]+),/.exec( code )[ 1 ]; const cullFuncName = /=([a-zA-Z]+)\(this\.mesh/.exec( code )[ 1 ]; console.log( '%cInjecting code...', 'color: red; background: black; font-size: 2em;', { babylonVarName, playersVarName, myPlayerVarName, playersVarName, sceneVarName, cullFuncName } ); script.innerHTML = code.replace( sceneVarName + '.render()', `( function () { const players = ${playersVarName}; const myPlayer = ${myPlayerVarName}; const BABYLON = ${babylonVarName}; if ( ! myPlayer ) { return; } if ( ! window.lineOrigin ) { window.lineOrigin = new BABYLON.Vector3(); window.lines = []; } window.lineOrigin.copyFrom( myPlayer.actor.mesh.position ); const yaw = myPlayer.actor.mesh.rotation.y; window.lineOrigin.x += Math.sin( yaw ); window.lineOrigin.z += Math.cos( yaw ); window.lineOrigin.y += Math.sin( - myPlayer.pitch ); for ( let i = 0; i < window.lines.length; i ++ ) { window.lines[ i ].playerExists = false; } for ( let i = 0; i < players.length; i ++ ) { const player = players[ i ]; if ( ! player || player === myPlayer ) { continue; } if ( player.sphere === undefined ) { const material = new BABYLON.StandardMaterial( 'myMaterial', player.actor.scene ); material.emissiveColor = material.diffuseColor = new BABYLON.Color3( 1, 0, 0 ); material.wireframe = true; const sphere = BABYLON.MeshBuilder.CreateBox( 'mySphere', { width: 0.5, height: 0.75, depth: 0.5 }, player.actor.scene ); sphere.material = material; sphere.position.y = 0.3; sphere.parent = player.actor.mesh; player.sphere = sphere; } if ( player.lines === undefined ) { const options = { points: [ window.lineOrigin, player.actor.mesh.position ], updatable: true }; const lines = options.instance = BABYLON.MeshBuilder.CreateLines( 'lines', options, player.actor.scene ); lines.color = new BABYLON.Color3( 1, 0, 0 ); lines.alwaysSelectAsActiveMesh = true; lines.renderingGroupId = 1; player.lines = lines; player.lineOptions = options; window.lines.push( lines ); console.log( '%cAdding line...', 'color: green; background: black; font-size: 2em;' ); } player.lines.playerExists = true; player.lines = BABYLON.MeshBuilder.CreateLines( 'lines', player.lineOptions ); player.sphere.renderingGroupId = window.espEnabled ? 1 : 0; player.sphere.visibility = ( window.aimbotEnabled || window.espEnabled ) && myPlayer !== player && ( myPlayer.team === 0 || myPlayer.team !== player.team ); player.lines.visibility = player.playing && player.sphere.visibility && window.showLines; } for ( let i = 0; i < window.lines.length; i ++ ) { if ( ! window.lines[ i ].playerExists ) { console.log( '%cRemoving line...', 'color: red; background: black; font-size: 2em;' ); window.lines[ i ].dispose(); window.lines.splice( i, 1 ); } } if ( window.aimbotEnabled && myPlayer.playing ) { let minDistance = Infinity; let targetPlayer; for ( let i = 0; i < players.length; i ++ ) { const player = players[ i ]; if ( player && player !== myPlayer && player.playing && ( myPlayer.team === 0 || player.team !== myPlayer.team ) ) { const distance = Math.hypot( player.x - myPlayer.x, player.y - myPlayer.y, player.z - myPlayer.z ); if ( distance < minDistance ) { minDistance = distance; targetPlayer = player; } } } if ( targetPlayer ) { const x = targetPlayer.actor.mesh.position.x - myPlayer.actor.mesh.position.x; const y = targetPlayer.actor.mesh.position.y - myPlayer.actor.mesh.position.y; const z = targetPlayer.actor.mesh.position.z - myPlayer.actor.mesh.position.z; myPlayer.yaw = Math.mod( Math.atan2( x, z ), Math.PI2 ); myPlayer.pitch = - Math.atan2( y, Math.hypot( x, z ) ) % 1.5; } } } )(); ${sceneVarName}.render()` ) .replace( `function ${cullFuncName}`, ` function ${cullFuncName}() { return true; } function someFunctionWhichWillNeverBeUsedNow` ); } return Reflect.apply( ...arguments ); } } ); const temp = document.createElement( 'div' ); temp.innerHTML = `<div class="popup_window popup_lg centered roundme_lg"> <button class="popup_close clickme roundme_sm" onclick="this.parentNode.style.display='none';"></button> <h1 class="roundme_sm">Aimbot & ESP!</h1> <h4 style="text-align:center;"> [B] to toggle aimbot <br> [V] to toggle ESP <br> [N] to toggle ESP lines <br> <br> By Zertalious </h4> <div id="btn-horizontal" class="f-center"> <button class="ss_button btn_red bevel_red btn_sm" onclick="window.open('https://discord.gg/K24Zxy88VM', '_blank')">Discord</button> <button class="ss_button btn_yolk bevel_yolk btn_sm" onclick="window.open('https://greasyfork.org/en/users/662330-zertalious', '_blank')">More scripts</button> </div> </div>`; document.body.appendChild( temp.children[ 0 ] );