// ==UserScript== // @name Unlag // @version 1.2 // @description Gives free performance. Like indian scams, but real. From hunters with love. // @author Shädam // @match https://diep.io // @grant none // @namespace https://greasyfork.org/users/719520 // @downloadURL none // ==/UserScript== /*window.Image = class AnonymousImage extends Image { constructor(...args) { super(...args); this.crossOrigin = 'Anonymous'; } }*/ var int = window.setInterval(function() { if(window.input != null) { window.clearInterval(int); onready(); } }, 100); function onready() { let ping = false; let t; let samples = new Array(500); let m; let h = 0; /*window.input.execute("ren_pattern_grid false"); CanvasRenderingContext2D.prototype.getImageData = new Proxy(CanvasRenderingContext2D.prototype.getImageData, { apply: function(to, what, args) { console.log(`getimagedata running`, to, what, args); return to.apply(what, args); } });*/ function getMax() { let max = 0; for(let i = 0; i < 500; ++i) { if(samples[i] != null) { if(samples[i] > max) { max = samples[i]; } } else { break; } } m = max; } function sleep(time) { return new Promise(function(resolve) { setTimeout(resolve, time); }); } WebSocket = class extends WebSocket { constructor(ip) { super(ip); if(ip.match(/\.m28\./) != null) { samples = new Array(500); h = 0; ping = false; this.send = new Proxy(this.send, { apply: function(to, what, args) { if(args[0].length == 1) { ping = true; t = new Date().getTime(); } return to.apply(what, args); } }); let a = window.setInterval(function() { if(this.onmessage != null) { window.clearInterval(a); this.onmessage = new Proxy(this.onmessage, { apply: function(to, what, args) { if(new Uint8Array(args[0].data).length == 1 && ping == true) { ping = false; samples[h] = new Date().getTime() - t; h = (h + 1) % 501; getMax(); } return to.apply(what, args); } }); } }.bind(this), 100); } } } window.m28.pow.solve = new Proxy(window.m28.pow.solve, { apply: function(to, what, args) { console.log('hm'); const time = new Date().getTime(); const f = args[2]; return to.apply(what, [args[0], args[1], async function(...g) { console.log('waiting ' + 10000 - m * 3 - new Date().getTime() + time); if(args[1] == 17 && 10000 - m * 3 - new Date().getTime() + time > 0) { await sleep(10000 - m * 3 - new Date().getTime() + time); } console.log('done waiting'); return f(...g); }]); } }); }