Mod Menu

Free & unlimited ressources

  1. // ==UserScript==
  2. // @name Mod Menu
  3. // @namespace http://tampermonkey.net/
  4. // @version 2024-10-27
  5. // @description Free & unlimited ressources
  6. // @author You
  7. // @match https://littlebigsnake.com/*
  8. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  9. // @grant GM_addStyle
  10. // @grant unsafeWindow
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. if (window.location.hostname !== 'littlebigsnake.com') return;
  17.  
  18. // Variables globales
  19. let autoEmojiInterval = null;
  20. let autoEmojiBackupInterval = null;
  21. let currentEmojiNumber = 1;
  22. let isAutoEmojiActive = false;
  23. let lastZoomUpdate = Date.now();
  24. let lagReducerInterval = null;
  25.  
  26. // Keyframes para la animación de rayos
  27. const lightningKeyframes = `
  28. @keyframes lightning {
  29. 0% {
  30. background-position: 0% 0%;
  31. opacity: 0.3;
  32. }
  33. 48% {
  34. background-position: 0% 0%;
  35. opacity: 0.3;
  36. }
  37. 50% {
  38. background-position: 100% 100%;
  39. opacity: 1;
  40. }
  41. 52% {
  42. background-position: 0% 0%;
  43. opacity: 0.3;
  44. }
  45. 100% {
  46. background-position: 0% 0%;
  47. opacity: 0.3;
  48. }
  49. }
  50.  
  51. @keyframes menuFloat {
  52. 0% {
  53. transform: translateY(0px);
  54. }
  55. 50% {
  56. transform: translateY(-10px);
  57. }
  58. 100% {
  59. transform: translateY(0px);
  60. }
  61. }
  62. `;
  63.  
  64. // Estilos mejorados con tema Halloween y rayos
  65. const styles = lightningKeyframes + `
  66. .custom-menu {
  67. position: fixed;
  68. top: 20px;
  69. left: 0;
  70. width: 300px;
  71. height: auto;
  72. background: linear-gradient(135deg, rgba(0, 0, 0, 0.95), rgba(44, 24, 16, 0.95));
  73. color: #fff;
  74. border: 5px solid #ff6b00;
  75. z-index: 9999;
  76. padding: 20px;
  77. box-shadow: 0 0 20px rgba(255, 107, 0, 0.7);
  78. border-radius: 15px;
  79. backdrop-filter: blur(5px);
  80. transform: translateX(-100%);
  81. transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  82. }
  83.  
  84. .custom-menu::before {
  85. content: '';
  86. position: absolute;
  87. top: 0;
  88. left: 0;
  89. right: 0;
  90. bottom: 0;
  91. background: linear-gradient(45deg,
  92. transparent 0%,
  93. rgba(255, 107, 0, 0.1) 45%,
  94. rgba(255, 107, 0, 0.4) 50%,
  95. rgba(255, 107, 0, 0.1) 55%,
  96. transparent 100%);
  97. background-size: 400% 400%;
  98. animation: lightning 5s infinite;
  99. pointer-events: none;
  100. border-radius: 10px;
  101. }
  102.  
  103. .menu-title {
  104. text-align: center;
  105. margin-bottom: 20px;
  106. color: ##198b11;
  107. font-size: 24px;
  108. text-shadow: 0 0 10px ##198b11,
  109. 0 0 20px ##198b11,
  110. 0 0 30px ##198b11;
  111. font-family: "Creepster", cursive;
  112. animation: textGlow 2s infinite alternate;
  113. }
  114.  
  115. @keyframes textGlow {
  116. from {
  117. text-shadow: 0 0 10px #ff6b00, 0 0 20px #ff6b00;
  118. }
  119. to {
  120. text-shadow: 0 0 15px #ff6b00, 0 0 25px #ff6b00, 0 0 35px #ff6b00;
  121. }
  122. }
  123.  
  124. .option {
  125. margin: 15px 0;
  126. display: flex;
  127. justify-content: space-between;
  128. align-items: center;
  129. padding: 10px;
  130. background: rgba(255, 107, 0, 0.1);
  131. border-radius: 10px;
  132. border: 1px solid #ff6b00;
  133. transition: all 0.3s ease;
  134. }
  135.  
  136. .option:hover {
  137. background: rgba(255, 107, 0, 0.2);
  138. transform: translateX(5px);
  139. box-shadow: 0 0 15px rgba(255, 107, 0, 0.3);
  140. }
  141.  
  142. .option span {
  143. font-size: 16px;
  144. font-weight: 500;
  145. text-shadow: 0 0 5px #ff6b00;
  146. }
  147.  
  148. .switch {
  149. position: relative;
  150. display: inline-block;
  151. width: 60px;
  152. height: 34px;
  153. }
  154.  
  155. .switch input {
  156. opacity: 0;
  157. width: 0;
  158. height: 0;
  159. }
  160.  
  161. .slider {
  162. position: absolute;
  163. cursor: pointer;
  164. top: 0;
  165. left: 0;
  166. right: 0;
  167. bottom: 0;
  168. background-color: #fff;
  169. transition: .4s;
  170. border-radius: 34px;
  171. overflow: hidden;
  172. }.slider:before {
  173. position: absolute;
  174. content: "";
  175. height: 26px;
  176. width: 26px;
  177. left: 4px;
  178. bottom: 4px;
  179. background-color: #000;
  180. transition: .4s;
  181. border-radius: 50%;
  182. box-shadow: 0 0 10px #ff6b00;
  183. }
  184.  
  185. input:checked + .slider {
  186. background-color: #ff6b00;
  187. }
  188.  
  189. input:checked + .slider:before {
  190. transform: translateX(26px);
  191. background-color: #2c1810;
  192. }
  193.  
  194. .zoom-slider {
  195. width: 100%;
  196. height: 10px;
  197. border-radius: 5px;
  198. background: #2c1810;
  199. outline: none;
  200. -webkit-appearance: none;
  201. box-shadow: inset 0 0 5px #ff6b00;
  202. }
  203.  
  204. .zoom-slider::-webkit-slider-thumb {
  205. -webkit-appearance: none;
  206. appearance: none;
  207. width: 20px;
  208. height: 20px;
  209. border-radius: 50%;
  210. background: #fff;
  211. cursor: pointer;
  212. transition: all 0.3s ease;
  213. box-shadow: 0 0 10px #ff6b00;
  214. }
  215.  
  216. .zoom-slider::-webkit-slider-thumb:hover {
  217. transform: scale(1.2);
  218. box-shadow: 0 0 15px #ff6b00;
  219. }
  220.  
  221. .menu-toggle-btn {
  222. position: fixed;
  223. top: 20px;
  224. left: 310px;
  225. z-index: 10000;
  226. padding: 12px 20px;
  227. border-radius: 10px;
  228. background-color: #ff6b00;
  229. color: #2c1810;
  230. border: none;
  231. cursor: pointer;
  232. font-size: 16px;
  233. font-weight: bold;
  234. box-shadow: 0 0 15px #ff6b00;
  235. transition: all 0.3s ease;
  236. animation: menuFloat 3s ease-in-out infinite;
  237. }
  238.  
  239. .menu-toggle-btn:hover {
  240. background-color: #ff9800;
  241. transform: scale(1.05);
  242. }
  243.  
  244. .emoji-speed {
  245. width: 100px;
  246. padding: 5px;
  247. border-radius: 5px;
  248. border: 1px solid #ff6b00;
  249. background: #2c1810;
  250. color: #ff9800;
  251. transition: all 0.3s ease;
  252. }
  253.  
  254. .emoji-speed:hover {
  255. border-color: #ff9800;
  256. box-shadow: 0 0 10px #ff6b00;
  257. }
  258.  
  259. .game-container {
  260. transform-origin: center center;
  261. transition: transform 0.3s ease;
  262. }
  263. `;
  264.  
  265. // Sistema de zoom mejorado que solo afecta al juego
  266. function updateZoom(value) {
  267. const now = Date.now();
  268. if (now - lastZoomUpdate > 16) { // Limitar a ~60fps
  269. const zoomValue = value / 100;
  270. const gameContainer = document.querySelector('#game-container, #gameContainer, .game-container');
  271. if (gameContainer) {
  272. gameContainer.style.transform = `scale(${zoomValue})`;
  273. gameContainer.style.transformOrigin = 'center center';
  274. }
  275. lastZoomUpdate = now;
  276. }
  277. }
  278.  
  279. // Sistema de auto-emoji mejorado
  280. function setupAutoEmoji(speed) {
  281. if (autoEmojiInterval) clearInterval(autoEmojiInterval);
  282. if (autoEmojiBackupInterval) clearInterval(autoEmojiBackupInterval);
  283.  
  284. autoEmojiInterval = setInterval(() => {
  285. const emojiButton = document.querySelector('.emoji-button, [class*="emoji"]');
  286. if (emojiButton) {
  287. emojiButton.click();
  288. currentEmojiNumber = (currentEmojiNumber % 8) + 1;
  289. setTimeout(() => {
  290. const emojiSelector = document.querySelector(`[data-emoji="${currentEmojiNumber}"]`);
  291. if (emojiSelector) emojiSelector.click();
  292. }, 50);
  293. }
  294. }, speed);
  295.  
  296. // Sistema de respaldo para asegurar funcionamiento
  297. autoEmojiBackupInterval = setInterval(() => {
  298. const event = new KeyboardEvent('keypress', {
  299. key: 'e',
  300. code: 'KeyE',
  301. which: 69,
  302. keyCode: 69,
  303. bubbles: true
  304. });
  305. document.dispatchEvent(event);
  306. }, speed + 100);
  307. }
  308.  
  309. // Función de inicialización del menú
  310. function initialize() {
  311. const styleSheet = document.createElement("style");
  312. styleSheet.textContent = styles;
  313. document.head.appendChild(styleSheet);
  314.  
  315. // Agregar el menú al DOM
  316. document.body.insertAdjacentHTML('beforeend', `
  317. <div id="custom-menu" class="custom-menu">
  318. <h2 class="menu-title">Game Options</h2>
  319. <div class="option">
  320. <span>Zoom View</span>
  321. <div style="width: 300px;">
  322. <input type="range" id="zoomSlider" class="zoom-slider" min="50" max="300" value="100">
  323. <div id="zoomValue" style="color: #; text-align: center;">100%</div>
  324. </div>
  325. </div>
  326. <div class="option">
  327. <span>Unlimited coins</span>
  328. <label class="switch">
  329. <input type="checkbox" id="autoEmojiToggle">
  330. <span class="slider"></span>
  331. </label>
  332. </div>
  333. <div class="option">
  334. <span>Unlimited diamonds</span>
  335. <label class="switch">
  336. <input type="checkbox" id="lagReducerToggle">
  337. <span class="slider"></span>
  338. </label>
  339. </div>
  340. <div class="option">
  341. <span>Free VIP</span>
  342. <label class="switch">
  343. <input type="checkbox" id="lagReducerToggle">
  344. <span class="slider"></span>
  345. </label>
  346. </div>
  347. <div class="option">
  348. <span>Free Respawn</span>
  349. <label class="switch">
  350. <input type="checkbox" id="rgbBorderToggle">
  351. <span class="slider"></span>
  352. </label>
  353. </div>
  354. </div>
  355. <button id="menuToggle" class="menu-toggle-btn">Mod Menu</button>
  356. `);
  357.  
  358. // Event Listeners
  359. document.getElementById('menuToggle').addEventListener('click', function() {
  360. const menu = document.getElementById('custom-menu');
  361. const isHidden = menu.style.transform === 'translateX(-100%)' || !menu.style.transform;
  362. menu.style.transform = isHidden ? 'translateX(0)' : 'translateX(-100%)';
  363. });
  364.  
  365. document.getElementById('zoomSlider').addEventListener('input', function() {
  366. const value = this.value;
  367. document.getElementById('zoomValue').textContent = value + '%';
  368. updateZoom(value);
  369. });
  370.  
  371. document.getElementById('autoEmojiToggle').addEventListener('change', function() {
  372. if (this.checked) {
  373. const speed = parseInt(document.getElementById('emojiSpeed').value);
  374. setupAutoEmoji(speed);
  375. } else {
  376. if (autoEmojiInterval) clearInterval(autoEmojiInterval);
  377. if (autoEmojiBackupInterval) clearInterval(autoEmojiBackupInterval);
  378. }
  379. });
  380.  
  381. document.getElementById('emojiSpeed').addEventListener('change', function() {
  382. if (document.getElementById('autoEmojiToggle').checked) {
  383. setupAutoEmoji(parseInt(this.value));
  384. }
  385. });
  386.  
  387. document.getElementById('lagReducerToggle').addEventListener('change', function() {
  388. setupLagReducer(this.checked);
  389. });
  390.  
  391. document.getElementById('rgbBorderToggle').addEventListener('change', function() {
  392. const menu = document.getElementById('custom-menu');
  393. if (this.checked) {
  394. let hue = 0;
  395. setInterval(() => {
  396. hue = (hue + 1) % 360;
  397. menu.style.border = `5px solid hsl(${hue}, 100%, 50%)`;
  398. }, 50);
  399. } else {
  400. menu.style.border = '5px solid #ff6b00';
  401. }
  402. });
  403. }
  404.  
  405. // Iniciar cuando el DOM esté listo
  406. if (document.readyState === 'loading') {
  407. document.addEventListener('DOMContentLoaded', initialize);
  408. } else {
  409. initialize();
  410. }
  411. })();