// ==UserScript==
// @name Location XY
// @description Displays XY of the current coordinates
// @version 0.0.1
// @author mememe
// @match https://diep.io/*
// @require https://gf.qytechs.cn/scripts/433681-diepapi/code/diepAPI.js?version=1041213
// @grant none
// @namespace https://gf.qytechs.cn/users/914545
// ==/UserScript==
'use strict';
const { Vector } = window.diepAPI.core;
const { scaling, player, game } = window.diepAPI.apis;
const { backgroundOverlay } = window.diepAPI.tools;
const ctx = backgroundOverlay.ctx;
// Bases (width = 67 * 50)
const blue_base = new Vector(-11150 + 1675, -11150 + 1675);
const purple_base = new Vector(11150 - 1675, -11150 + 1675);
const green_base = new Vector(-11150 + 1675, 11150 - 1675);
const red_base = new Vector(11150 - 1675, 11150 - 1675);
// Base Drones
const danger_radius = new Vector(5250, 0);
const attack_radius = new Vector(3800, 0);
const locationContainer = document.createElement("div");
locationContainer.style = "pointer-events: none; position: fixed; top:10px; left:10px; font-family: Ubuntu; color: #FFFFFF; font-size: 30px;";
document.body.appendChild(locationContainer);
(() => {
"use strict";
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
class Arrow {
constructor() {
this.values = [
"IzAwMDAwMA==",
"MA==",
"MC4zNQ==",
"TGVhZGVy",
"cmVk"
];
this.context = CanvasRenderingContext2D.prototype;
this.FindArrow();
}
Hook(target, callback) {
this.context[target] = new Proxy(this.context[target], {
apply(type, _this, args) {
callback(_this, args);
return type.apply(_this, args);
},
});
}
FindArrow() {
this.Hook("moveTo", (_this, args) => {
if (_this.fillStyle == atob(this.values[0]) && _this.globalAlpha == atob(this.values[1])) {
_this.globalAlpha = atob(this.values[2]);
_this.fillStyle = atob(this.values[4]);
}
});
this.Hook("drawImage", (_this, args) => {
if (_this.globalAlpha == atob(this.values[1])) {
_this.globalAlpha = atob(this.values[2]);
}
});
}
}
new Arrow();
setInterval(() => {
if (document.getElementById("loading").innerText == "") {
setTimeout(() => {
let g = [ "(" + player.position["x"] + "," + player.position["y"] + ")"]
locationContainer.innerHTML = `<p>${g[0]}</p>`;
}, 100);
}
});
})();
function drawZones() {
ctx.save();
ctx.globalAlpha = 0.08;
if (player.gamemode === '4teams') {
let center;
const radius1 = scaling.toCanvasUnits(danger_radius).x;
const radius2 = scaling.toCanvasUnits(attack_radius).x;
//blue
center = scaling.toCanvasPos(blue_base);
ctx.fillStyle = '#006480';
ctx.beginPath();
ctx.arc(center.x, center.y, radius1, 0, 2 * Math.PI);
ctx.fill();
ctx.fillStyle = '#ff6480';
ctx.beginPath();
ctx.arc(center.x, center.y, radius2, 0, 2 * Math.PI);
ctx.fill();
//purple
center = scaling.toCanvasPos(purple_base);
ctx.fillStyle = '#644280';
ctx.beginPath();
ctx.arc(center.x, center.y, radius1, 0, 2 * Math.PI);
ctx.fill();
ctx.fillStyle = '#ff4280';
ctx.beginPath();
ctx.arc(center.x, center.y, radius2, 0, 2 * Math.PI);
ctx.fill();
//green
center = scaling.toCanvasPos(green_base);
ctx.fillStyle = '#00803e';
ctx.beginPath();
ctx.arc(center.x, center.y, radius1, 0, 2 * Math.PI);
ctx.fill();
ctx.fillStyle = '#ff803e';
ctx.beginPath();
ctx.arc(center.x, center.y, radius2, 0, 2 * Math.PI);
ctx.fill();
//red
center = scaling.toCanvasPos(red_base);
ctx.fillStyle = '#963033';
ctx.beginPath();
ctx.arc(center.x, center.y, radius1, 0, 2 * Math.PI);
ctx.fill();
ctx.fillStyle = '#ff3033';
ctx.beginPath();
ctx.arc(center.x, center.y, radius2, 0, 2 * Math.PI);
ctx.fill();
} else if (player.gamemode === 'teams') {
let coords1;
let coords2;
//blue
coords1 = scaling.toCanvasPos(new Vector(-11150, -11150));
coords2 = scaling.toCanvasPos(new Vector(-11150 + 5500, 11150));
ctx.fillStyle = '#006480';
ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);
coords2 = scaling.toCanvasPos(new Vector(-11150 + 4150, 11150));
ctx.fillStyle = '#ff6480';
ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);
//red
coords1 = scaling.toCanvasPos(new Vector(11150, -11150));
coords2 = scaling.toCanvasPos(new Vector(11150 - 5500, 11150));
ctx.fillStyle = '#963033';
ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);
coords2 = scaling.toCanvasPos(new Vector(11150 - 4150, 11150));
ctx.fillStyle = '#ff3033';
ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);
}
//pentagon nest
let coords1;
let coords2;
coords1 = scaling.toCanvasPos(new Vector(-1115, -1115));
coords2 = scaling.toCanvasPos(new Vector(1115, 1115));
ctx.fillStyle = '#8aff69';
ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);
ctx.restore();
}
game.once('ready', () => {
game.on('frame', () => {
drawZones();
});
});