インストールの前に、Greasy Forkは、このスクリプトにアンチ機能が含まれることをお知らせします。これはあなたではなく、スクリプトの作者の利益を目的としてます。
このスクリプトは、訪れたサイトに広告を挿入します。
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.
// ==UserScript== // @name Surviv.IO Aimbot, ESP & X-Ray // @namespace https://greasyfork.org/en/users/662330-zertalious // @version 0.0.4 // @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 *://surviv.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 = `<style> .my-dialog { position: absolute; left: 50%; top: 50%; padding: 20px; background: rgba(0, 0, 0, 0.9); box-shadow: 0 0 0 1000vw rgba(0, 0, 0, 0.5); border-radius: 5px; color: #fff; transform: translate(-50%, -50%); text-align: center; z-index: 999999; } .my-dialog * { color: #fff; } .my-close { position: absolute; right: 5px; top: 5px; width: 20px; height: 20px; opacity: 0.5; cursor: pointer; } .my-close:before, .my-close:after { content: ' '; position: absolute; left: 50%; top: 50%; width: 100%; height: 20%; transform: translate(-50%, -50%) rotate(-45deg); background: #fff; } .my-close:after { transform: translate(-50%, -50%) rotate(45deg); } .my-close:hover { opacity: 1; } </style> <div class="my-dialog">${shouldShowAd ? `<big>Loading ad...</big>` : `<div class="my-close" onclick="this.parentNode.style.display='none';"></div> <big style="font-size: 2em;">Aimbot, ESP & X-Ray</big> <br> <br> [B] to toggle aimbot <br> [H] to toggle x-ray <br> [N] to toggle esp <br> <br> By Zertalious <br> <br> <div class="btn-purple btn-darken menu-option" style="position: unset !important;" onclick="window.open('https://discord.gg/K24Zxy88VM')">Discord</div> <div class="btn-orange btn-darken menu-option" onclick="window.open('https://www.instagram.com/zertalious/', '_blank')">Instagram</div> <div class="btn-blue btn-darken menu-option" onclick="window.open('https://twitter.com/Zertalious', '_blank')">Twitter</div> <div class="btn-green btn-darken menu-option" onclick="window.open('https://greasyfork.org/en/users/662330-zertalious', '_blank')">More scripts</div> ` } </div>`; 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(); } } );