// ==UserScript==
// @name Advanced Sploop.io Enhancements 2024!
// @namespace http://tampermonkey.net/
// @version 2.5
// @description Very useful (Real-time, help anti-clown, smart messages, playtime tracking, smart anti-ban, music playlist, intelligent player aiming.more.more)
// @author avoidFPS
// @require https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.1/underscore-min.js
// @match *://sploop.io/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function showSuccessMessage() {
spawnSmartMessage('Script loaded successfully!');
}
showSuccessMessage();
let gameStartTime = null;
let gameEndTime = null;
let gameInterval = null;
let fpsInterval = null;
let lastFrameTime = performance.now();
let fpsDisplay = null;
let timezoneDisplay = null;
let selectedTimezone = 'Asia/Ho_Chi_Minh';
let aimLockEnabled = false;
let autoInstaEnabled = false;
let aimSmartEnabled = false;
const timezones = {
'Vietnam': 'Asia/Ho_Chi_Minh',
'USA': 'America/New_York',
'Australia': 'Australia/Sydney',
'Japan': 'Asia/Tokyo'
};
const controlPanel = document.createElement('div');
controlPanel.style.position = 'fixed';
controlPanel.style.top = '10px';
controlPanel.style.left = '10px';
controlPanel.style.color = 'white';
controlPanel.style.background = 'linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet)';
controlPanel.style.padding = '10px';
controlPanel.style.borderRadius = '5px';
controlPanel.style.fontFamily = 'Arial, sans-serif';
controlPanel.style.zIndex = '1000';
controlPanel.style.display = 'none';
document.body.appendChild(controlPanel);
const antiClownToggleLabel = document.createElement('label');
antiClownToggleLabel.textContent = ' Anti-clown feature';
const antiClownToggleCheckbox = document.createElement('input');
antiClownToggleCheckbox.type = 'checkbox';
antiClownToggleCheckbox.checked = true;
antiClownToggleLabel.prepend(antiClownToggleCheckbox);
controlPanel.appendChild(antiClownToggleLabel);
const aimLockToggleLabel = document.createElement('label');
aimLockToggleLabel.textContent = ' Aim Lock';
const aimLockToggleCheckbox = document.createElement('input');
aimLockToggleCheckbox.type = 'checkbox';
aimLockToggleCheckbox.checked = false;
aimLockToggleLabel.prepend(aimLockToggleCheckbox);
controlPanel.appendChild(aimLockToggleLabel);
const aimSmartToggleLabel = document.createElement('label');
aimSmartToggleLabel.textContent = ' Smart Aim';
const aimSmartToggleCheckbox = document.createElement('input');
aimSmartToggleCheckbox.type = 'checkbox';
aimSmartToggleCheckbox.checked = false;
aimSmartToggleLabel.prepend(aimSmartToggleCheckbox);
controlPanel.appendChild(aimSmartToggleLabel);
const autoInstaToggleLabel = document.createElement('label');
autoInstaToggleLabel.textContent = ' Auto Insta';
const autoInstaToggleCheckbox = document.createElement('input');
autoInstaToggleCheckbox.type = 'checkbox';
autoInstaToggleCheckbox.checked = false;
autoInstaToggleLabel.prepend(autoInstaToggleCheckbox);
controlPanel.appendChild(autoInstaToggleLabel);
aimLockToggleCheckbox.addEventListener('change', function() {
aimLockEnabled = this.checked;
});
aimSmartToggleCheckbox.addEventListener('change', function() {
aimSmartEnabled = this.checked;
});
autoInstaToggleCheckbox.addEventListener('change', function() {
autoInstaEnabled = this.checked;
});
const timezoneSelectLabel = document.createElement('label');
timezoneSelectLabel.textContent = ' Select Timezone:';
controlPanel.appendChild(timezoneSelectLabel);
const timezoneSelect = document.createElement('select');
for (const [region, timezone] of Object.entries(timezones)) {
const option = document.createElement('option');
option.value = timezone;
option.textContent = region;
timezoneSelect.appendChild(option);
}
timezoneSelect.value = selectedTimezone;
controlPanel.appendChild(timezoneSelect);
timezoneSelect.addEventListener('change', function() {
selectedTimezone = this.value;
});
const gameStartTimeDisplay = document.createElement('div');
gameStartTimeDisplay.textContent = 'Start Time: Not started';
gameStartTimeDisplay.style.color = 'white';
gameStartTimeDisplay.style.fontFamily = 'Arial, sans-serif';
controlPanel.appendChild(gameStartTimeDisplay);
const startButton = document.createElement('button');
startButton.textContent = 'Start';
startButton.style.marginTop = '10px';
controlPanel.appendChild(startButton);
const stopButton = document.createElement('button');
stopButton.textContent = 'Stop';
stopButton.style.marginTop = '10px';
stopButton.style.marginLeft = '5px';
controlPanel.appendChild(stopButton);
startButton.addEventListener('click', function() {
startGameTime();
});
stopButton.addEventListener('click', function() {
stopGameTime();
});
function startGameTime() {
gameStartTime = new Date();
if (gameInterval) clearInterval(gameInterval);
gameInterval = setInterval(updateGameTimeDisplay, 1000);
spawnSmartMessage('Started game time tracking.');
}
function stopGameTime() {
if (!gameStartTime) return;
gameEndTime = new Date();
clearInterval(gameInterval);
const elapsedTime = gameEndTime - gameStartTime;
const formattedTime = formatTime(elapsedTime);
gameStartTimeDisplay.textContent = `Played for: ${formattedTime}`;
gameStartTime = null;
}
function updateGameTimeDisplay() {
if (!gameStartTime) return;
const elapsedTime = new Date() - gameStartTime;
const formattedTime = formatTime(elapsedTime);
gameStartTimeDisplay.textContent = `Start Time: ${formattedTime}`;
}
function formatTime(ms) {
const seconds = Math.floor(ms / 1000);
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const remainingSeconds = seconds % 60;
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
}
const soundControlDiv = document.createElement('div');
soundControlDiv.style.position = 'fixed';
soundControlDiv.style.bottom = '10px';
soundControlDiv.style.left = '10px';
soundControlDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
soundControlDiv.style.color = 'white';
soundControlDiv.style.padding = '10px';
soundControlDiv.style.borderRadius = '5px';
soundControlDiv.style.fontFamily = 'Arial, sans-serif';
soundControlDiv.style.zIndex = '1000';
soundControlDiv.style.display = 'none';
document.body.appendChild(soundControlDiv);
const soundUrlInput = document.createElement('input');
soundUrlInput.type = 'text';
soundUrlInput.placeholder = 'Enter sound URL';
soundControlDiv.appendChild(soundUrlInput);
const soundFileInput = document.createElement('input');
soundFileInput.type = 'file';
soundControlDiv.appendChild(soundFileInput);
const playButton = document.createElement('button');
playButton.textContent = 'Play';
soundControlDiv.appendChild(playButton);
const pauseButton = document.createElement('button');
pauseButton.textContent = 'Pause';
soundControlDiv.appendChild(pauseButton);
const repeatButton = document.createElement('button');
repeatButton.textContent = 'Repeat';
soundControlDiv.appendChild(repeatButton);
const playlist = document.createElement('div');
playlist.style.marginTop = '10px';
soundControlDiv.appendChild(playlist);
let audio = new Audio();
let repeat = false;
playButton.addEventListener('click', function() {
const url = soundUrlInput.value;
const file = soundFileInput.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
audio.src = e.target.result;
audio.play();
};
reader.readAsDataURL(file);
} else if (url) {
audio.src = url;
audio.play();
}
});
pauseButton.addEventListener('click', function() {
audio.pause();
});
repeatButton.addEventListener('click', function() {
repeat = !repeat;
repeatButton.style.backgroundColor = repeat ? 'green' : '';
});
audio.addEventListener('ended', function() {
if (repeat) {
audio.currentTime = 0;
audio.play();
}
});
function checkForBan() {
// Placeholder for ban detection logic
console.log('Checking for ban...');
}
setInterval(checkForBan, 3000);
const fpsElement = document.createElement('div');
fpsElement.style.position = 'fixed';
fpsElement.style.top = '10px';
fpsElement.style.left = '50%';
fpsElement.style.transform = 'translateX(-50%)';
fpsElement.style.color = 'white';
fpsElement.style.fontFamily = 'Arial, sans-serif';
fpsElement.style.fontSize = '20px';
fpsElement.style.zIndex = '1000';
document.body.appendChild(fpsElement);
const timezoneElement = document.createElement('div');
timezoneElement.style.position = 'fixed';
timezoneElement.style.top = '40px';
timezoneElement.style.left = '50%';
timezoneElement.style.transform = 'translateX(-50%)';
timezoneElement.style.color = 'white';
timezoneElement.style.fontFamily = 'Arial, sans-serif';
timezoneElement.style.fontSize = '20px';
timezoneElement.style.zIndex = '1000';
document.body.appendChild(timezoneElement);
function updateFPS() {
const now = performance.now();
const delta = now - lastFrameTime;
const fps = 1000 / delta;
lastFrameTime = now;
fpsElement.textContent = `FPS: ${Math.round(fps)}`;
requestAnimationFrame(updateFPS);
}
function updateTimezones() {
const now = new Date();
timezoneElement.textContent = `Time (${selectedTimezone}): ${now.toLocaleString('en-US', { timeZone: selectedTimezone })}`;
}
updateFPS();
setInterval(updateTimezones, 1000);
const fpsColorInput = document.createElement('input');
fpsColorInput.type = 'color';
fpsColorInput.value = '#FFFFFF';
fpsColorInput.addEventListener('change', function() {
fpsElement.style.color = this.value;
});
controlPanel.appendChild(fpsColorInput);
const timezoneColorInput = document.createElement('input');
timezoneColorInput.type = 'color';
timezoneColorInput.value = '#FFFFFF';
timezoneColorInput.addEventListener('change', function() {
timezoneElement.style.color = this.value;
});
controlPanel.appendChild(timezoneColorInput);
const fileManagementPanel = document.createElement('div');
fileManagementPanel.style.marginTop = '10px';
controlPanel.appendChild(fileManagementPanel);
const jsonFileInput = document.createElement('input');
jsonFileInput.type = 'file';
jsonFileInput.accept = 'application/json';
fileManagementPanel.appendChild(jsonFileInput);
const loadButton = document.createElement('button');
loadButton.textContent = 'Load JSON';
fileManagementPanel.appendChild(loadButton);
const saveButton = document.createElement('button');
saveButton.textContent = 'Save JSON';
fileManagementPanel.appendChild(saveButton);
const deleteButton = document.createElement('button');
deleteButton.textContent = 'Delete JSON';
fileManagementPanel.appendChild(deleteButton);
const runButton = document.createElement('button');
runButton.textContent = 'Run JSON';
fileManagementPanel.appendChild(runButton);
loadButton.addEventListener('click', function() {
const file = jsonFileInput.files[0];
if (!file) {
alert('No file selected');
return;
}
const reader = new FileReader();
reader.onload = function(e) {
const json = JSON.parse(e.target.result);
console.log('Loaded JSON:', json);
};
reader.readAsText(file);
});
saveButton.addEventListener('click', function() {
const data = {
};
const json = JSON.stringify(data);
const blob = new Blob([json], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'data.json';
a.click();
});
deleteButton.addEventListener('click', function() {
console.log('Deleted JSON');
});
runButton.addEventListener('click', function() {
const file = jsonFileInput.files[0];
if (!file) {
alert('No file selected');
return;
}
const reader = new FileReader();
reader.onload = function(e) {
const json = JSON.parse(e.target.result);
console.log('Running JSON:', json);
executeJsonCommands(json);
};
reader.readAsText(file);
});
function executeJsonCommands(json) {
console.log('Executing commands from JSON:', json);
// Example: if json has commands like { "action": "move", "x": 10, "y": 20 }
if (json.action === 'move') {
moveCharacter(json.x, json.y);
}
}
function moveCharacter(x, y) {
// Implement the logic to move the character to x, y coordinates
console.log(`Moving character to X: ${x}, Y: ${y}`);
// Update coordinates display
updateCoordinates(x, y);
}
const messagingPanel = document.createElement('div');
messagingPanel.style.marginTop = '10px';
controlPanel.appendChild(messagingPanel);
const messageInput = document.createElement('input');
messageInput.type = 'text';
messageInput.placeholder = 'Enter message';
messagingPanel.appendChild(messageInput);
const messageFileInput = document.createElement('input');
messageFileInput.type = 'file';
messageFileInput.accept = 'text/plain';
messagingPanel.appendChild(messageFileInput);
const startMessagingButton = document.createElement('button');
startMessagingButton.textContent = 'Start Messaging';
messagingPanel.appendChild(startMessagingButton);
const stopMessagingButton = document.createElement('button');
stopMessagingButton.textContent = 'Stop Messaging';
messagingPanel.appendChild(stopMessagingButton);
let messagingInterval = null;
startMessagingButton.addEventListener('click', function() {
const message = messageInput.value;
if (messageFileInput.files.length > 0) {
const file = messageFileInput.files[0];
const reader = new FileReader();
reader.onload = function(e) {
startMessaging(e.target.result);
};
reader.readAsText(file);
} else if (message) {
startMessaging(message);
}
});
stopMessagingButton.addEventListener('click', function() {
stopMessaging();
});
function startMessaging(message) {
stopMessaging();
messagingInterval = setInterval(function() {
sendMessageToGame(message);
}, 1000);
}
function stopMessaging() {
clearInterval(messagingInterval);
}
function sendMessageToGame(message) {
console.log(`Sending message: ${message}`);
}
function spawnSmartMessage(message) {
const msgElement = document.createElement('div');
msgElement.textContent = message;
msgElement.style.position = 'fixed';
msgElement.style.bottom = '50%';
msgElement.style.left = '50%';
msgElement.style.transform = 'translate(-50%, -50%)';
msgElement.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
msgElement.style.color = 'white';
msgElement.style.padding = '10px';
msgElement.style.borderRadius = '5px';
msgElement.style.zIndex = '1000';
document.body.appendChild(msgElement);
setTimeout(function() {
document.body.removeChild(msgElement);
}, 3000);
}
const coordinatesDisplay = document.createElement('div');
coordinatesDisplay.style.position = 'fixed';
coordinatesDisplay.style.bottom = '10px';
coordinatesDisplay.style.right = '10px';
coordinatesDisplay.style.color = 'white';
coordinatesDisplay.style.fontFamily = 'Arial, sans-serif';
coordinatesDisplay.style.fontSize = '20px';
coordinatesDisplay.style.zIndex = '1000';
document.body.appendChild(coordinatesDisplay);
function updateCoordinates(x, y) {
coordinatesDisplay.textContent = `X: ${x}, Y: ${y}`;
}
document.addEventListener('keydown', function(e) {
if (e.key === 'F1' || e.key === 'F2' || e.key === 'F5') {
e.preventDefault();
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'F1') {
controlPanel.style.display = controlPanel.style.display === 'none' ? 'block' : 'none';
} else if (e.key === 'F5') {
soundControlDiv.style.display = soundControlDiv.style.display === 'none' ? 'block' : 'none';
} else if (e.key === 'B') {
timezoneElement.style.display = timezoneElement.style.display === 'none' ? 'block' : 'none';
}
});
setInterval(function() {
const x = Math.floor(Math.random() * 100);
const y = Math.floor(Math.random() * 100);
updateCoordinates(x, y);
}, 1000);
document.addEventListener('DOMContentLoaded', function() {
if (window.location.pathname === '/') {
alert('Welcome to the Advanced Sploop.io Enhancements script!');
}
});
})();