0% found this document useful (1 vote)
828 views

Shellshock Aimbot

This document contains a userscript that injects code into the shellshock.io game website to add aimbot and ESP (wallhacks) functionality. It overrides the XMLHttpRequest to inject code when the shellshock.js file is loaded. The injected code tracks all players, draws lines to their locations, locks aim to the closest player, and toggles ESP visuals. It can be activated by pressing keys B, V, and N.

Uploaded by

kokonat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
828 views

Shellshock Aimbot

This document contains a userscript that injects code into the shellshock.io game website to add aimbot and ESP (wallhacks) functionality. It overrides the XMLHttpRequest to inject code when the shellshock.js file is loaded. The injected code tracks all players, draws lines to their locations, locks aim to the closest player, and toggles ESP visuals. It can be activated by pressing keys B, V, and N.

Uploaded by

kokonat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

// ==UserScript==

// @name Shellshock.IO Aimbot & ESP


// @namespace http://tampermonkey.net/
// @version 0.1.1
// @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
// @run-at document-start
// @antifeature ads
// ==/UserScript==

XMLHttpRequest = class extends XMLHttpRequest {

open( method, url ) {

if ( url.indexOf( 'shellshock.js' ) > - 1 ) {

this.isScript = true;

return super.open( ...arguments );

get response() {

if ( this.isScript ) {

const code = super.response;

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,\.[0-
9]+\)/.exec( code )[ 1 ];

console.log( '%cInjecting code...', 'color: red; background:


black; font-size: 2em;', {
babylonVarName,
playersVarName,
myPlayerVarName,
playersVarName,
sceneVarName,
cullFuncName
} );

return 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 ) {

console.log( 'Adding sphere...' );

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.radAdd( Math.atan2( x, z ),


0 );
myPlayer.pitch = - Math.atan2( y,
Math.hypot( x, z ) ) % 1.5;

} )(); ${sceneVarName}.render()` )
.replace( `function ${cullFuncName}`, `

function ${cullFuncName}() {

return true;

function someFunctionWhichWillNeverBeUsedNow` );

return super.response;

};
window.espEnabled = true;
window.aimbotEnabled = true;
window.showLines = true;

window.addEventListener( 'keyup', function ( event ) {

if ( document.activeElement && document.activeElement.tagName === 'INPUT' ) {

return;

switch ( String.fromCharCode( event.keyCode ) ) {

case 'F':

window.aimbotEnabled = ! window.aimbotEnabled;

break;

case 'C':

window.espEnabled = ! window.espEnabled;

break;

case 'E':

window.showLines = ! window.showLines;

break;

} );

window.addEventListener( 'DOMContentLoaded', async function () {

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 temp = document.createElement( 'div' );

temp.innerHTML = '<div class="popup_window popup_lg centered roundme_lg">' +


( shouldShowAd ? `<h1 class="roundme_sm">Loading ad...</h1>` : `<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 id="btn-horizontal" class="f-center">
<button class="ss_button btn_green bevel_green btn_sm"
onclick="window.open('https://www.instagram.com/zertalious/',
'_blank')">Instagram</button>
<button class="ss_button btn_blue bevel_blue btn_sm"
onclick="window.open('https://twitter.com/Zertalious', '_blank')">Twitter</button>
</div>` ) +
'</div>';

document.body.appendChild( temp.children[ 0 ] );

if ( shouldShowAd ) {

const url = new URL( window.location.href );

url.searchParams.set( 'showAd', Date.now().toString( 16 ) );

window.location.href = 'https://zertalious.xyz?ref=' + new


TextEncoder().encode( url.href ).toString();

} );

You might also like