0% found this document useful (0 votes)
25 views24 pages

This document describes a userscript for the game Shell Shockers, providing features like a basic aimbot and ESP (Extra Sensory Perception) functionality. The script includes code for modifying game behavior, logging events, and managing mouse interactions. It also incorporates external libraries and allows for customization through user input, while addressing issues with ad-injecting scripts.

Uploaded by

2021175071
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views24 pages

This document describes a userscript for the game Shell Shockers, providing features like a basic aimbot and ESP (Extra Sensory Perception) functionality. The script includes code for modifying game behavior, logging events, and managing mouse interactions. It also incorporates external libraries and allows for customization through user input, while addressing issues with ad-injecting scripts.

Uploaded by

2021175071
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

// ==UserScript==

// @name Shell Shockers Basic Aimbot + ESP: LibertyMutualV1

// @namespace
[Link]

// @license GPL-3.0

// @version 1.4.2

// @author onlypuppy7

// @description UPDATED FOR 0.50.0! Fed up of a popular script injecting


ads into your game? Need a simple script to modify or use? FOSS ESP,
Tracers and Aimbot. Hold right mouse button to aimlock.

// @match [Link]

// @grant unsafeWindows

// @run-at document-start

// @icon
[Link]
[Link]?raw=true

// @require [Link]
[Link]

// @require
[Link]

// @downloadURL [Link]
%20Shockers%20Basic%20Aimbot%20%2B%20ESP%3A
%[Link]

// @updateURL [Link]
%20Shockers%20Basic%20Aimbot%20%2B%20ESP%3A
%[Link]

// ==/UserScript==

//Usage: Hold right mouse button to aimlock

//This script is more of a template than a functioning tool. If you're


modifying this, you can add a GUI to start!

(function () {

//intercept log

const oldConsoleLog = [Link];

const log = function(...args) {

const argsNew = [

"%c%s",

`color: red; font-weight: bold; background:rgb(212, 212, 0);


padding: 2px 6px; border-radius: 5px; margin-right: 5px;`,

`LM`,

...args

];

[Link](console, argsNew);

};

//create random number betwee 1 and 999

const randomInt = (min, max) => [Link]([Link]() * (max -


min + 1)) + min;

let randomDebugKey = `debug${randomInt(9,999)}`;

log("LM started??", randomDebugKey);

// crackedshell is a script executor for chromebooks

let crackedShell = typeof $WEBSOCKET !== 'undefined';

let originalReplace = [Link];

[Link] = function() {
return [Link](this, arguments);

};

const enableESP=true; //turn to false for off

const enableTracers=true; //turn to false for off

//Credit for script injection code: AI. ChatGPT prompt: "tampermonkey


script. how can i make it grab a javascript file as it's loaded. if it detects
the javascript file, make it apply modifications to it via regex? using
XMLHttpRequest"

//Credit for idea to use XMLHttpRequest: A3+++

const useXHRMethod = false;

if (useXHRMethod) {

const originalXHROpen = [Link];

const originalXHRGetResponse =
[Link]([Link], 'response');

let shellshockjs

[Link] = function(...args) {

const url = args[1];

if (url && [Link]("js/[Link]")) {

shellshockjs = this;

};

[Link](this, args);

};

[Link]([Link], 'response', {

get: function() {

if (this===shellshockjs) {
return
applyLibertyMutual([Link](this));

};

return [Link](this);

});

};

let _apc = [Link];

let shellshock_og = null;

[Link] = function(node) {

if ([Link] === 'SCRIPT' && [Link] &&


[Link]('(()=>{')) {

shellshock_og = [Link];

log("shellshock_og set");

[Link] = applyLibertyMutual([Link]);

};

return _apc.call(this, node);

};

const proto = [Link];

const existing = [Link](proto,


"textContent");

const original = existing ||


[Link]([Link],
"textContent");
[Link](proto, "textContent", {

get: function () {

let textContent = [Link](this);

if (textContent && [Link]('(()=>{')) {

log("returning shellshock_og");

return shellshock_og;

} else {

return textContent;

};

},

set: [Link],

configurable: true,

enumerable: true

});

//Credit for event listener code: AI. ChatGPT prompt: "tampermonkey


script. how can i intercept the addEventListener function and log the type
of event, listener, and options?"

const originalAddEventListener =
[Link];

// const eventCache = [];

// unsafeWindow.__eventListenerCache = eventCache;

[Link] = function (type, listener,


options) {

try {

const target = this;


const tag = [Link] || [Link];

// [Link]({ target: tag, type, listener, options });

// log(`Listener added: [${tag}] type=${type}, listener=$


{[Link] || 'anonymous'}, options=${[Link](options)}`);

if (type == "pointermove" && [Link] == "real") {

[Link] = listener;

log("Gotcha. REAL pointermove listener detected.");

const originalListener = listener;

listener = function(event) {

[Link](event, originalListener);

};

};

} catch (e) {

[Link]('Event hook error:', e);

};

return [Link](this, type, listener, options);

};

const yawpitch = {

magicValue: 0.0025, // multiplier for mouse movement

listener: null,

movementsToApply: {
x: 0,

y: 0,

reset: () => {

[Link].x = 0;

[Link].y = 0;

},

},

listenerHook: (event, originalListener) => {

//this is a mess of many failed ideas and i could clean this, but i
feel it might be useful in the future

// const deltaX = [Link].x;

// const deltaY = [Link].y;

// const proxyEvent = new Proxy(event, {

// get(target, prop) {

// if (prop === 'movementX') return [Link] +


deltaX;

// if (prop === 'movementY') return [Link] +


deltaY;

// if (prop === 'isTrusted') return true;

// return [Link](target, prop);

// },

// });

// [Link]("YawPitch listener hook called with event:", event);

[Link](this, event);
//uncomment for thing

// const proxyEvent = {

// movementX: [Link] +
[Link].x,

// movementY: [Link] +
[Link].y,

// isTrusted: true,

// };

// // log("x:", [Link], "y:", [Link],


"mX:", [Link].x, "mY:",
[Link].y);

// [Link]();

// // [Link]("YawPitch listener hook called with event:", event);

// [Link](this, {

// movementX: [Link],

// movementY: [Link],

// isTrusted: true

// });

},

// fakeMovePointer: (force = false) => {

// if (!force && !([Link].x ||


[Link].y)) {

// return;

// };

// const event = new PointerEvent('pointermove');


// [Link](event, [Link]);

// },

movePointer: (movementX = 0, movementY = 0) => {

[Link]();

movementX = [Link](movementX);

movementY = [Link](movementY);

[Link]({ //direct call will bypass the hook

movementX,

movementY,

x: 1,

isTrusted: true,

});

[Link]();

},

getAndSetYawPitch: (viaWasm = true) => {

if (viaWasm) {

const result = unsafeWindow.get_yaw_pitch();

[Link][[Link]] = [Link];

[Link][[Link]] = [Link];

[Link][[Link]] = [Link];

return result;

} else {

return {

yaw: [Link][[Link]],
pitch: [Link][[Link]],

coords: [Link][[Link]]

};

};

},

setMouseParams: (mouseSpeed = 50, mouseInvert = 0, scopeFov =


0.9, scope = false, uniqueId = [Link][[Link]]) => {

unsafeWindow.set_mouse_params(

mouseSpeed,

mouseInvert,

scopeFov, //[Link][[Link]][[Link]].scopeFov

scope, //[Link]

uniqueId

);

},

changeByMovement: (x = 0, y = 0) => {

[Link]();

log("Changing yaw and pitch by movement:", x, y);

[Link](x, y);

// [Link].x = x;

// [Link].y = y;

// [Link]();

},

changeByYawPitchDiff: (yaw = 0, pitch = 0) => {


[Link](

yaw / [Link],

pitch / [Link]

);

},

radianAngleDiff: (angle1 = 0, angle2 = 0) => {

const fullCircle = 2 * [Link];

// Normalize angles to be within [0, 2π]

angle1 = (angle1 % fullCircle + fullCircle) % fullCircle;

angle2 = (angle2 % fullCircle + fullCircle) % fullCircle;

// Find the absolute angular difference

let diff = [Link](angle1 - angle2);

// Ensure the difference is within [0, π)

diff = [Link](diff, fullCircle - diff);

// Determine the sign of the difference correctly

if ((angle1 - angle2 + fullCircle) % fullCircle > [Link]) {

return -diff;

} else {

return diff;

};

},

setToYawPitch: (yaw = 0, pitch = 0) => {

const yawDiff = [Link]([Link][[Link]],


yaw);

const pitchDiff = [Link]([Link][[Link]],


pitch);
// log("Setting yaw and pitch:", yaw, pitch, "Diffs:", yawDiff,
pitchDiff);

[Link](yawDiff, pitchDiff);

},

getCoordsForYawPitch: (yaw = 0, pitch = 0) => { //useful for silent

const starting = [Link](false);

[Link](yaw, pitch);

const atDesired = [Link](false);

[Link]([Link], [Link]);

//for testing

// const ending = [Link](false);

// [Link]("Starting:", starting, "At desired:", atDesired,


"Ending:", ending);

return atDesired;

},

};

//VAR STUFF

let F=[];

let H={};

let functionNames=[];

let ESPArray=[];

let RMB=false;
//Credit: AI. ChatGPT prompt: "make javascript tampermonkey code
that sets a variable RMB to true while right mouse button is being held"

[Link]('mousedown', function(event) {

if ([Link] === 2) {

RMB = false;

};

}, true);

[Link]('mouseup', function(event) {

if ([Link] === 2) {

RMB = true;

};

}, true);

//scrambled... geddit????

const getScrambled=function(){return [Link]({length: 10}, () =>


[Link](97 + [Link]([Link]() * 26))).join('')}

const createAnonFunction=function(name,func){

const funcName=getScrambled();

unsafeWindow[funcName]=func;

F[name]=unsafeWindow[funcName];

functionNames[name]=funcName;

log(`Created function ${name} as ${funcName}`, func,


unsafeWindow[funcName], F[name], functionNames[name]);

};

const findKeyWithProperty = function(obj, propertyToFind) {

for (const key in obj) {


if ([Link](key)) {

if (key === propertyToFind) {

return [key];

} else if (

typeof obj[key] === 'object' &&

obj[key] !== null &&

obj[key].hasOwnProperty(propertyToFind)

){

return key;

};

};

};

// Property not found

return null;

};

const fetchTextContent = function(url) {

var xhr = new XMLHttpRequest();

[Link]('GET', url, false); // Make the request synchronous

[Link]();

if ([Link] === 200) {

return [Link];

} else {

[Link]("Error fetching text content. Status:", [Link]);

return null;

};

};
const applyLibertyMutual = function(js) {

// support crackedshell's harsh rewriting system

// more info @ [Link]

let clientKeyJS = js;

// if (crackedShell) clientKeyJS =
fetchTextContent('/js/[Link]');

// let hash =
CryptoJS.SHA256(clientKeyJS).toString([Link]);

let clientKeys;

onlineClientKeys =
fetchTextContent("[Link]
client-keys/main/libertymutual_latest.json"); //credit: me :D

// onlineClientKeys =
fetchTextContent("[Link]
client-keys/main/libertymutual_"+hash+".json"); //credit: me :D

if (onlineClientKeys == "value_undefined" || onlineClientKeys ==


null) {

let userInput = prompt('Valid keys could not be retrieved online.


Enter keys if you have them. Join the StateFarm Network Discord server to
generate keys! [Link] '');

if (userInput !== null && userInput !== '') {

alert('Aight, let\'s try this. If it is invalid, it will just crash.');

clientKeys = [Link](userInput);

} else {

alert('You did not enter anything, this is gonna crash lmao.');

};

} else {
clientKeys = [Link](onlineClientKeys);

};

H = [Link];

let injectionString="";

const modifyJS = function(find,replace) {

let oldJS = js;

js = [Link](find,replace);

if (oldJS !== js) {

log("%cReplacement successful! Injected code: "+replace,


'color: green; font-weight: bold; font-size: 0.6em; text-decoration: italic;');

} else {

log("%cReplacement failed! Attempted to replace "+find+" with:


"+replace, 'color: red; font-weight: bold; font-size: 0.6em; text-decoration:
italic;');

};

};

log('%cATTEMPTING TO START LIBERTYMUTUAL', 'color: magenta;


font-weight: bold; font-size: 1.5em; text-decoration: underline;');

const variableNameRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;

for (let name in H) {

deobf = H[name];

if ([Link](deobf)) {

injectionString = `${injectionString}${name}: (() => { try


{ return ${deobf}; } catch (error) { return "value_undefined"; } })(),`;
} else {

alert("Message from the LibertyMutual Devs: WARNING! The


keys inputted contain non-variable characters! There is a possibility that
this could run code unintended by the LibertyMutual team, although
possibly there is also a mistake. Do NOT proceed with using this, and
report to the LibertyMutual developers what is printed in the console.");

log("REPORT THIS IN THE DISCORD SERVER:", clientKeys);

const crashplease = "balls";

crashplease = "balls2";

};

};

log(injectionString);

log('%cLIBERTYMUTUAL INJECTION: INJECT VAR RETRIEVAL FUNCTION


AND MAIN LOOP', 'color: yellow; font-weight: bold; font-size: 1.2em; text-
decoration: underline;');

modifyJS([Link]+'.render',`window["$
{[Link]}"]({${injectionString}},true)||$
{[Link]}.render`);

log('%cSuccess! Variable retrieval and main loop hooked.', 'color:


green; font-weight: bold;');

modifyJS(`{if(${[Link]})`,`{if(true)`);

log('%cSuccess! Cull inhibition hooked.', 'color: green; font-weight:


bold;');

modifyJS("Not playing in iframe", "LIBERTYMUTUAL ACTIVE!");

// log(js);

log(H);

return js;

};

let ss = {}; //skvll this wasnt here so it was global skvll


createAnonFunction("retrieveFunctions",function(vars) {

[Link](ss, vars);

[Link]();

});

const tracersKey = getScrambled();

const createOrUpdateTracer = (PLAYER, CROSSHAIRS) => {

const points = [

PLAYER[[Link]][[Link]].[Link](),

[Link]()

];

points[0].y += 0.4;

if (!PLAYER[tracersKey]) {

PLAYER[tracersKey] =
[Link](getScrambled(), { points, updatable:
true }, [Link]);

PLAYER[tracersKey].isPickable = false;

PLAYER[tracersKey].alwaysSelectAsActiveMesh = true;

PLAYER[tracersKey].doNotSyncBoundingInfo = true;

PLAYER[tracersKey][[Link]] = 1;

PLAYER[tracersKey].visibility = true;

} else {

[Link](undefined, {

points,

instance: PLAYER[tracersKey],
updatable: true

});

};

PLAYER[tracersKey].visibility = (PLAYER[[Link]] &&


enableTracers);

return PLAYER[tracersKey];

};

createAnonFunction("LIBERTYMUTUAL",function() {

// globalSS = ss;

[Link](PLAYER=>{

if ([Link]("ws")) {

[Link] = PLAYER

};

});

[Link] = findKeyWithProperty([Link],[Link]);

let TARGETED;

let CROSSHAIRS=new BABYLON.Vector3();

[Link]([Link][[Link]][[Link]].position);

// eye level

CROSSHAIRS.y += 0.4;

const forwardOffset = -5;


const yaw = [Link][[Link]];

const pitch = -[Link][[Link]];

const forwardX = [Link](yaw) * [Link](pitch);

const forwardY = [Link](pitch);

const forwardZ = [Link](yaw) * [Link](pitch);

CROSSHAIRS.x += forwardX * forwardOffset;

CROSSHAIRS.y += forwardY * forwardOffset;

CROSSHAIRS.z += forwardZ * forwardOffset;

const timecode=[Link]();

let minValue=99999;

[Link](PLAYER=>{

if (PLAYER) {

[Link]=timecode;

//Partial credit for enemy player filtering: PacyTense. Also just


common sense.

if ((PLAYER!==[Link]) && (([Link]==0)||


([Link]!==[Link]))) {

//ESP CODE

if ((![Link])) {

//Credit for box from lines code: AI. ChatGPT prompt: "how
can i create a box out of lines in [Link]?"

//ESP BOXES

const boxSize = {width: 0.4, height: 0.65, depth: 0.4};

const vertices = [

new BABYLON.Vector3(-[Link] / 2, 0, -
[Link] / 2),

new BABYLON.Vector3([Link] / 2, 0, -
[Link] / 2),

new BABYLON.Vector3([Link] / 2, 0 +
[Link], -[Link] / 2),

new BABYLON.Vector3(-[Link] / 2, 0 +
[Link], -[Link] / 2),

new BABYLON.Vector3(-[Link] / 2, 0,
[Link] / 2),

new BABYLON.Vector3([Link] / 2, 0,
[Link] / 2),

new BABYLON.Vector3([Link] / 2, 0 +
[Link], [Link] / 2),

new BABYLON.Vector3(-[Link] / 2, 0 +
[Link], [Link] / 2),

];

const lines = [];

for (let i = 0; i < 4; i++) {

[Link]([vertices[i], vertices[(i + 1) % 4]]);

[Link]([vertices[i + 4], vertices[(i + 1) % 4 + 4]]);

[Link]([vertices[i], vertices[i + 4]]);

};

const box =
[Link](getScrambled(), { lines },
[Link]);

//ChatGPT prompt: "how can i make an object anchored to


another object, change its color, and have it render on top of everything
else? [Link]"

[Link] = new BABYLON.Color3(1, 1, 1);

box[[Link]] = 1;

[Link]=PLAYER[[Link]][[Link]];
[Link]=box;

[Link]=true;

[Link]([box,createOrUpdateTracer(PLAYER,
CROSSHAIRS),PLAYER]);

};

createOrUpdateTracer(PLAYER, CROSSHAIRS);

[Link]=enableESP;

PLAYER[tracersKey].visibility=(PLAYER[[Link]]&&enableTracers);

//AIMBOT CODE

//Credit: This section is mostly common sense, and could be


made by most decent programmers. It is still worth mentioning PacyTense
used a functionally equivalent thing similar to this this before me 4 years
ago.

const distance=[Link](PLAYER[H.x]-[Link][H.x],
PLAYER[H.y]-[Link][H.y], PLAYER[H.z]-[Link][H.z]);

if (distance<minValue) {

TARGETED=PLAYER;

minValue=distance;

};

};

};

});

//im gonna kms why was this in the player loop

if (RMB && TARGETED && TARGETED[[Link]]) {


//3D maths

const directionVector={

[H.x]: -(TARGETED[H.x]-[Link][H.x]),

[H.y]: -(TARGETED[H.y]-[Link][H.y]-0.05),

[H.z]: -(TARGETED[H.z]-[Link][H.z]),

};

// [Link]("Direction vector:", directionVector, "Yaw:",


[Link](directionVector), "Pitch:", [Link](directionVector));

[Link](

[Link](directionVector),

[Link](directionVector)

);

// [Link][[Link]]=[Link](directionVector);

// [Link][[Link]]=[Link](directionVector);

};

for ( let i=0;i<[Link];i++) {

if (ESPArray[i][2] && ESPArray[i][2].timecode==timecode) { //still


exists

} else {

//Credit for info: AI. ChatGPT prompt: "how can i delete an object
in [Link]?"

ESPArray[i][0].dispose();

ESPArray[i][1].dispose();

[Link](i,1);

};

};

if (unsafeWindow[randomDebugKey]) {
[Link] = {

ss, F, H, functionNames, cross: {

CROSSHAIRS, yaw, pitch

}, BABYLON, TARGETED, ESPArray, RMB, timecode,


createOrUpdateTracer, tracersKey, yawpitch

};

};

// log("Main loop executed.");

});

createAnonFunction("setPrecision",function (value) { return


[Link](value * 8192) / 8192 }); //required precision

createAnonFunction("calculateYaw",function (pos) {

return [Link]([Link](Math.atan2(pos[H.x],pos[H.z]),
Math.PI2));

});

createAnonFunction("calculatePitch",function (pos) {

return [Link](-
Math.atan2(pos[H.y],[Link](pos[H.x],pos[H.z]))%1.5);

});

})();

You might also like