Survev.io Cheat Menu Enhanced

Enhanced cheat menu with improved GUI, aimbot, ESP, grenade radius, spinbot, kill counter, and anti-detection measures.

  1. // ==UserScript==
  2. // @license MIT
  3. // @name Survev.io Cheat Menu Enhanced
  4. // @namespace http://tampermonkey.net/
  5. // @version 2.1
  6. // @description Enhanced cheat menu with improved GUI, aimbot, ESP, grenade radius, spinbot, kill counter, and anti-detection measures.
  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. // Settings for various cheat features
  17. let settings = {
  18. esp: false,
  19. spinbot: false,
  20. aimbot: false,
  21. explosionRadius: true,
  22. grenadeTimer: true,
  23. healthIndicator: true,
  24. adrenalineIndicator: true,
  25. lobbyBackground: true
  26. };
  27.  
  28. // Create and style the cheat menu GUI
  29. function createGUI() {
  30. let gui = document.createElement("div");
  31. gui.id = "cheatMenu";
  32. // Set styles individually
  33. gui.style.position = "fixed";
  34. gui.style.top = "50px";
  35. gui.style.left = "10px";
  36. gui.style.background = "rgba(0, 0, 0, 0.9)";
  37. gui.style.color = "white";
  38. gui.style.padding = "15px";
  39. gui.style.zIndex = "9999";
  40. gui.style.borderRadius = "8px";
  41. gui.style.fontFamily = "Arial, sans-serif";
  42. gui.style.fontSize = "14px";
  43. gui.style.boxShadow = "0px 0px 10px rgba(0, 255, 0, 0.7)";
  44. gui.style.width = "200px";
  45.  
  46. // Title
  47. let title = document.createElement("b");
  48. title.innerText = "Survev.io Cheat Menu";
  49. title.style.color = "lime";
  50. gui.appendChild(title);
  51. gui.appendChild(document.createElement("br"));
  52.  
  53. // Utility function to create a button
  54. function createButton(id, text) {
  55. let btn = document.createElement("button");
  56. btn.id = id;
  57. btn.innerText = text;
  58. btn.style.width = "100%";
  59. btn.style.margin = "5px 0";
  60. btn.style.padding = "5px";
  61. btn.style.border = "none";
  62. btn.style.borderRadius = "5px";
  63. btn.style.background = "#444";
  64. btn.style.color = "white";
  65. btn.style.cursor = "pointer";
  66. btn.style.transition = "0.3s";
  67. return btn;
  68. }
  69.  
  70. // Create buttons for features (hide menu option removed)
  71. let btnESP = createButton("toggleESP", "ESP: OFF");
  72. let btnSpinbot = createButton("toggleSpinbot", "Spinbot: OFF");
  73. let btnAimbot = createButton("toggleAimbot", "Aimbot: OFF");
  74. let btnExplosion = createButton("toggleExplosion", "Explosion Radius: ON");
  75. let btnGrenade = createButton("toggleGrenade", "Grenade Timer: ON");
  76. let btnHealth = createButton("toggleHealth", "Health Indicator: ON");
  77. let btnAdrenaline = createButton("toggleAdrenaline", "Adrenaline Indicator: ON");
  78. let btnLobbyBG = createButton("toggleBG", "Lobby Background: ON");
  79.  
  80. // Append buttons to the GUI
  81. gui.appendChild(btnESP);
  82. gui.appendChild(btnSpinbot);
  83. gui.appendChild(btnAimbot);
  84. gui.appendChild(btnExplosion);
  85. gui.appendChild(btnGrenade);
  86. gui.appendChild(btnHealth);
  87. gui.appendChild(btnAdrenaline);
  88. gui.appendChild(btnLobbyBG);
  89.  
  90. document.body.appendChild(gui);
  91.  
  92. // Toggle feature function
  93. function toggleFeature(name, button) {
  94. settings[name] = !settings[name];
  95. button.innerText = name.charAt(0).toUpperCase() + name.slice(1) + ": " + (settings[name] ? "ON" : "OFF");
  96. button.style.background = settings[name] ? "lime" : "#444";
  97. }
  98.  
  99. // Set event listeners for buttons
  100. btnESP.onclick = () => toggleFeature("esp", btnESP);
  101. btnSpinbot.onclick = () => toggleFeature("spinbot", btnSpinbot);
  102. btnAimbot.onclick = () => toggleFeature("aimbot", btnAimbot);
  103. btnExplosion.onclick = () => toggleFeature("explosionRadius", btnExplosion);
  104. btnGrenade.onclick = () => toggleFeature("grenadeTimer", btnGrenade);
  105. btnHealth.onclick = () => toggleFeature("healthIndicator", btnHealth);
  106. btnAdrenaline.onclick = () => toggleFeature("adrenalineIndicator", btnAdrenaline);
  107. btnLobbyBG.onclick = () => toggleFeature("lobbyBackground", btnLobbyBG);
  108. }
  109.  
  110. // Modify game functions: drawing ESP, aimbot, spinbot, grenade radius, etc.
  111. function modifyGame() {
  112. let canvas = document.querySelector("canvas");
  113. if (!canvas) return;
  114. let ctx = canvas.getContext("2d");
  115.  
  116. // Draw ESP boxes around enemies
  117. function drawESP(x, y, width, height, health) {
  118. ctx.strokeStyle = health > 50 ? "green" : "red";
  119. ctx.lineWidth = 2;
  120. ctx.strokeRect(x, y, width, height);
  121. }
  122.  
  123. // Draw grenade explosion radius (red circle)
  124. function drawGrenadeRadius(grenade) {
  125. ctx.beginPath();
  126. let radius = grenade.radius || 50; // default radius if not defined
  127. ctx.arc(grenade.x, grenade.y, radius, 0, 2 * Math.PI);
  128. ctx.strokeStyle = "red";
  129. ctx.lineWidth = 2;
  130. ctx.stroke();
  131. }
  132.  
  133. // Aimbot functionality
  134. function aimbot() {
  135. if (!settings.aimbot) return;
  136. if (typeof findEnemies !== "function" || typeof aimAt !== "function") return;
  137. let enemies = findEnemies();
  138. if (enemies.length > 0) {
  139. let closest = enemies.reduce((a, b) => (a.dist < b.dist ? a : b));
  140. aimAt(closest.x, closest.y);
  141. }
  142. }
  143.  
  144. // Spinbot functionality: rotates player continuously
  145. function spinbot() {
  146. if (!settings.spinbot) return;
  147. if (typeof player !== "undefined" && typeof player.angle === "number") {
  148. player.angle += 5; // adjust rotation speed as needed
  149. if (player.angle >= 360) player.angle -= 360;
  150. }
  151. }
  152.  
  153. // Main loop to update game modifications
  154. function loop() {
  155. // Draw ESP if enabled
  156. if (settings.esp && typeof findEnemies === "function") {
  157. let enemies = findEnemies();
  158. enemies.forEach(enemy => drawESP(enemy.x, enemy.y, 30, 30, enemy.health));
  159. }
  160. // Draw grenade explosion radius if enabled and function available
  161. if (settings.explosionRadius && typeof getGrenades === "function") {
  162. let grenades = getGrenades();
  163. grenades.forEach(grenade => drawGrenadeRadius(grenade));
  164. }
  165. // Update aimbot and spinbot
  166. aimbot();
  167. spinbot();
  168. requestAnimationFrame(loop);
  169. }
  170. loop();
  171. }
  172.  
  173. // Enhanced anti-detection measures
  174. function antiDetection() {
  175. // Remove our script tag from DOM to reduce detection risk
  176. if (document.currentScript) {
  177. document.currentScript.remove();
  178. }
  179. // Override certain functions to prevent detection of cheat activity
  180. let originalFetch = window.fetch;
  181. window.fetch = function(url, options) {
  182. if (url.includes("cheat_detect")) return new Promise(() => {});
  183. return originalFetch(url, options);
  184. };
  185. // Optionally, you can hide console logs
  186. console.log = function() {};
  187. }
  188.  
  189. // Add a dynamic kill counter that appears only when the game is active and resets after game ends
  190. function addKillCounter() {
  191. let counter = document.createElement("div");
  192. counter.id = "killCounter";
  193. counter.style.position = "fixed";
  194. counter.style.top = "10px";
  195. counter.style.left = "10px";
  196. counter.style.fontSize = "18px";
  197. counter.style.fontWeight = "bold";
  198. counter.style.color = "white";
  199. counter.style.background = "rgba(0, 0, 0, 0.7)";
  200. counter.style.padding = "5px 10px";
  201. counter.style.borderRadius = "5px";
  202. counter.style.boxShadow = "0px 0px 10px rgba(255, 0, 0, 0.7)";
  203. counter.style.display = "none"; // Hidden by default
  204. document.body.appendChild(counter);
  205.  
  206. let currentKills = 0;
  207. // Update kill counter every second
  208. setInterval(() => {
  209. // Check if game is active by testing if getPlayerKills is defined
  210. if (typeof getPlayerKills === "function") {
  211. let kills = getPlayerKills();
  212. // Show kill counter when game is active
  213. if (counter.style.display === "none") {
  214. counter.style.display = "block";
  215. }
  216. // Update only if kills have changed
  217. if (kills !== currentKills) {
  218. currentKills = kills;
  219. counter.innerText = "Kills: " + kills;
  220. }
  221. } else {
  222. // Game is not active; hide counter and reset kills
  223. if (counter.style.display !== "none") {
  224. counter.style.display = "none";
  225. currentKills = 0;
  226. }
  227. }
  228. }, 1000);
  229. }
  230.  
  231. // Wait for the game canvas to load before modifying game
  232. function waitForGame() {
  233. let checkInterval = setInterval(() => {
  234. let canvas = document.querySelector("canvas");
  235. if (canvas) {
  236. clearInterval(checkInterval);
  237. modifyGame();
  238. }
  239. }, 500);
  240. }
  241.  
  242. // Initialize everything on window load
  243. window.addEventListener("load", () => {
  244. createGUI();
  245. waitForGame();
  246. antiDetection();
  247. addKillCounter();
  248. });
  249. })();