// ==UserScript==
// @name 🔥ঔৣƗNĐƗȺ»Official Mod for Shell Shockers-Aimbot, ESP and MOAR!🔥
// @namespace https://greasyfork.org/en/scripts/489957-%E0%A6%94%E0%A7%A3%C9%A8n%C4%91%C9%A8%E2%B1%A5-%C5%A7%C5%82%C7%A5%C9%87%C9%BD%E0%A6%94%E0%A7%A3-aimbot-for-shell-shockers/code
// @license GPL-3.0
// @version 1.2.4pre4
// @author onlypuppy7 and🔥ঔৣƗNĐƗȺ»ŦłǤɆⱤঔৣ🔥
// @description Join Our Discord Server! Shell Shockers ESP (Extra Sensory Perception), tracers, and aimbot features. Plz note that the Aimbot,ESp and Tracers are form Libertymutual.
// @match *://algebra.best/*
// @match *://algebra.vip/*
// @match *://biologyclass.club/*
// @match *://deadlyegg.com/*
// @match *://deathegg.world/*
// @match *://eggcombat.com/*
// @match *://egg.dance/*
// @match *://eggfacts.fun/*
// @match *://egghead.institute/*
// @match *://eggisthenewblack.com/*
// @match *://eggsarecool.com/*
// @match *://geometry.best/*
// @match *://geometry.monster/*
// @match *://geometry.pw/*
// @match *://geometry.report/*
// @match *://hardboiled.life/*
// @match *://hardshell.life/*
// @match *://humanorganising.org/*
// @match *://mathdrills.info/*
// @match *://mathfun.rocks/*
// @match *://mathgames.world/*
// @match *://math.international/*
// @match *://mathlete.fun/*
// @match *://mathlete.pro/*
// @match *://overeasy.club/*
// @match *://scrambled.best/*
// @match *://scrambled.tech/*
// @match *://scrambled.today/*
// @match *://scrambled.us/*
// @match *://scrambled.world/*
// @match *://shellshockers.club/*
// @match *://shellshockers.site/*
// @match *://shellshockers.us/*
// @match *://shellshockers.world/*
// @match *://softboiled.club/*
// @match *://violentegg.club/*
// @match *://violentegg.fun/*
// @match *://yolk.best/*
// @match *://yolk.life/*
// @match *://yolk.rocks/*
// @match *://yolk.tech/*
// @match *://shellshock.io/*
// @match *://zygote.cafe/*
// @discord https://discord.gg/qUJSdRJvVV/
// @homepage https://greasyfork.org/en/scripts/492659/
// @greasyfork https://greasyfork.org/en/users/1228152-%E0%A6%94%E0%A7%A3%C9%A8-%E2%86%81%C9%A8%E2%B1%A5%E0%A6%94%E0%A7%A3/
// @grant none
// @run-at document-start
// @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
// @require https://cdn.jsdelivr.net/npm/babylonjs@3.3.0/babylon.min.js
// ==/UserScript==
(function () {
let originalReplace = String.prototype.replace;
String.prototype.originalReplace = function() {
return originalReplace.apply(this, arguments);
};
let enableESP = true;
let enableTracers = true;
let RMB = false;
const originalXHROpen = XMLHttpRequest.prototype.open;
const originalXHRGetResponse = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'response');
let shellshockjs;
XMLHttpRequest.prototype.open = function(...args) {
const url = args[1];
if (url && url.includes("js/shellshock.js")) {
shellshockjs = this;
}
originalXHROpen.apply(this, args);
};
Object.defineProperty(XMLHttpRequest.prototype, 'response', {
get: function() {
if (this === shellshockjs) {
return applyLibertyMutual(originalXHRGetResponse.get.call(this));
}
return originalXHRGetResponse.get.call(this);
}
});
let F = [];
let H = {};
let functionNames = [];
let ESPArray = [];
const getScrambled = function() {
return Array.from({length: 10}, () => String.fromCharCode(97 + Math.floor(Math.random() * 26))).join('');
};
const createAnonFunction = function(name, func) {
const funcName = getScrambled();
window[funcName] = func;
F[name] = window[funcName];
functionNames[name] = funcName;
};
const fetchTextContent = function(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false); // Make the request synchronous
xhr.send();
if (xhr.status === 200) {
return xhr.responseText;
} else {
console.error("Error fetching text content. Status:", xhr.status);
return null;
}
};
const applyLibertyMutual = function(js) {
let hash = CryptoJS.SHA256(js).toString(CryptoJS.enc.Hex);
let clientKeys;
onlineClientKeys = fetchTextContent("https://raw.githubusercontent.com/StateFarmNetwork/client-keys/main/libertymutual_" + hash + ".json");
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! https://discord.gg/HYJG3jXVJF', '');
if (userInput !== null && userInput !== '') {
alert('Aight, let\'s try this. If it is invalid, it will just crash.');
clientKeys = JSON.parse(userInput);
} else {
alert('You did not enter anything, this is gonna crash (LOL).');
}
} else {
clientKeys = JSON.parse(onlineClientKeys);
}
H = clientKeys.vars;
let injectionString = "";
const modifyJS = function(find,replace) {
let oldJS = js;
js = js.originalReplace(find,replace);
if (oldJS !== js) {
console.log("%cReplacement successful! Injected code: "+replace, 'color: green; font-weight: bold; font-size: 0.6em; text-decoration: italic;');
} else {
console.log("%cReplacement failed! Attempted to replace "+find+" with: "+replace, 'color: red; font-weight: bold; font-size: 0.6em; text-decoration: italic;');
}
};
console.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 (variableNameRegex.test(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.");
console.log("REPORT THIS IN THE DISCORD SERVER:", clientKeys);
const crashplease = "balls";
crashplease = "balls2";
}
}
console.log(injectionString);
console.log('%cLIBERTYMUTUAL INJECTION: INJECT VAR RETRIEVAL FUNCTION AND MAIN LOOP', 'color: yellow; font-weight: bold; font-size: 1.2em; text-decoration: underline;');
modifyJS(H.SCENE+'.render',`window["${functionNames.retrieveFunctions}"]({${injectionString}},true)||${H.SCENE}.render`);
console.log('%cSuccess! Variable retrieval and main loop hooked.', 'color: green; font-weight: bold;');
modifyJS(`{if(${H.CULL})`,`{if(true)`);
console.log('%cSuccess! Cull inhibition hooked.', 'color: green; font-weight: bold;');
modifyJS("Not playing in iframe", "LIBERTYMUTUAL ACTIVE!");
console.log(H);
return js;
};
createAnonFunction("retrieveFunctions", function(vars) {
ss = vars;
F.LIBERTYMUTUAL();
});
createAnonFunction("LIBERTYMUTUAL", function() {
ss.PLAYERS.forEach(PLAYER=>{
if (PLAYER.hasOwnProperty("ws")) {
ss.MYPLAYER = PLAYER;
}
});
H.actor = findKeyWithProperty(ss.MYPLAYER,H.mesh);
let TARGETED;
let CROSSHAIRS = new BABYLON.Vector3();
CROSSHAIRS.copyFrom(ss.MYPLAYER[H.actor][H.mesh].position);
const horizontalOffset = Math.sin(ss.MYPLAYER[H.actor][H.mesh].rotation.y);
const verticalOffset = Math.sin(-ss.MYPLAYER[H.pitch]);
CROSSHAIRS.x += horizontalOffset;
CROSSHAIRS.y += verticalOffset + 0.4;
CROSSHAIRS.z += Math.cos(ss.MYPLAYER[H.actor][H.mesh].rotation.y);
const timecode = Date.now();
let minValue = 99999;
ss.PLAYERS.forEach(PLAYER=>{
if (PLAYER) {
PLAYER.timecode = timecode;
if ((PLAYER!==ss.MYPLAYER) && ((ss.MYPLAYER.team==0)||(PLAYER.team!==ss.MYPLAYER.team))) {
if ((!PLAYER.generatedESP)) {
const boxSize = {width: 0.4, height: 0.65, depth: 0.4};
const vertices = [
new BABYLON.Vector3(-boxSize.width / 2, 0, -boxSize.depth / 2),
new BABYLON.Vector3(boxSize.width / 2, 0, -boxSize.depth / 2),
new BABYLON.Vector3(boxSize.width / 2, 0 + boxSize.height, -boxSize.depth / 2),
new BABYLON.Vector3(-boxSize.width / 2, 0 + boxSize.height, -boxSize.depth / 2),
new BABYLON.Vector3(-boxSize.width / 2, 0, boxSize.depth / 2),
new BABYLON.Vector3(boxSize.width / 2, 0, boxSize.depth / 2),
new BABYLON.Vector3(boxSize.width / 2, 0 + boxSize.height, boxSize.depth / 2),
new BABYLON.Vector3(-boxSize.width / 2, 0 + boxSize.height, boxSize.depth / 2),
];
const lines = [];
for (let i = 0; i < 4; i++) {
lines.push([vertices[i], vertices[(i + 1) % 4]]);
lines.push([vertices[i + 4], vertices[(i + 1) % 4 + 4]]);
lines.push([vertices[i], vertices[i + 4]]);
}
const box = BABYLON.MeshBuilder.CreateLineSystem(getScrambled(), { lines }, PLAYER[H.actor].scene);
box.renderingGroupId = 1;
box.parent = PLAYER[H.actor][H.mesh];
const tracers = BABYLON.MeshBuilder.CreateLines('lines', { points: [PLAYER[H.actor][H.mesh].position, CROSSHAIRS] }, PLAYER[H.actor].scene);
tracers.alwaysSelectAsActiveMesh = true;
tracers.renderingGroupId = 1;
PLAYER.box = box;
PLAYER.tracers = tracers;
PLAYER.generatedESP = true;
ESPArray.push([box, tracers, PLAYER]);
}
PLAYER.tracers.setVerticesData(BABYLON.VertexBuffer.PositionKind, [CROSSHAIRS.x, CROSSHAIRS.y, CROSSHAIRS.z, PLAYER[H.actor][H.mesh].position.x, PLAYER[H.actor][H.mesh].position.y, PLAYER[H.actor][H.mesh].position.z]);
PLAYER.box.visibility = enableESP;
PLAYER.tracers.visibility = (PLAYER[H.playing] && enableTracers);
const distance = Math.hypot(PLAYER[H.x]-ss.MYPLAYER[H.x], PLAYER[H.y]-ss.MYPLAYER[H.y], PLAYER[H.z]-ss.MYPLAYER[H.z]);
if (distance < minValue) {
TARGETED = PLAYER;
minValue = distance;
}
}
}
if (RMB && TARGETED && TARGETED[H.playing]) {
const directionVector={
[H.x]: TARGETED[H.x]-ss.MYPLAYER[H.x],
[H.y]: TARGETED[H.y]-ss.MYPLAYER[H.y]-0.05,
[H.z]: TARGETED[H.z]-ss.MYPLAYER[H.z],
};
ss.MYPLAYER[H.yaw]=F.calculateYaw(directionVector);
ss.MYPLAYER[H.pitch]=F.calculatePitch(directionVector);
}
});
for ( let i=0;i<ESPArray.length;i++) {
if (ESPArray[i][2] && ESPArray[i][2].timecode==timecode) {
} else {
ESPArray[i][0].dispose();
ESPArray[i][1].dispose();
ESPArray.splice(i,1);
}
}
});
createAnonFunction("setPrecision", function (value) {
return Math.floor(value * 8192) / 8192;
});
createAnonFunction("calculateYaw", function (pos) {
return F.setPrecision(Math.mod(Math.atan2(pos[H.x],pos[H.z]), Math.PI2));
});
createAnonFunction("calculatePitch", function (pos) {
return F.setPrecision(-Math.atan2(pos[H.y],Math.hypot(pos[H.x],pos[H.z]))%1.5);
});
let guiVisible = true;
let espColor = { r: 255, g: 255, b: 255 };
const findKeyWithProperty = function(obj, propertyToFind) {
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
if (key === propertyToFind) {
return [key];
} else if (
typeof obj[key] === 'object' &&
obj[key] !== null &&
obj[key].hasOwnProperty(propertyToFind)
) {
return key;
}
}
}
return null;
};
const guiHtml = `
<style>
#libertyMutualGui {
position: fixed;
top: 20px;
left: 20px;
background-color: rgba(0, 0, 0, 0.8);
padding: 10px;
border: 4px solid black;
border-radius: 5px;
z-index: 9999;
font-family: 'Agency FB', sans-serif;
font-style: italic;
font-weight: bold;
font-size: 10px;
}
#libertyMutualGui input[type="range"] {
width: 100px;
margin-bottom: 5px;
}
#toggleGuiButton {
margin-top: 5px;
padding: 5px;
cursor: pointer;
input[type="range"] {
background: linear-gradient(to right, red 0%, red 100%);
}
</style>
<div id="libertyMutualGui" style="font-family: 'Agency FB', sans-serif; padding: 14px; border: 2px solid red; border-radius: 5px; position: fixed; top: 20px; left: 20px; z-index: 9999;">
<div>
<h3 style="color: #FF0000; font-family: 'Agency FB', sans-serif; font-style: italic; font-weight: bold; text-align: center;">Settings</h3>
<input type="checkbox" id="espCheckbox" checked> <span style="color: red;">ESP</span> [V]<br>
<input type="checkbox" id="tracersCheckbox" checked> <span style="color: red;">TRACERS</span> [N]<br>
<input type="checkbox" id="rmbCheckbox"> <span style="color: red;">Aimbot</span>[C]<br>
<input type="checkbox" id="toggleAllCheckbox"> <span style="color: red;">God Mode</span><br>
<input type="checkbox" id="visualUtilsOnly"> <span style="color: red;">Visual Utlities Only</span><br>
<br>
<div>
<input type="range" id="redSlider" min="0" max="255" value="255">
<input type="number" id="redValue" min="0" max="255" value="255">
<span style="color: red;">ESP RED</span>
<br>
<input type="range" id="greenSlider" min="0" max="255" value="255">
<input type="number" id="greenValue" min="0" max="255" value="255">
<span style="color: red;">ESP GREEN</span>
<br>
<input type="range" id="blueSlider" min="0" max="255" value="255">
<input type="number" id="blueValue" min="0" max="255" value="255">
<span style="color: red;">ESP BLUE</span>
<br>
<br>
<input type="range" id="espRedSlider" min="0" max="255" value="255">
<input type="number" id="espRedValue" min="0" max="255" value="255">
<span style="color: red;">TRACERS RED</span>
<br>
<input type="range" id="espGreenSlider" min="0" max="255" value="255">
<input type="number" id="espGreenValue" min="0" max="255" value="255">
<span style="color: red;">TRACERS GREEN</span>
<br>
<input type="range" id="espBlueSlider" min="0" max="255" value="255">
<input type="number" id="espBlueValue" min="0" max="255" value="255">
<span style="color: red;">TRACERS BLUE</span>
</div>
<!-- Aimbot Settings -->
<h3>Aimbot Settings</h3>
<label for="aimbotSensitivity">Aimbot Sensitivity:</label>
<input type="range" id="aimbotSensitivity" min="1" max="10" value="5">
<span id="aimbotSensitivityValue">5</span><br>
<label for="aimbotFOV">Aimbot FOV:</label>
<input type="range" id="aimbotFOV" min="1" max="100" value="50">
<span id="aimbotFOVValue">50</span><br>
<div>
<h3>Links</h3>
<div>
<a href="https://greasyfork.org/en/users/1228152-%E0%A6%94%E0%A7%A3%C9%A8n%C4%91%C9%A8%E2%B1%A5%E0%A6%94%E0%A7%A3">Author's Page</a>
<div>
<a href="https://greasyfork.org/en/scripts/492659">Homepage</a>
</div>
<a href="https://discord.gg/qUJSdRJvVV">Discord</a>
</div>
<a href="https://github.com/Indian81/India-Shell-Shockers-Mod--Aimbot-ESP-and-MOAR-">Github</a>
</div>
<button id="toggleGuiButton">Toggle GUI (H)</button>
</div>
`;
document.body.insertAdjacentHTML('beforeend', guiHtml);
let espLineColor = { r: 255, g: 255, b: 255 };
function updateESPLineColor() {
for (let i = 0; i < ESPArray.length; i++) {
const tracers = ESPArray[i][1];
if (tracers) {
tracers.color.r = espLineColor.r / 255;
tracers.color.g = espLineColor.g / 255;
tracers.color.b = espLineColor.b / 255;
}
}
}
// Modernized game settings object using ES6 class syntax
class GameSettings {
constructor() {
this._aimbotSensitivity = 5; // Default sensitivity
this._aimbotFOV = 50; // Default FOV
}
// Getter for aimbot sensitivity
get aimbotSensitivity() {
return this._aimbotSensitivity;
}
// Setter for aimbot sensitivity
set aimbotSensitivity(sensitivity) {
this._aimbotSensitivity = sensitivity;
console.log(`Aimbot sensitivity updated to: ${sensitivity}`);
// Add logic to apply sensitivity in your game
}
// Getter for aimbot FOV
get aimbotFOV() {
return this._aimbotFOV;
}
// Setter for aimbot FOV
set aimbotFOV(fov) {
this._aimbotFOV = fov;
console.log(`Aimbot FOV updated to: ${fov}`);
// Add logic to apply FOV in your game
}
}
// Create an instance of GameSettings
const gameSettings = new GameSettings();
// Function to update sensitivity settings in your game
const updateAimbotSensitivity = sensitivity => {
gameSettings.aimbotSensitivity = sensitivity;
};
// Function to update FOV settings in your game
const updateAimbotFOV = fov => {
gameSettings.aimbotFOV = fov;
};
// Event listeners for existing checkboxes and sliders
document.getElementById('espCheckbox').addEventListener('change', function() {
espEnabled = this.checked;
displayWatermark(`ESP ${enableESP ? "Enabled" : "Disabled"}`);
});
document.getElementById('tracersCheckbox').addEventListener('change', function() {
tracersEnabled = this.checked;
displayWatermark(`Tracers ${enableTracers ? "Enabled" : "Disabled"}`);
});
document.getElementById('rmbCheckbox').addEventListener('change', function() {
rmbAimbot = this.checked;
displayWatermark(`Aimbot ${RMB ? "Enabled" : "Disabled"}`);
});
// Event listener for the "Toggle All" checkbox
document.getElementById('toggleAllCheckbox').addEventListener('change', function() {
const isChecked = this.checked;
document.getElementById('espCheckbox').checked = isChecked;
document.getElementById('tracersCheckbox').checked = isChecked;
document.getElementById('rmbCheckbox').checked = isChecked;
// Additional checkboxes can be added here if needed
// Trigger change events manually to ensure associated functionality updates
document.getElementById('espCheckbox').dispatchEvent(new Event('change'));
document.getElementById('tracersCheckbox').dispatchEvent(new Event('change'));
document.getElementById('rmbCheckbox').dispatchEvent(new Event('change'));
// Additional checkboxes' change events can be triggered here if needed
});
document.getElementById('visualUtilsOnly').addEventListener('change', function() {
const isChecked = this.checked;
document.getElementById('espCheckbox').checked = isChecked;
document.getElementById('tracersCheckbox').checked = isChecked;
document.getElementById('espCheckbox').dispatchEvent(new Event('change'));
document.getElementById('tracersCheckbox').dispatchEvent(new Event('change'));
});
document.getElementById('redSlider').addEventListener('input', function() {
espColor.r = parseInt(this.value);
document.getElementById('redValue').value = this.value;
updateESPColor();
});
document.getElementById('greenSlider').addEventListener('input', function() {
espColor.g = parseInt(this.value);
document.getElementById('greenValue').value = this.value;
updateESPColor();
});
document.getElementById('blueSlider').addEventListener('input', function() {
espColor.b = parseInt(this.value);
document.getElementById('blueValue').value = this.value;
updateESPColor();
});
document.getElementById('espRedSlider').addEventListener('input', function() {
espLineColor.r = parseInt(this.value);
document.getElementById('espRedValue').value = this.value;
updateESPLineColor();
});
document.getElementById('espGreenSlider').addEventListener('input', function() {
espLineColor.g = parseInt(this.value);
document.getElementById('espGreenValue').value = this.value;
updateESPLineColor();
});
document.getElementById('espBlueSlider').addEventListener('input', function() {
espLineColor.b = parseInt(this.value);
document.getElementById('espBlueValue').value = this.value;
updateESPLineColor();
});
document.getElementById('redValue').addEventListener('input', function() {
espColor.r = parseInt(this.value);
document.getElementById('redSlider').value = this.value;
updateESPColor();
});
document.getElementById('greenValue').addEventListener('input', function() {
espColor.g = parseInt(this.value);
document.getElementById('greenSlider').value = this.value;
updateESPColor();
});
document.getElementById('blueValue').addEventListener('input', function() {
espColor.b = parseInt(this.value);
document.getElementById('blueSlider').value = this.value;
updateESPColor();
});
document.getElementById('espRedValue').addEventListener('input', function() {
espLineColor.r = parseInt(this.value);
document.getElementById('espRedSlider').value = this.value;
updateESPLineColor();
});
document.getElementById('espGreenValue').addEventListener('input', function() {
espLineColor.g = parseInt(this.value);
document.getElementById('espGreenSlider').value = this.value;
updateESPLineColor();
});
document.getElementById('espBlueValue').addEventListener('input', function() {
espLineColor.b = parseInt(this.value);
document.getElementById('espBlueSlider').value = this.value;
updateESPLineColor();
});
document.getElementById('toggleGuiButton').addEventListener('click', function() {
guiVisible = !guiVisible;
document.getElementById('libertyMutualGui').style.display = guiVisible ? 'block' : 'none';
const watermark = document.getElementById('watermark');
if (guiVisible) {
watermark.textContent = "TOGGLED GUI";
watermark.style.display = 'block'; // Show watermark
} else {
watermark.style.display = 'none'; // Hide watermark
}
});
// Event listeners for the new aimbot settings sliders
document.getElementById('aimbotSensitivity').addEventListener('input', function() {
const sensitivity = parseInt(this.value);
updateAimbotSensitivity(sensitivity);
});
document.getElementById('aimbotFOV').addEventListener('input', function() {
const fov = parseInt(this.value);
updateAimbotFOV(fov);
});
const toggleGuiButton = document.getElementById('toggleGuiButton');
toggleGuiButton.addEventListener('click', function() {
guiVisible = !guiVisible;
document.getElementById('libertyMutualGui').style.display = guiVisible ? 'block' : 'none';
});
document.addEventListener('keydown', function(event) {
if (event.key === 'h' || event.key === 'H') {
guiVisible = !guiVisible;
document.getElementById('libertyMutualGui').style.display = guiVisible ? 'block' : 'none';
displayWatermark('Toggled Panel');
}
if (event.key === 'v' || event.key === 'V') {
enableESP = !enableESP;
displayWatermark(`ESP ${enableESP ? "!Enabled!" : "!Disabled!"}`);
console.log("ESP is now:", enableESP ? "enabled" : "disabled");
espCheckbox.checked = enableESP;
}
if (event.key === 'n' || event.key === 'N') {
enableTracers = !enableTracers;
displayWatermark(`ESP Lines ${enableTracers ? "!Enabled!" : "!Disabled!"}`);
console.log("ESP lines are now:", enableTracers ? "enabled" : "disabled");
tracersCheckbox.checked = enableTracers;
}
if (event.key === 'c' || event.key === 'C') {
RMB = !RMB;
displayWatermark(` Aimbot ${RMB ? "Enabled" : "Disabled"}`);
console.log(" (Aimbot) is now:", RMB ? "enabled" : "disabled");
rmbCheckbox.checked = RMB;
}
function displayWatermark(text) {
const watermark = document.createElement('div');
watermark.textContent = text;
watermark.style.position = 'fixed';
watermark.style.bottom = '10px';
watermark.style.left = '10px';
watermark.style.padding = '5px 10px';
watermark.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
watermark.style.color = 'red';
watermark.style.borderRadius = '3px';
watermark.style.zIndex = '9999';
watermark.style.fontFamily = 'Agency FB, italic, sans-serif';
watermark.style.fontSize = '18px';
watermark.style.fontWeight = 'bold';
watermark.style.textTransform = 'uppercase';
watermark.style.transition = 'transform 1s linear, left 1s ease-in-out';
watermark.style.border = '2px solid #ff0000'; // Red border, 2px width
document.body.appendChild(watermark);
void watermark.offsetWidth;
setTimeout(function() {
watermark.style.opacity = '0';
setTimeout(function() {
watermark.remove();
}, 2000);
}, 2000);
}
});
function updateESPColor() {
for (let i = 0; i < ESPArray.length; i++) {
const box = ESPArray[i][0];
if (box) {
box.color.r = espColor.r / 255;
box.color.g = espColor.g / 255;
box.color.b = espColor.b / 255;
}
}
}
})();