- // ==UserScript==
- // @name Diep.io Auto-leveler Bot (Improved)
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Improved auto-leveler bot for Diep.io. Press Q to toggle.
- // @author Mi300 (Improved by AI)
- // @match https://diep.io/*
- // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
- // @license Apache License 2.0
- // @grant none
- // @run-at document-start
- // ==/UserScript==
-
- const ARENA_WIDTH = 26000;
- const ARENA_HEIGHT = 26000;
- const T4_BASE_WIDTH = 3900;
- const T4_BASE_HEIGHT = 3900;
-
- const T2_BASES = [
- { id: 0, name: "blue", hex: "#00b2e1", x: 0, y: 0, cX: 0, cY: 0, dirX: 1, dirY: 1 },
- { id: 3, name: "red", hex: "#f14e54", x: 23500, y: 0, cX: ARENA_WIDTH, cY: ARENA_HEIGHT, dirX: -1, dirY: 1 },
- ];
-
- const T4_BASES = [
- { id: 0, name: "blue", hex: "#00b2e1", x: 0, y: 0, cX: 0, cY: 0, dirX: 1, dirY: 1 },
- { id: 1, name: "purple", hex: "#bf7ff5", x: 22100, y: 0, cX: 0, cY: ARENA_HEIGHT, dirX: -1, dirY: 1 },
- { id: 2, name: "green", hex: "#00e16e", x: 0, y: 22100, cX: ARENA_WIDTH, cY: 0, dirX: 1, dirY: -1 },
- { id: 3, name: "red", hex: "#f14e54", x: 22100, y: 22100, cX: ARENA_WIDTH, cY: ARENA_HEIGHT, dirX: -1, dirY: -1 },
- ];
-
- alert("Auto Leveler: Press Q to toggle on / off.");
-
- let OMG = setInterval(function () {
- if (!window.input) return;
- clearInterval(OMG);
-
- const canvas = document.getElementById("canvas");
- const ctx = canvas.getContext("2d");
- let baseArea = null;
- let inBase = false;
- let toggled = false;
- let is2T = false;
- let lastCheck = Date.now();
- let minimapArrow = [0, 0];
- let minimapPos = [0, 0];
- let minimapDim = [0, 0];
- let playerPos = [0, 0];
-
- document.addEventListener("keydown", function (e) {
- if (e.key === "q") {
- toggled = !toggled;
- setTimeout(() => {
- input.key_up(87); // W
- input.key_up(83); // S
- input.key_up(65); // A
- input.key_up(68); // D
- }, 200);
- }
- });
-
- function getCentre(vertices) {
- return vertices.reduce((acc, vertex) => [acc[0] + vertex[0], acc[1] + vertex[1]], [0, 0])
- .map(sum => sum / vertices.length);
- }
-
- function getDist(t1, t2) {
- const distX = t1[0] - t2[0];
- const distY = t1[1] - t2[1];
- return [Math.hypot(distX, distY), distX, distY];
- }
-
- function getClosest(entities) {
- return entities.reduce((acc, entity) => {
- const dist = getDist(entity[0], [canvas.width / 2, canvas.height / 2])[0];
- return dist < getDist(acc[0], [canvas.width / 2, canvas.height / 2])[0] ? entity : acc;
- }, [[0, 0], Infinity]);
- }
-
- function move(aimTarget, moveTarget) {
- if (!window.input || !window.input.should_prevent_unload()) return;
-
- input.mouse(...aimTarget);
- input.key_down(1); // Shoot
-
- const moveTargetDistance = getDist(moveTarget, [canvas.width / 2, canvas.height / 2]);
-
- // Horizontal movement
- if (moveTargetDistance[1] > 0) {
- input.key_down(68); // D
- input.key_up(65); // A
- } else if (moveTargetDistance[1] < 0) {
- input.key_up(68); // D
- input.key_down(65); // A
- } else {
- input.key_up(68); // D
- input.key_up(65); // A
- }
-
- // Vertical movement
- if (moveTargetDistance[2] > 0) {
- input.key_down(83); // S
- input.key_up(87); // W
- } else if (moveTargetDistance[2] < 0) {
- input.key_up(83); // S
- input.key_down(87); // W
- } else {
- input.key_up(83); // S
- input.key_up(87); // W
- }
- }
-
- function main() {
- if (!toggled) return;
- window.requestAnimationFrame(main);
-
- playerPos = getPlayerPos();
- getBase(playerPos);
-
- if (Date.now() - lastCheck > 2000) is2T = true;
- else is2T = false;
-
- if (!input.should_prevent_unload()) {
- window.input.try_spawn(localStorage.name);
- }
-
- getCurrentTargets();
- }
-
- window.requestAnimationFrame(main);
- }, 400);