survev.io auto hack

try to take over the world!

Автор
edmond ouyang
Установок в день
18
Всего установок
631
Оценки
0 0 1
Версия
2024-12-20
Создан
13.12.2024
Обновлён
20.12.2024
Размер
7,0 КБ
Лицензия
Недоступно
Работает на

// ==UserScript==
// @name Surviv.IO Aimbot, ESP & X-Ray
// @namespace https://greasyfork.org/en/users/662330-zertalious
// @version 0.0.7
// @description Aimbot and ESP for surviv.io. Locks the aim to the nearest player and shows lines between nearby players. Removes ceilings from buildings and let's you see inside them too.
// @author Zertalious (Zert)
// @match *://survev.io/*
// @match *://surviv2.io/*
// @match *://2dbattleroyale.com/*
// @match *://2dbattleroyale.org/*
// @match *://piearesquared.info/*
// @match *://thecircleisclosing.com/*
// @match *://archimedesofsyracuse.info/*
// @match *://secantsecant.com/*
// @match *://parmainitiative.com/*
// @match *://nevelskoygroup.com/*
// @match *://kugahi.com/*
// @match *://chandlertallowmd.com/*
// @match *://ot38.club/*
// @match *://kugaheavyindustry.com/*
// @match *://drchandlertallow.com/*
// @match *://rarepotato.com/*
// @icon https://www.google.com/s2/favicons?domain=surviv.io
// @grant none
// @run-at document-start
// @antifeature ads
// ==/UserScript==

let espEnabled = true;
let aimbotEnabled = true;
let xrayEnabled = true;

Object.defineProperty( Object.prototype, 'textureCacheIds', {
set( value ) {

this._textureCacheIds = value;

if ( Array.isArray( value ) ) {

const scope = this;

value.push = new Proxy( value.push, {
apply( target, thisArgs, args ) {

if ( args[ 0 ].indexOf( 'ceiling' ) > - 1 ) {

Object.defineProperty( scope, 'valid', {
set( value ) {

this._valid = value;

},
get() {

return xrayEnabled ? false : this._valid;

}
} );

}

return Reflect.apply( ...arguments );

}
} );

}

},
get() {

return this._textureCacheIds;

}
} );

const params = {
get() {

console.log( 'getting ctx', this );

return null;

}
};

Object.defineProperty( window, 'WebGLRenderingContext', params );
Object.defineProperty( window, 'WebGL2RenderingContext', params );

let ctx;

HTMLCanvasElement.prototype.getContext = new Proxy( HTMLCanvasElement.prototype.getContext, {
apply( target, thisArgs, args ) {

const result = Reflect.apply( ...arguments );

if ( thisArgs.parentNode ) {

ctx = result;

}

return result;

}
} );

const players = [];

let radius;

let mouseX = 0, mouseY = 0;

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

if ( event.dispatchedByMe !== true ) {

mouseX = event.clientX;
mouseY = event.clientY;

}

} );

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

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

case 'N' : espEnabled = ! espEnabled; break;
case 'B' : aimbotEnabled = ! aimbotEnabled; break;
case 'H' : xrayEnabled = ! xrayEnabled; break;

}

} );

const Context2D = CanvasRenderingContext2D.prototype;

Context2D.drawImage = new Proxy( Context2D.drawImage, {
apply( target, thisArgs, args ) {

if ( aimbotEnabled && args[ 0 ].src && args[ 0 ].src.indexOf( 'loadout' ) > - 1 && args[ 8 ] === 142 ) {

const { a, b, e, f } = thisArgs.getTransform();

radius = Math.hypot( a, b ) * args[ 8 ] + 10;

const centerX = thisArgs.canvas.width / 2;
const centerY = thisArgs.canvas.height / 2;

if ( e !== centerX && f !== centerY ) {

players.push( { x: e, y: f } );

}

}

return Reflect.apply( ...arguments );

}
} );

window.requestAnimationFrame = new Proxy( window.requestAnimationFrame, {
apply( target, thisArgs, args ) {

args[ 0 ] = new Proxy( args[ 0 ], {
apply( target, thisArgs, args ) {

players.length = 0;

Reflect.apply( ...arguments );

ctx.fillStyle = '#fff';

const array = [
[ '[B] Aimbot', aimbotEnabled ],
[ '[N] ESP', espEnabled ],
[ '[H] X-Ray', xrayEnabled ]
];

const fontSize = 20;

ctx.textAlign = 'center';
ctx.textBaseline = 'top';

ctx.font = 'bolder ' + fontSize + 'px monospace';

for ( let i = 0; i < array.length; i ++ ) {

const [ text, status ] = array[ i ];

ctx.globalAlpha = status ? 1 : 0.5;

ctx.fillText( text + ': ' + ( status ? 'ON' : 'OFF' ), ctx.canvas.width / 2, 10 + i * fontSize );

}

ctx.globalAlpha = 1;

if ( players.length === 0 ) {

return;

}

ctx.lineWidth = 5;
ctx.strokeStyle = 'red';

if ( espEnabled ) {

const centerX = ctx.canvas.width / 2;
const centerY = ctx.canvas.height / 2;

ctx.beginPath();

for ( let i = 0; i < players.length; i ++ ) {

const player = players[ i ];

ctx.moveTo( centerX, centerY );

ctx.lineTo( player.x, player.y );

}

ctx.stroke();

}

if ( aimbotEnabled ) {

let minDistance = Infinity;
let targetPlayer;

for ( let i = 0; i < players.length; i ++ ) {

const player = players[ i ];

const distance = Math.hypot( player.x - mouseX, player.y - mouseY );

if ( distance < minDistance ) {

minDistance = distance;
targetPlayer = player;

}

}

ctx.beginPath();

ctx.arc( targetPlayer.x, targetPlayer.y, radius, 0, Math.PI * 2 );

ctx.stroke();

window.dispatchEvent( new MouseEvent( 'mousemove', {
clientX: targetPlayer.x,
clientY: targetPlayer.y,
dispatchedByMe: true
} ) );

}

}
} );

return Reflect.apply( ...arguments );

}
} );

window.addEventListener( 'DOMContentLoaded', 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 el = document.createElement( 'div' );

el.innerHTML = `

${shouldShowAd ? `Loading ad...` : `
Aimbot, ESP & X-Ray




[B] to toggle aimbot


[H] to toggle x-ray


[N] to toggle esp




By Zertalious



Discord
Instagram
Twitter
More scripts
` }

`;

while ( el.children.length > 0 ) {

document.body.appendChild( el.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();

}

} );