// ==UserScript==
// @name Afk Script UPDATED
// @namespace http://tampermonkey.net/
// @version 3
// @description Press F to set the afk location and J to afk
// @author Mi300
// @match https://diep.io/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license dont copy my script thx
// @grant none
// ==/UserScript==
setTimeout (function() {
function hook(target, callback){
const check = () => {
window.requestAnimationFrame(check)
const func = CanvasRenderingContext2D.prototype[target]
if(func.toString().includes(target)){
CanvasRenderingContext2D.prototype[target] = new Proxy (func, {
apply (method, thisArg, args) {
callback(thisArg, args)
return Reflect.apply (method, thisArg, args)
}
});
}
}
check()
}
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let distance = [0, 0];
let isActive = false;
let storedPos = [0, 0];
let arrowPos = [0, 0];
let minimapPos = [0, 0];
let minimapDim = [0, 0];
let worldPosition = [0, 0];
let teamSnapshot = false;
let team = '#f14e54';
function hookMinimapArrow() {
let drawInstructions = 0;
let vertices = new Array(0);
hook('beginPath', function(context, args) {
drawInstructions = 1;
vertices = new Array(0);
});
hook('moveTo', function(context, args) {
drawInstructions = 2;
vertices.push(args);
});
hook('lineTo', function(context, args) {
if (drawInstructions >= 2 && drawInstructions <= 5) {
drawInstructions++;
vertices.push(args);
return;
}
drawInstructions = 0;
});
hook('fill', function(context, args) {
if (context.globalAlpha != 1 || context.fillStyle != '#000000') {
return;
}
if (drawInstructions === 4) {
const pos = getAverage (vertices);
arrowPos = pos;
}
});
}
function hookMinimap() {
hook('strokeRect', function(context, args) {
const t = context.getTransform();
minimapPos = [t.e, t.f];
minimapDim = [t.a, t.d];
});
hook('rect', function(context, args) {// purple: #bf7ff5, red: #f14e54, blue: #00b2e1, green: #00e16e
const c = context.fillStyle;
if (teamSnapshot) {
if (c == '#f14e54') {
team = c;
}
if (c == '#00b2e1') {
team = c;
}
if (c == '#bf7ff5') {
team = c;
}
if (c == '#00e16e') {
team = c;
}
}
});
}
hookMinimap();
hookMinimapArrow();
function getAverage(points) {
let ret = [0, 0];
points.forEach (point => {
ret[0] += point[0];
ret[1] += point[1];
});
ret[0] /= points.length;
ret[1] /= points.length;
return ret;
}
function getWorldPos () {
const ret = [
parseFloat((((arrowPos[0] - minimapPos[0] - minimapDim[0] / 2) / minimapDim[0] * 100) * 460).toFixed (3)),
parseFloat((((arrowPos[1] - minimapPos[1] - minimapDim[1] / 2) / minimapDim[1] * 100) * 460).toFixed (3)),
]
return ret;
}
let lineWidth = 0;
let cameraZoom = 0;
CanvasRenderingContext2D.prototype.stroke = new Proxy(CanvasRenderingContext2D.prototype.stroke, {
apply(method, self, args) {
lineWidth = self.lineWidth;
return Reflect.apply(method, self, args);
}
});
CanvasRenderingContext2D.prototype.createPattern = new Proxy(CanvasRenderingContext2D.prototype.createPattern, {
apply(method, self, args) {
cameraZoom = 1 / lineWidth;
return Reflect.apply(method, self, args);
}
});
input.try_spawn = new Proxy(input.try_spawn, {
apply(method, self, args) {
teamSnapshot = true;
setTimeout(function() {
teamSnapshot = false;
console.log (team)
},1000);
return Reflect.apply(method, self, args);
}
});
function tick() {
window.requestAnimationFrame(tick);
worldPosition = getWorldPos();
distance = getDist(
worldPosition,
storedPos,
)
if (isActive) {
move();
}
drawAfkPos();
}
tick();
function toGrid(dist) {
return [
dist[0] / ((1 - cameraZoom) * 8),
dist[1] / ((1 - cameraZoom) * 8),
dist[2] / ((1 - cameraZoom) * 8),
]
}
function drawAfkPos() {
//distance
const width = canvas.width;
const height = canvas.height;
const grid = toGrid(distance);
const size = 50;
let toDraw = [
width / 2 - grid[1],
height / 2 - grid[2],
]
ctx.beginPath();
ctx.globalAlpha = 0.5;
ctx.fillStyle = team
ctx.arc(...toDraw, size, 0, Math.PI * 2, false);
ctx.fill();
ctx.stroke();
ctx.globalAlpha = 1;
ctx.beginPath();
ctx.lineWidth = 4;
ctx.font = "23px bold arial"
ctx.fillStyle = 'white';
ctx.strokeStyle = 'black';
if (isActive) {
ctx.strokeText('[J] Locked', toDraw[0] - 50, toDraw[1] + 25);
ctx.fillText('[J] Locked', toDraw[0] - 50, toDraw[1] + 25);
} else {
ctx.strokeText('[J] Unlocked', toDraw[0] - 50, toDraw[1] + 25);
ctx.fillText('[J] Unlocked', toDraw[0] - 50, toDraw[1] + 25);
}
}
document.addEventListener('keydown', e => {
if(e.key === 'j') {
isActive = !isActive;
input.key_up (83);
input.key_up (87);
input.key_up (68);
input.key_up (65);
}
if(e.key === 'f') {
storedPos = worldPosition;
}
});
function getDist(t1, t2) {
const distX = t1[0] - t2[0];
const distY = t1[1] - t2[1];
return [Math.hypot(distX, distY), distX, distY];
};
function move() {
if (distance[1] < 0.1) {
input.key_up (65);
input.key_down (68);
} else if (distance[1] > -0.1) {
input.key_up (68);
input.key_down (65);
} else {
input.key_up (68);
input.key_up (65);
}
if (distance[2] < 0.1) {
input.key_up (87);
input.key_down (83);
} else if (distance[2] > 0.1) {
input.key_up (83);
input.key_down (87);
} else {
input.key_up (83);
input.key_up (87);
}
}
},2500);