Voorafgaand aan de installatie wil Greasy Fork je waarschuwen dat dit script functies voor eigen gewin van de maker bevat in plaats van functies die voor jouw gewin.
Dit script zal reclame tonen op websites die je bezoekt.
Let's you see players behind walls. Comes with a wireframe view mode too. Press V and N to toggle them.
Per
// ==UserScript==
// @name 1v1.LOL ESP & Wireframe View
// @namespace http://tampermonkey.net/
// @version 0.3
// @description Let's you see players behind walls. Comes with a wireframe view mode too. Press V and N to toggle them.
// @author Zertalious (Zert)
// @match *://1v1.lol/*
// @icon https://www.google.com/s2/favicons?domain=1v1.lol
// @grant none
// @run-at document-start
// @antifeature ads
// ==/UserScript==
let espEnabled = true;
let wireframeEnabled = false;
const WebGL = WebGL2RenderingContext.prototype;
const uniformName = 'myUniform';
WebGL.shaderSource = new Proxy( WebGL.shaderSource, {
apply( target, thisArgs, args ) {
const isVertexShader = args[ 1 ].indexOf( 'gl_Position' ) > - 1;
if ( isVertexShader || args[ 1 ].indexOf( 'SV_Target0' ) > - 1 ) {
const varName = isVertexShader ? 'gl_Position.z' : 'SV_Target0';
const value = isVertexShader ? '1.0' : 'vec4(1.0, 0.0, 0.0, 1.0)';
args[ 1 ] = args[ 1 ].replace( 'void main', 'uniform bool ' + uniformName + ';\nvoid main' )
.replace( /return;/, `${varName} = ${uniformName} ? ${value} : ${varName};` );
}
return Reflect.apply( ...arguments );
}
} );
WebGL.getUniformLocation = new Proxy( WebGL.getUniformLocation, {
apply( target, thisArgs, [ program, name ] ) {
const result = Reflect.apply( ...arguments );
if ( result ) {
result.name = name;
result.program = program;
}
return result;
}
} );
WebGL.uniform4fv = new Proxy( WebGL.uniform4fv, {
apply( target, thisArgs, args ) {
if ( args[ 0 ].name === 'hlslcc_mtx4x4unity_ObjectToWorld' ) {
args[ 0 ].program.isUIProgram = true;
}
return Reflect.apply( ...arguments );
}
} );
WebGL.drawElements = new Proxy( WebGL.drawElements, {
apply( target, thisArgs, args ) {
const program = thisArgs.getParameter( thisArgs.CURRENT_PROGRAM );
if ( ! program.uniformLocation ) {
program.uniformLocation = thisArgs.getUniformLocation( program, uniformName );
}
thisArgs.uniform1i( program.uniformLocation, espEnabled && args[ 1 ] > 4000 );
args[ 0 ] = wireframeEnabled && ! program.isUIProgram && args[ 1 ] > 6 ? thisArgs.LINES : args[ 0 ];
return Reflect.apply( ...arguments );
}
} );
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>
.dialog {
position: absolute;
left: 50%;
top: 50%;
padding: 20px;
background: #1e294a;
color: #fff;
transform: translate(-50%, -50%);
text-align: center;
z-index: 999999;
font-family: cursive;
}
.dialog * {
color: #fff;
}
.close {
position: absolute;
right: 5px;
top: 5px;
width: 20px;
height: 20px;
opacity: 0.5;
cursor: pointer;
}
.close:before, .close:after {
content: ' ';
position: absolute;
left: 50%;
top: 50%;
width: 100%;
height: 20%;
transform: translate(-50%, -50%) rotate(-45deg);
background: #fff;
}
.close:after {
transform: translate(-50%, -50%) rotate(45deg);
}
.close:hover {
opacity: 1;
}
.btn {
cursor: pointer;
padding: 0.5em;
background: red;
border: 3px solid rgba(0, 0, 0, 0.2);
}
.btn:active {
transform: scale(0.8);
}
.msg {
position: absolute;
left: 10px;
bottom: 10px;
background: #1e294a;
color: #fff;
font-family: cursive;
font-weight: bolder;
padding: 15px;
animation: msg 0.5s forwards, msg 0.5s reverse forwards 3s;
z-index: 999999;
pointer-events: none;
}
@keyframes msg {
from {
transform: translate(-120%, 0);
}
to {
transform: none;
}
}
</style>
<div class="dialog">${shouldShowAd ? `<big>Loading ad...</big>` : `<div class="close" onclick="this.parentNode.style.display='none';"></div>
<big>ESP & Wireframe</big>
<br>
<br>
[V] to toggle ESP
<br>
[N] to toggle wireframe
<br>
[H] to show/hide help
<br>
<br>
By Zertalious
<br>
<br>
<div style="display: grid; grid-template-columns: 1fr 1fr; grid-gap: 5px;">
<div class="btn" onclick="window.open('https://discord.gg/K24Zxy88VM', '_blank')">Discord</div>
<div class="btn" onclick="window.open('https://www.instagram.com/zertalious/', '_blank')">Instagram</div>
<div class="btn" onclick="window.open('https://twitter.com/Zertalious', '_blank')">Twitter</div>
<div class="btn" onclick="window.open('https://greatest.deepsurf.us/en/users/662330-zertalious', '_blank')">More scripts</div>
</div>
` }
</div>
<div class="msg" style="display: none;"></div>`;
const msgEl = el.querySelector( '.msg' );
const dialogEl = el.querySelector( '.dialog' );
window.addEventListener( 'DOMContentLoaded', function () {
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 ) );
url.searchParams.set( 'scriptVersion', GM.info.script.version );
window.location.href = 'https://zertalious.xyz?ref=' + new TextEncoder().encode( url.href ).toString();
}
} );
window.addEventListener( 'keyup', function ( event ) {
switch ( String.fromCharCode( event.keyCode ) ) {
case 'V' :
espEnabled = ! espEnabled;
showMsg( 'ESP', espEnabled );
break;
case 'N' :
wireframeEnabled = ! wireframeEnabled;
showMsg( 'Wireframe', wireframeEnabled );
break;
case 'H' :
dialogEl.style.display = dialogEl.style.display === '' ? 'none' : '';
break;
}
} );
function showMsg( name, bool ) {
msgEl.innerText = name + ': ' + ( bool ? 'ON' : 'OFF' );
msgEl.style.display = 'none';
void msgEl.offsetWidth;
msgEl.style.display = '';
}