Survev.io Cheat Menu Enhanced

Aimbot, ESP, Health Display, Spinbot, No Detection, and UI Enhancements

As of 2025-03-05. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @license MIT
// @name         Survev.io Cheat Menu Enhanced
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Aimbot, ESP, Health Display, Spinbot, No Detection, and UI Enhancements
// @author       JavaScript AI
// @match        *://survev.io/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    let settings = {
        esp: false,
        spinbot: false,
        aimbot: false,
        explosionRadius: true,
        grenadeTimer: true,
        healthIndicator: true,
        adrenalineIndicator: true,
        lobbyBackground: true
    };

    function createGUI() {
        let gui = document.createElement("div");
        gui.id = "cheatMenu";
        gui.style = `
            position: fixed;
            top: 50px;
            left: 10px;
            background: rgba(0, 0, 0, 0.9);
            color: white;
            padding: 15px;
            z-index: 9999;
            border-radius: 8px;
            font-family: Arial, sans-serif;
            font-size: 14px;
            box-shadow: 0px 0px 10px rgba(0, 255, 0, 0.7);
            width: 180px;
        `;

        function createButton(id, text) {
            return `<button id="${id}" style="
                width: 100%;
                margin: 5px 0;
                padding: 5px;
                border: none;
                border-radius: 5px;
                background: #444;
                color: white;
                cursor: pointer;
                transition: 0.3s;
            ">${text}</button>`;
        }

        gui.innerHTML = `
            <b style="color: lime;">Survev.io Cheat Menu</b><br>
            ${createButton("toggleESP", "ESP: OFF")}
            ${createButton("toggleSpinbot", "Spinbot: OFF")}
            ${createButton("toggleAimbot", "Aimbot: OFF")}
            ${createButton("toggleExplosion", "Explosion Radius: ON")}
            ${createButton("toggleGrenade", "Grenade Timer: ON")}
            ${createButton("toggleHealth", "Health Indicator: ON")}
            ${createButton("toggleAdrenaline", "Adrenaline Indicator: ON")}
            ${createButton("toggleBG", "Lobby Background: ON")}
            ${createButton("hideMenu", "Hide Menu")}
        `;

        document.body.appendChild(gui);

        function toggleFeature(name, buttonId) {
            settings[name] = !settings[name];
            let button = document.getElementById(buttonId);
            button.innerText = `${name.replace(/([A-Z])/g, ' $1')}: ${settings[name] ? 'ON' : 'OFF'}`;
            button.style.background = settings[name] ? "lime" : "#444";
        }

        document.getElementById("toggleESP").onclick = () => toggleFeature("esp", "toggleESP");
        document.getElementById("toggleSpinbot").onclick = () => toggleFeature("spinbot", "toggleSpinbot");
        document.getElementById("toggleAimbot").onclick = () => toggleFeature("aimbot", "toggleAimbot");
        document.getElementById("toggleExplosion").onclick = () => toggleFeature("explosionRadius", "toggleExplosion");
        document.getElementById("toggleGrenade").onclick = () => toggleFeature("grenadeTimer", "toggleGrenade");
        document.getElementById("toggleHealth").onclick = () => toggleFeature("healthIndicator", "toggleHealth");
        document.getElementById("toggleAdrenaline").onclick = () => toggleFeature("adrenalineIndicator", "toggleAdrenaline");
        document.getElementById("toggleBG").onclick = () => toggleFeature("lobbyBackground", "toggleBG");

        document.getElementById("hideMenu").onclick = () => {
            gui.style.display = "none";
            setTimeout(() => {
                alert("Press 'H' to unhide menu.");
            }, 500);
        };

        document.addEventListener("keydown", (e) => {
            if (e.key === "h") gui.style.display = (gui.style.display === "none") ? "block" : "none";
        });
    }

    function modifyGame() {
        let canvas = document.querySelector("canvas");
        if (!canvas) return;
        let ctx = canvas.getContext("2d");

        function drawESP(x, y, width, height, health) {
            ctx.strokeStyle = health > 50 ? "green" : "red";
            ctx.lineWidth = 2;
            ctx.strokeRect(x, y, width, height);
        }

        function aimbot() {
            if (!settings.aimbot) return;
            let enemies = findEnemies();
            if (enemies.length > 0) {
                let closest = enemies.reduce((a, b) => (a.dist < b.dist ? a : b));
                aimAt(closest.x, closest.y);
            }
        }

        function loop() {
            if (settings.esp) {
                let enemies = findEnemies();
                enemies.forEach(enemy => drawESP(enemy.x, enemy.y, 30, 30, enemy.health));
            }
            aimbot();
            requestAnimationFrame(loop);
        }
        loop();
    }

    function antiDetection() {
        console.log = () => {};
        Object.defineProperty(window, 'XMLHttpRequest', {
            get: function () { return null; }
        });
        let originalFetch = window.fetch;
        window.fetch = function(url, options) {
            if (url.includes("cheat_detect")) return new Promise(() => {});
            return originalFetch(url, options);
        };
    }

    function addKillCounter() {
        let counter = document.createElement("div");
        counter.id = "killCounter";
        counter.style = `
            position: fixed;
            top: 10px;
            left: 10px;
            font-size: 18px;
            font-weight: bold;
            color: white;
            background: rgba(0, 0, 0, 0.7);
            padding: 5px 10px;
            border-radius: 5px;
            box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.7);
        `;
        counter.innerText = "Kills: 0";
        document.body.appendChild(counter);

        setInterval(() => {
            let kills = getPlayerKills();
            document.getElementById("killCounter").innerText = `Kills: ${kills}`;
        }, 1000);
    }

    window.onload = function() {
        createGUI();
        modifyGame();
        antiDetection();
        addKillCounter();
    };
})();