Greasy Fork

Greasy Fork is available in English.

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)

当前为 2024-06-23 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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!');
        }
    });
})();