Avant de procéder à l'installation, Greasy Forkattention ce script contient des contre-fonctionnalités, qui sont là pour le bénéfice de l'auteur du script, plutôt que pour le vôtre.
Ce script injectera des ads/Pub sur les sites que vous visitez.
Let's you see players behind walls. Comes with a wireframe view mode too. Press V and N to toggle them.
Version au
// ==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 = '';
}