- // ==UserScript==
- // @name _N0N4M3's Diep.io Mod
- // @namespace http://tampermonkey.net/
- // @version 2024-11-06
- // @description Dark theme, FPS & Ping display, ESP, Aim helper, Factory helper
- // @author _N0N4M3
- // @match https://diep.io/
- // @icon https://www.google.com/s2/favicons?sz=64&domain=diep.io
- // @run-at document-start
- // @grant none
- // ==/UserScript==
-
- let darkThemeEnabled = 0;
- let info = 0;
- let currentElem = {};
- let fill = CanvasRenderingContext2D.prototype.fill;
- let X = 200;
- let Y = X * (innerHeight / innerWidth);
- let aimLine = 0;
- let esp = 0;
- let factoryHelper = 0;
- let D = Math.hypot(innerWidth / 2, innerHeight / 2);
- let cursorX = 0;
- let cursorY = 0;
- let closestCircleX = innerWidth / 2;
- let closestCircleY = innerHeight / 2;
-
- function darkTheme() {
- input.execute("ren_background false");
- input.execute("net_replace_colors 0x1c1c1c 0x333333 0x003b4b 0x003b4b 0x501a1c 0x3f2a51 0x004b24 0x2e5523 0x554d23 0x542727 0x272f54 0x502749 0x554d23 0x165530 0x3e3e3e 0x501a1c 0x544127 0x404040");
- input.execute("ren_minimap_background_color 0x444444");
- input.execute("ren_minimap_border_color 0x444444");
- input.execute("ren_stroke_soft_color_intensity -2");
- input.execute("ren_health_background_color 0x222222");
- input.execute("ren_health_fill_color 0x00FF00");
- input.execute("ren_score_bar_fill_color 0xFF0000");
- input.execute("ren_xp_bar_fill_color 0xFFFF80");
- input.execute("ren_bar_background_color 0x111111");
-
- darkThemeEnabled = 1;
- }
-
- function lightTheme() {
- input.execute("ren_background true");
- input.execute("net_replace_colors 0x555555 0x999999 0x00B2E1 0x00B2E1 0xF14E54 0xBF7FF5 0x00E16E 0x8AFF69 0xFFE869 0xFC7677 0x768DFC 0xF177DD 0xFFE869 0x43FF91 0xBBBBBB 0xF14E54 0xFCC376 0xC0C0C0");
- input.execute("ren_minimap_background_color 0xCDCDCD");
- input.execute("ren_minimap_border_color 0x555555");
- input.execute("ren_stroke_soft_color_intensity 0.25");
- input.execute("ren_health_background_color 0x555555");
- input.execute("ren_health_fill_color 0x85E37D");
- input.execute("ren_score_bar_fill_color 0x43FF91");
- input.execute("ren_xp_bar_fill_color 0xFFDE43");
- input.execute("ren_bar_background_color 0x000000");
-
- darkThemeEnabled = 0;
- }
-
- function showInfo() {
- input.execute("ren_debug_info true");
- input.execute("ren_fps true");
- }
-
- function hideInfo() {
- input.execute("ren_debug_info false");
- input.execute("ren_fps false");
- }
-
- function canUseKey(e) {
- return input.doesHaveTank() && !e.ctrlKey && currentElem.tagName != "INPUT" && document.activeElement && document.activeElement.tagName != "INPUT";
- }
-
- function drawLine(ctx, x, y) {
- if ((x < X || x > innerWidth - X) || (y < Y || y > innerHeight - Y)) {
- let cX = innerWidth / 2;
- let cY = innerHeight / 2;
- let p1X = x;
- let p1Y = y;
- let p2X = p1X + (cX - p1X) * 0.4;
- let p2Y = p1Y + (cY - p1Y) * 0.4;
-
- ctx.beginPath();
- ctx.moveTo(p1X, p1Y);
- ctx.lineTo(p2X, p2Y);
- ctx.lineWidth = 3;
- ctx.strokeStyle = "#FF0";
- ctx.stroke();
- ctx.closePath();
- }
- }
-
- function resize(canvas) {
- canvas.width = innerWidth;
- canvas.height = innerHeight;
-
- Y = X * (innerHeight / innerWidth);
- D = Math.hypot(innerWidth / 2, innerHeight / 2);
- }
-
- function createCanvas() {
- let canvas = document.createElement("canvas");
-
- resize(canvas);
-
- canvas.style.display = "block";
- canvas.style.position = "absolute";
- canvas.style.left = "0px";
- canvas.style.top = "0px";
- canvas.style.zIndex = 1000;
- canvas.style.pointerEvents = "none";
-
- document.body.append(canvas);
-
- return canvas;
- }
-
- function drawAimLine(ctx) {
- let p1X = closestCircleX;
- let p1Y = closestCircleY;
- let a = Math.atan2(cursorY - p1Y, cursorX - p1X);
- let p2X = p1X + Math.cos(a) * D;
- let p2Y = p1Y + Math.sin(a) * D;
-
- ctx.beginPath();
- ctx.moveTo(p1X, p1Y);
- ctx.lineTo(p2X, p2Y);
- ctx.lineWidth = 2;
- ctx.strokeStyle = "#EEE";
- ctx.stroke();
- ctx.closePath();
- }
-
- function drawCircle(ctx, r) {
- ctx.beginPath();
- ctx.arc(cursorX, cursorY, r, 0, Math.PI * 2);
- ctx.stroke();
- ctx.closePath();
- }
-
- function drawFactoryHelperCircles(ctx) {
- ctx.lineWidth = 2;
- ctx.strokeStyle = "#EEE";
-
- drawCircle(ctx, 315);
- drawCircle(ctx, 85);
- }
-
- document.addEventListener("keydown", e => {
- let canUse = canUseKey(e);
-
- if (canUse) {
- let code = e.code;
-
- if (code == "KeyR") {
- darkTheme();
- }
-
- if (code == "KeyT") {
- lightTheme();
- }
-
- if (code == "KeyF") {
- aimLine = !aimLine;
- }
-
- if (code == "KeyG") {
- esp = !esp;
- }
-
- if (code == "KeyJ") {
- factoryHelper = !factoryHelper;
- }
-
- if (code == "KeyB") {
- // openBuilds();
- }
-
- if (code == "KeyN") {
- // openScoreHistory();
- }
- }
- });
-
- document.addEventListener("keyup", e => {
- let canUse = canUseKey(e);
-
- if (canUse) {
- let code = e.code;
-
- if (code == "KeyL") {
- info = !info;
-
- if (info) {
- showInfo();
- } else {
- hideInfo();
- }
- }
- }
- });
-
- document.addEventListener("mousemove", e => {
- cursorX = e.clientX;
- cursorY = e.clientY;
- });
-
- window.addEventListener("beforeunload", () => {
- lightTheme();
- });
-
- CanvasRenderingContext2D.prototype.fill = function() {
- if (darkThemeEnabled && this.fillStyle == "#000000") {
- this.fillStyle = "#EEEEEE";
- }
-
- fill.apply(this);
- }
-
- let interval = setInterval(function() {
- let img = document.getElementById("backdrop-asset");
- let canvas1 = document.getElementById("canvas");
-
- if (img && canvas1) {
- clearInterval(interval);
-
- img.remove();
-
- let ctx1 = canvas1.getContext("2d");
- let fill = ctx1.fill.bind(ctx1);
- let arc = ctx1.arc.bind(ctx1);
- let clearRect = ctx1.clearRect.bind(ctx1);
-
- let canvas2 = createCanvas();
- let ctx2 = canvas2.getContext("2d");
-
- document.body.addEventListener("resize", function() {
- resize(canvas2);
- });
-
- ctx1.arc = function(x, y, r, sA, eA, cc = false) {
- arc(x, y, r, sA, eA, cc);
-
- let transform = ctx1.getTransform();
- let x1 = transform.e;
- let y1 = transform.f;
- let r1 = transform.a;
-
- if (esp && r1 >= 20 && ctx1.globalAlpha == 1) {
- drawLine(ctx2, x1, y1);
- }
-
- if (Math.abs(x1 - innerWidth / 2) < 70 && Math.abs(y1 - innerHeight / 2) < 70 && r1 >= 20 && ctx1.globalAlpha == 1) {
- closestCircleX = x1;
- closestCircleY = y1;
- }
- }
-
- ctx1.clearRect = function(x, y, w, h) {
- clearRect(x, y, w, h);
- ctx2.clearRect(0, 0, innerWidth, innerHeight);
-
- if (aimLine && input.doesHaveTank()) {
- drawAimLine(ctx2);
- }
-
- if (factoryHelper && input.doesHaveTank()) {
- drawFactoryHelperCircles(ctx2);
- }
- }
- }
- }, 100);