Survev.io Cheat Menu Enhanced

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

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

  1. // ==UserScript==
  2. // @license MIT
  3. // @name Survev.io Cheat Menu Enhanced
  4. // @namespace http://tampermonkey.net/
  5. // @version 2.0
  6. // @description Aimbot, ESP, Health Display, Spinbot, No Detection, and UI Enhancements
  7. // @author JavaScript AI
  8. // @match *://survev.io/*
  9. // @grant none
  10. // @run-at document-start
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. let settings = {
  17. esp: false,
  18. spinbot: false,
  19. aimbot: false,
  20. explosionRadius: true,
  21. grenadeTimer: true,
  22. healthIndicator: true,
  23. adrenalineIndicator: true,
  24. lobbyBackground: true
  25. };
  26.  
  27. function createGUI() {
  28. let gui = document.createElement("div");
  29. gui.id = "cheatMenu";
  30. gui.style = `
  31. position: fixed;
  32. top: 50px;
  33. left: 10px;
  34. background: rgba(0, 0, 0, 0.9);
  35. color: white;
  36. padding: 15px;
  37. z-index: 9999;
  38. border-radius: 8px;
  39. font-family: Arial, sans-serif;
  40. font-size: 14px;
  41. box-shadow: 0px 0px 10px rgba(0, 255, 0, 0.7);
  42. width: 180px;
  43. `;
  44.  
  45. function createButton(id, text) {
  46. return `<button id="${id}" style="
  47. width: 100%;
  48. margin: 5px 0;
  49. padding: 5px;
  50. border: none;
  51. border-radius: 5px;
  52. background: #444;
  53. color: white;
  54. cursor: pointer;
  55. transition: 0.3s;
  56. ">${text}</button>`;
  57. }
  58.  
  59. gui.innerHTML = `
  60. <b style="color: lime;">Survev.io Cheat Menu</b><br>
  61. ${createButton("toggleESP", "ESP: OFF")}
  62. ${createButton("toggleSpinbot", "Spinbot: OFF")}
  63. ${createButton("toggleAimbot", "Aimbot: OFF")}
  64. ${createButton("toggleExplosion", "Explosion Radius: ON")}
  65. ${createButton("toggleGrenade", "Grenade Timer: ON")}
  66. ${createButton("toggleHealth", "Health Indicator: ON")}
  67. ${createButton("toggleAdrenaline", "Adrenaline Indicator: ON")}
  68. ${createButton("toggleBG", "Lobby Background: ON")}
  69. ${createButton("hideMenu", "Hide Menu")}
  70. `;
  71.  
  72. document.body.appendChild(gui);
  73.  
  74. function toggleFeature(name, buttonId) {
  75. settings[name] = !settings[name];
  76. let button = document.getElementById(buttonId);
  77. button.innerText = `${name.replace(/([A-Z])/g, ' $1')}: ${settings[name] ? 'ON' : 'OFF'}`;
  78. button.style.background = settings[name] ? "lime" : "#444";
  79. }
  80.  
  81. document.getElementById("toggleESP").onclick = () => toggleFeature("esp", "toggleESP");
  82. document.getElementById("toggleSpinbot").onclick = () => toggleFeature("spinbot", "toggleSpinbot");
  83. document.getElementById("toggleAimbot").onclick = () => toggleFeature("aimbot", "toggleAimbot");
  84. document.getElementById("toggleExplosion").onclick = () => toggleFeature("explosionRadius", "toggleExplosion");
  85. document.getElementById("toggleGrenade").onclick = () => toggleFeature("grenadeTimer", "toggleGrenade");
  86. document.getElementById("toggleHealth").onclick = () => toggleFeature("healthIndicator", "toggleHealth");
  87. document.getElementById("toggleAdrenaline").onclick = () => toggleFeature("adrenalineIndicator", "toggleAdrenaline");
  88. document.getElementById("toggleBG").onclick = () => toggleFeature("lobbyBackground", "toggleBG");
  89.  
  90. document.getElementById("hideMenu").onclick = () => {
  91. gui.style.display = "none";
  92. setTimeout(() => {
  93. alert("Press 'H' to unhide menu.");
  94. }, 500);
  95. };
  96.  
  97. document.addEventListener("keydown", (e) => {
  98. if (e.key === "h") gui.style.display = (gui.style.display === "none") ? "block" : "none";
  99. });
  100. }
  101.  
  102. function modifyGame() {
  103. let canvas = document.querySelector("canvas");
  104. if (!canvas) return;
  105. let ctx = canvas.getContext("2d");
  106.  
  107. function drawESP(x, y, width, height, health) {
  108. ctx.strokeStyle = health > 50 ? "green" : "red";
  109. ctx.lineWidth = 2;
  110. ctx.strokeRect(x, y, width, height);
  111. }
  112.  
  113. function aimbot() {
  114. if (!settings.aimbot) return;
  115. let enemies = findEnemies();
  116. if (enemies.length > 0) {
  117. let closest = enemies.reduce((a, b) => (a.dist < b.dist ? a : b));
  118. aimAt(closest.x, closest.y);
  119. }
  120. }
  121.  
  122. function loop() {
  123. if (settings.esp) {
  124. let enemies = findEnemies();
  125. enemies.forEach(enemy => drawESP(enemy.x, enemy.y, 30, 30, enemy.health));
  126. }
  127. aimbot();
  128. requestAnimationFrame(loop);
  129. }
  130. loop();
  131. }
  132.  
  133. function antiDetection() {
  134. console.log = () => {};
  135. Object.defineProperty(window, 'XMLHttpRequest', {
  136. get: function () { return null; }
  137. });
  138. let originalFetch = window.fetch;
  139. window.fetch = function(url, options) {
  140. if (url.includes("cheat_detect")) return new Promise(() => {});
  141. return originalFetch(url, options);
  142. };
  143. }
  144.  
  145. function addKillCounter() {
  146. let counter = document.createElement("div");
  147. counter.id = "killCounter";
  148. counter.style = `
  149. position: fixed;
  150. top: 10px;
  151. left: 10px;
  152. font-size: 18px;
  153. font-weight: bold;
  154. color: white;
  155. background: rgba(0, 0, 0, 0.7);
  156. padding: 5px 10px;
  157. border-radius: 5px;
  158. box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.7);
  159. `;
  160. counter.innerText = "Kills: 0";
  161. document.body.appendChild(counter);
  162.  
  163. setInterval(() => {
  164. let kills = getPlayerKills();
  165. document.getElementById("killCounter").innerText = `Kills: ${kills}`;
  166. }, 1000);
  167. }
  168.  
  169. window.onload = function() {
  170. createGUI();
  171. modifyGame();
  172. antiDetection();
  173. addKillCounter();
  174. };
  175. })();