Advanced Sploop.io Enhancements 2024!

Very useful (Real-time, help anti-clown, smart messages, playtime tracking, smart anti-ban, music playlist, intelligent player aiming.more.more)

  1. // ==UserScript==
  2. // @name Advanced Sploop.io Enhancements 2024!
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.3
  5. // @description Very useful (Real-time, help anti-clown, smart messages, playtime tracking, smart anti-ban, music playlist, intelligent player aiming.more.more)
  6. // @author avoidFPS
  7. // @require https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.1/underscore-min.js
  8. // @match *://sploop.io/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. function showSuccessMessage() {
  16. spawnSmartMessage('Script loaded successfully!');
  17. }
  18.  
  19. showSuccessMessage();
  20.  
  21. let gameStartTime = null;
  22. let gameEndTime = null;
  23. let gameInterval = null;
  24. let fpsInterval = null;
  25. let lastFrameTime = performance.now();
  26. let fpsDisplay = null;
  27. let timezoneDisplay = null;
  28. let selectedTimezone = 'Asia/Ho_Chi_Minh';
  29. let aimLockEnabled = false;
  30. let autoInstaEnabled = false;
  31. let aimSmartEnabled = false;
  32.  
  33. const timezones = {
  34. 'Vietnam': 'Asia/Ho_Chi_Minh',
  35. 'USA': 'America/New_York',
  36. 'Australia': 'Australia/Sydney',
  37. 'Japan': 'Asia/Tokyo'
  38. };
  39.  
  40. const controlPanel = document.createElement('div');
  41. controlPanel.style.position = 'fixed';
  42. controlPanel.style.top = '10px';
  43. controlPanel.style.left = '10px';
  44. controlPanel.style.color = 'white';
  45. controlPanel.style.background = 'linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet)';
  46. controlPanel.style.padding = '10px';
  47. controlPanel.style.borderRadius = '5px';
  48. controlPanel.style.fontFamily = 'Arial, sans-serif';
  49. controlPanel.style.zIndex = '1000';
  50. controlPanel.style.display = 'none';
  51. document.body.appendChild(controlPanel);
  52.  
  53. const antiClownToggleLabel = document.createElement('label');
  54. antiClownToggleLabel.textContent = ' Anti-clown feature';
  55. const antiClownToggleCheckbox = document.createElement('input');
  56. antiClownToggleCheckbox.type = 'checkbox';
  57. antiClownToggleCheckbox.checked = true;
  58. antiClownToggleLabel.prepend(antiClownToggleCheckbox);
  59. controlPanel.appendChild(antiClownToggleLabel);
  60.  
  61. const aimLockToggleLabel = document.createElement('label');
  62. aimLockToggleLabel.textContent = ' Aim Lock';
  63. const aimLockToggleCheckbox = document.createElement('input');
  64. aimLockToggleCheckbox.type = 'checkbox';
  65. aimLockToggleCheckbox.checked = false;
  66. aimLockToggleLabel.prepend(aimLockToggleCheckbox);
  67. controlPanel.appendChild(aimLockToggleLabel);
  68.  
  69. const aimSmartToggleLabel = document.createElement('label');
  70. aimSmartToggleLabel.textContent = ' Smart Aim';
  71. const aimSmartToggleCheckbox = document.createElement('input');
  72. aimSmartToggleCheckbox.type = 'checkbox';
  73. aimSmartToggleCheckbox.checked = false;
  74. aimSmartToggleLabel.prepend(aimSmartToggleCheckbox);
  75. controlPanel.appendChild(aimSmartToggleLabel);
  76.  
  77. const autoInstaToggleLabel = document.createElement('label');
  78. autoInstaToggleLabel.textContent = ' Auto Insta';
  79. const autoInstaToggleCheckbox = document.createElement('input');
  80. autoInstaToggleCheckbox.type = 'checkbox';
  81. autoInstaToggleCheckbox.checked = false;
  82. autoInstaToggleLabel.prepend(autoInstaToggleCheckbox);
  83. controlPanel.appendChild(autoInstaToggleLabel);
  84.  
  85. aimLockToggleCheckbox.addEventListener('change', function() {
  86. aimLockEnabled = this.checked;
  87. });
  88.  
  89. aimSmartToggleCheckbox.addEventListener('change', function() {
  90. aimSmartEnabled = this.checked;
  91. });
  92.  
  93. autoInstaToggleCheckbox.addEventListener('change', function() {
  94. autoInstaEnabled = this.checked;
  95. });
  96.  
  97. const timezoneSelectLabel = document.createElement('label');
  98. timezoneSelectLabel.textContent = ' Select Timezone:';
  99. controlPanel.appendChild(timezoneSelectLabel);
  100.  
  101. const timezoneSelect = document.createElement('select');
  102. for (const [region, timezone] of Object.entries(timezones)) {
  103. const option = document.createElement('option');
  104. option.value = timezone;
  105. option.textContent = region;
  106. timezoneSelect.appendChild(option);
  107. }
  108. timezoneSelect.value = selectedTimezone;
  109. controlPanel.appendChild(timezoneSelect);
  110.  
  111. timezoneSelect.addEventListener('change', function() {
  112. selectedTimezone = this.value;
  113. });
  114.  
  115. const gameStartTimeDisplay = document.createElement('div');
  116. gameStartTimeDisplay.textContent = 'Start Time: Not started';
  117. gameStartTimeDisplay.style.color = 'white';
  118. gameStartTimeDisplay.style.fontFamily = 'Arial, sans-serif';
  119. controlPanel.appendChild(gameStartTimeDisplay);
  120.  
  121. const startButton = document.createElement('button');
  122. startButton.textContent = 'Start';
  123. startButton.style.marginTop = '10px';
  124. controlPanel.appendChild(startButton);
  125.  
  126. const stopButton = document.createElement('button');
  127. stopButton.textContent = 'Stop';
  128. stopButton.style.marginTop = '10px';
  129. stopButton.style.marginLeft = '5px';
  130. controlPanel.appendChild(stopButton);
  131.  
  132. startButton.addEventListener('click', function() {
  133. startGameTime();
  134. });
  135.  
  136. stopButton.addEventListener('click', function() {
  137. stopGameTime();
  138. });
  139.  
  140. function startGameTime() {
  141. gameStartTime = new Date();
  142. if (gameInterval) clearInterval(gameInterval);
  143. gameInterval = setInterval(updateGameTimeDisplay, 1000);
  144. spawnSmartMessage('Started game time tracking.');
  145. }
  146.  
  147. function stopGameTime() {
  148. if (!gameStartTime) return;
  149.  
  150. gameEndTime = new Date();
  151. clearInterval(gameInterval);
  152. const elapsedTime = gameEndTime - gameStartTime;
  153. const formattedTime = formatTime(elapsedTime);
  154. gameStartTimeDisplay.textContent = `Played for: ${formattedTime}`;
  155. gameStartTime = null;
  156. }
  157.  
  158. function updateGameTimeDisplay() {
  159. if (!gameStartTime) return;
  160.  
  161. const elapsedTime = new Date() - gameStartTime;
  162. const formattedTime = formatTime(elapsedTime);
  163. gameStartTimeDisplay.textContent = `Start Time: ${formattedTime}`;
  164. }
  165.  
  166. function formatTime(ms) {
  167. const seconds = Math.floor(ms / 1000);
  168. const hours = Math.floor(seconds / 3600);
  169. const minutes = Math.floor((seconds % 3600) / 60);
  170. const remainingSeconds = seconds % 60;
  171. return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
  172. }
  173.  
  174. const soundControlDiv = document.createElement('div');
  175. soundControlDiv.style.position = 'fixed';
  176. soundControlDiv.style.bottom = '10px';
  177. soundControlDiv.style.left = '10px';
  178. soundControlDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
  179. soundControlDiv.style.color = 'white';
  180. soundControlDiv.style.padding = '10px';
  181. soundControlDiv.style.borderRadius = '5px';
  182. soundControlDiv.style.fontFamily = 'Arial, sans-serif';
  183. soundControlDiv.style.zIndex = '1000';
  184. soundControlDiv.style.display = 'none';
  185. document.body.appendChild(soundControlDiv);
  186.  
  187. const soundUrlInput = document.createElement('input');
  188. soundUrlInput.type = 'text';
  189. soundUrlInput.placeholder = 'Enter sound URL';
  190. soundControlDiv.appendChild(soundUrlInput);
  191.  
  192. const soundFileInput = document.createElement('input');
  193. soundFileInput.type = 'file';
  194. soundControlDiv.appendChild(soundFileInput);
  195.  
  196. const playButton = document.createElement('button');
  197. playButton.textContent = 'Play';
  198. soundControlDiv.appendChild(playButton);
  199.  
  200. const pauseButton = document.createElement('button');
  201. pauseButton.textContent = 'Pause';
  202. soundControlDiv.appendChild(pauseButton);
  203.  
  204. const repeatButton = document.createElement('button');
  205. repeatButton.textContent = 'Repeat';
  206. soundControlDiv.appendChild(repeatButton);
  207.  
  208. const playlist = document.createElement('div');
  209. playlist.style.marginTop = '10px';
  210. soundControlDiv.appendChild(playlist);
  211.  
  212. let audio = new Audio();
  213. let repeat = false;
  214.  
  215. playButton.addEventListener('click', function() {
  216. const url = soundUrlInput.value;
  217. const file = soundFileInput.files[0];
  218.  
  219. if (file) {
  220. const reader = new FileReader();
  221. reader.onload = function(e) {
  222. audio.src = e.target.result;
  223. audio.play();
  224. };
  225. reader.readAsDataURL(file);
  226. } else if (url) {
  227. audio.src = url;
  228. audio.play();
  229. }
  230. });
  231.  
  232. pauseButton.addEventListener('click', function() {
  233. audio.pause();
  234. });
  235.  
  236. repeatButton.addEventListener('click', function() {
  237. repeat = !repeat;
  238. repeatButton.style.backgroundColor = repeat ? 'green' : '';
  239. });
  240.  
  241. audio.addEventListener('ended', function() {
  242. if (repeat) {
  243. audio.currentTime = 0;
  244. audio.play();
  245. }
  246. });
  247.  
  248. function checkForBan() {
  249. // Placeholder for ban detection logic
  250. console.log('Checking for ban...');
  251. }
  252.  
  253. setInterval(checkForBan, 3000);
  254.  
  255. const fpsElement = document.createElement('div');
  256. fpsElement.style.position = 'fixed';
  257. fpsElement.style.top = '10px';
  258. fpsElement.style.left = '50%';
  259. fpsElement.style.transform = 'translateX(-50%)';
  260. fpsElement.style.color = 'white';
  261. fpsElement.style.fontFamily = 'Arial, sans-serif';
  262. fpsElement.style.fontSize = '20px';
  263. fpsElement.style.zIndex = '1000';
  264. document.body.appendChild(fpsElement);
  265.  
  266. const timezoneElement = document.createElement('div');
  267. timezoneElement.style.position = 'fixed';
  268. timezoneElement.style.top = '40px';
  269. timezoneElement.style.left = '50%';
  270. timezoneElement.style.transform = 'translateX(-50%)';
  271. timezoneElement.style.color = 'white';
  272. timezoneElement.style.fontFamily = 'Arial, sans-serif';
  273. timezoneElement.style.fontSize = '20px';
  274. timezoneElement.style.zIndex = '1000';
  275. document.body.appendChild(timezoneElement);
  276.  
  277. function updateFPS() {
  278. const now = performance.now();
  279. const delta = now - lastFrameTime;
  280. const fps = 1000 / delta;
  281. lastFrameTime = now;
  282. fpsElement.textContent = `FPS: ${Math.round(fps)}`;
  283. requestAnimationFrame(updateFPS);
  284. }
  285.  
  286. function updateTimezones() {
  287. const now = new Date();
  288. timezoneElement.textContent = `Time (${selectedTimezone}): ${now.toLocaleString('en-US', { timeZone: selectedTimezone })}`;
  289. }
  290.  
  291. updateFPS();
  292. setInterval(updateTimezones, 1000);
  293.  
  294. const fpsColorInput = document.createElement('input');
  295. fpsColorInput.type = 'color';
  296. fpsColorInput.value = '#FFFFFF';
  297. fpsColorInput.addEventListener('change', function() {
  298. fpsElement.style.color = this.value;
  299. });
  300. controlPanel.appendChild(fpsColorInput);
  301.  
  302. const timezoneColorInput = document.createElement('input');
  303. timezoneColorInput.type = 'color';
  304. timezoneColorInput.value = '#FFFFFF';
  305. timezoneColorInput.addEventListener('change', function() {
  306. timezoneElement.style.color = this.value;
  307. });
  308. controlPanel.appendChild(timezoneColorInput);
  309.  
  310. const fileManagementPanel = document.createElement('div');
  311. fileManagementPanel.style.marginTop = '10px';
  312. controlPanel.appendChild(fileManagementPanel);
  313.  
  314. const jsonFileInput = document.createElement('input');
  315. jsonFileInput.type = 'file';
  316. jsonFileInput.accept = 'application/json';
  317. fileManagementPanel.appendChild(jsonFileInput);
  318.  
  319. const loadButton = document.createElement('button');
  320. loadButton.textContent = 'Load JSON';
  321. fileManagementPanel.appendChild(loadButton);
  322.  
  323. const saveButton = document.createElement('button');
  324. saveButton.textContent = 'Save JSON';
  325. fileManagementPanel.appendChild(saveButton);
  326.  
  327. const deleteButton = document.createElement('button');
  328. deleteButton.textContent = 'Delete JSON';
  329. fileManagementPanel.appendChild(deleteButton);
  330.  
  331. const runButton = document.createElement('button');
  332. runButton.textContent = 'Run JSON';
  333. fileManagementPanel.appendChild(runButton);
  334.  
  335. loadButton.addEventListener('click', function() {
  336. const file = jsonFileInput.files[0];
  337. if (!file) {
  338. alert('No file selected');
  339. return;
  340. }
  341.  
  342. const reader = new FileReader();
  343. reader.onload = function(e) {
  344. const json = JSON.parse(e.target.result);
  345. console.log('Loaded JSON:', json);
  346. };
  347. reader.readAsText(file);
  348. });
  349.  
  350. saveButton.addEventListener('click', function() {
  351. const data = {
  352. };
  353.  
  354. const json = JSON.stringify(data);
  355. const blob = new Blob([json], { type: 'application/json' });
  356. const url = URL.createObjectURL(blob);
  357. const a = document.createElement('a');
  358. a.href = url;
  359. a.download = 'data.json';
  360. a.click();
  361. });
  362.  
  363. deleteButton.addEventListener('click', function() {
  364. console.log('Deleted JSON');
  365. });
  366.  
  367. runButton.addEventListener('click', function() {
  368. const file = jsonFileInput.files[0];
  369. if (!file) {
  370. alert('No file selected');
  371. return;
  372. }
  373.  
  374. const reader = new FileReader();
  375. reader.onload = function(e) {
  376. const json = JSON.parse(e.target.result);
  377. console.log('Running JSON:', json);
  378. executeJsonCommands(json);
  379. };
  380. reader.readAsText(file);
  381. });
  382.  
  383. function executeJsonCommands(json) {
  384. console.log('Executing commands from JSON:', json);
  385. // Example: if json has commands like { "action": "move", "x": 10, "y": 20 }
  386. if (json.action === 'move') {
  387. moveCharacter(json.x, json.y);
  388. }
  389. }
  390.  
  391. function moveCharacter(x, y) {
  392. // Implement the logic to move the character to x, y coordinates
  393. console.log(`Moving character to X: ${x}, Y: ${y}`);
  394. // Update coordinates display
  395. updateCoordinates(x, y);
  396. }
  397.  
  398. const messagingPanel = document.createElement('div');
  399. messagingPanel.style.marginTop = '10px';
  400. controlPanel.appendChild(messagingPanel);
  401.  
  402. const messageInput = document.createElement('input');
  403. messageInput.type = 'text';
  404. messageInput.placeholder = 'Enter message';
  405. messagingPanel.appendChild(messageInput);
  406.  
  407. const messageFileInput = document.createElement('input');
  408. messageFileInput.type = 'file';
  409. messageFileInput.accept = 'text/plain';
  410. messagingPanel.appendChild(messageFileInput);
  411.  
  412. const startMessagingButton = document.createElement('button');
  413. startMessagingButton.textContent = 'Start Messaging';
  414. messagingPanel.appendChild(startMessagingButton);
  415.  
  416. const stopMessagingButton = document.createElement('button');
  417. stopMessagingButton.textContent = 'Stop Messaging';
  418. messagingPanel.appendChild(stopMessagingButton);
  419.  
  420. let messagingInterval = null;
  421.  
  422. startMessagingButton.addEventListener('click', function() {
  423. const message = messageInput.value;
  424. if (messageFileInput.files.length > 0) {
  425. const file = messageFileInput.files[0];
  426. const reader = new FileReader();
  427. reader.onload = function(e) {
  428. startMessaging(e.target.result);
  429. };
  430. reader.readAsText(file);
  431. } else if (message) {
  432. startMessaging(message);
  433. }
  434. });
  435.  
  436. stopMessagingButton.addEventListener('click', function() {
  437. stopMessaging();
  438. });
  439.  
  440. function startMessaging(message) {
  441. stopMessaging();
  442. messagingInterval = setInterval(function() {
  443. sendMessageToGame(message);
  444. }, 1000);
  445. }
  446.  
  447. function stopMessaging() {
  448. clearInterval(messagingInterval);
  449. }
  450.  
  451. function sendMessageToGame(message) {
  452. console.log(`Sending message: ${message}`);
  453. }
  454.  
  455. function spawnSmartMessage(message) {
  456. const msgElement = document.createElement('div');
  457. msgElement.textContent = message;
  458. msgElement.style.position = 'fixed';
  459. msgElement.style.bottom = '50%';
  460. msgElement.style.left = '50%';
  461. msgElement.style.transform = 'translate(-50%, -50%)';
  462. msgElement.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
  463. msgElement.style.color = 'white';
  464. msgElement.style.padding = '10px';
  465. msgElement.style.borderRadius = '5px';
  466. msgElement.style.zIndex = '1000';
  467. document.body.appendChild(msgElement);
  468.  
  469. setTimeout(function() {
  470. document.body.removeChild(msgElement);
  471. }, 3000);
  472. }
  473.  
  474. const coordinatesDisplay = document.createElement('div');
  475. coordinatesDisplay.style.position = 'fixed';
  476. coordinatesDisplay.style.bottom = '10px';
  477. coordinatesDisplay.style.right = '10px';
  478. coordinatesDisplay.style.color = 'white';
  479. coordinatesDisplay.style.fontFamily = 'Arial, sans-serif';
  480. coordinatesDisplay.style.fontSize = '20px';
  481. coordinatesDisplay.style.zIndex = '1000';
  482. document.body.appendChild(coordinatesDisplay);
  483.  
  484. function updateCoordinates(x, y) {
  485. coordinatesDisplay.textContent = `X: ${x}, Y: ${y}`;
  486. }
  487.  
  488. document.addEventListener('keydown', function(e) {
  489. if (e.key === 'F1' || e.key === 'F2' || e.key === 'F5') {
  490. e.preventDefault();
  491. }
  492. });
  493.  
  494. document.addEventListener('keydown', function(e) {
  495. if (e.key === 'F1') {
  496. controlPanel.style.display = controlPanel.style.display === 'none' ? 'block' : 'none';
  497. } else if (e.key === 'F5') {
  498. soundControlDiv.style.display = soundControlDiv.style.display === 'none' ? 'block' : 'none';
  499. } else if (e.key === 'B') {
  500. timezoneElement.style.display = timezoneElement.style.display === 'none' ? 'block' : 'none';
  501. }
  502. });
  503.  
  504. setInterval(function() {
  505. const x = Math.floor(Math.random() * 100);
  506. const y = Math.floor(Math.random() * 100);
  507. updateCoordinates(x, y);
  508. }, 1000);
  509.  
  510. document.addEventListener('DOMContentLoaded', function() {
  511. if (window.location.pathname === '/') {
  512. alert('Welcome to the Advanced Sploop.io Enhancements script!');
  513. }
  514. });
  515. })();
  516.