Advanced Sploop.io Enhancements 2024

Very useful(FPS, Real time, help anti-clown 35%(beta), smart messages, playtime tracking, music control with repeat and click effects, JSON import)

2024-06-21 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Advanced Sploop.io Enhancements 2024
// @namespace    http://tampermonkey.net/
// @version      0.6
// @description  Very useful(FPS, Real time, help anti-clown 35%(beta), smart messages, playtime tracking, music control with repeat and click effects, JSON import)
// @author       avoidFPS
// @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;


    const controlPanel = document.createElement('div');
    controlPanel.style.position = 'fixed';
    controlPanel.style.top = '10px';
    controlPanel.style.left = '10px';
    controlPanel.style.color = 'white';
    controlPanel.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
    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 timezoneSelect = document.createElement('select');
    const timezones = [
        'UTC', 'America/New_York', 'America/Los_Angeles', 'Europe/London', 'Europe/Berlin', 'Asia/Tokyo', 'Australia/Sydney', 'Asia/Ho_Chi_Minh', 'Asia/Singapore'
    ];
    timezones.forEach(tz => {
        const option = document.createElement('option');
        option.value = tz;
        option.textContent = tz;
        timezoneSelect.appendChild(option);
    });
    controlPanel.appendChild(timezoneSelect);


    const fpsToggleLabel = document.createElement('label');
    fpsToggleLabel.textContent = ' Display FPS';
    const fpsToggleCheckbox = document.createElement('input');
    fpsToggleCheckbox.type = 'checkbox';
    fpsToggleCheckbox.checked = true;
    fpsToggleLabel.prepend(fpsToggleCheckbox);
    controlPanel.appendChild(fpsToggleLabel);


    const antiClownToggleLabel = document.createElement('label');
    antiClownToggleLabel.textContent = 'Feature Anti-clown';
    const antiClownToggleCheckbox = document.createElement('input');
    antiClownToggleCheckbox.type = 'checkbox';
    antiClownToggleCheckbox.checked = true;
    antiClownToggleLabel.prepend(antiClownToggleCheckbox);
    controlPanel.appendChild(antiClownToggleLabel);


    const gameStartTimeDisplay = document.createElement('div');
    gameStartTimeDisplay.textContent = 'Start time: no';
    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('Start calculating play time.');
    }


    function stopGameTime() {
        if (!gameStartTime) return;

        gameEndTime = new Date();
        clearInterval(gameInterval);
        const elapsedTime = gameEndTime - gameStartTime;
        const formattedTime = formatTime(elapsedTime);
        spawnSmartMessage(`Played for approx: ${formattedTime}`);
        gameStartTimeDisplay.textContent = `Played for approx: ${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 fpsDiv = document.createElement('div');
    fpsDiv.style.position = 'fixed';
    fpsDiv.style.top = '50px';
    fpsDiv.style.right = '10px';
    fpsDiv.style.color = 'white';
    fpsDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
    fpsDiv.style.padding = '5px';
    fpsDiv.style.fontFamily = 'Arial, sans-serif';
    fpsDiv.style.zIndex = '1000';
    document.body.appendChild(fpsDiv);

    let lastFrameTime = performance.now();
    let frameCount = 0;
    let fps = 0;

    function updateFPS() {
        if (!fpsToggleCheckbox.checked) {
            fpsDiv.style.display = 'none';
            requestAnimationFrame(updateFPS);
            return;
        }

        fpsDiv.style.display = 'block';
        const now = performance.now();
        frameCount++;
        const delta = now - lastFrameTime;

        if (delta >= 1000) {
            fps = (frameCount / delta) * 1000;
            frameCount = 0;
            lastFrameTime = now;
            fpsDiv.textContent = `FPS: ${fps.toFixed(2)}`;
        }

        requestAnimationFrame(updateFPS);
    }

    updateFPS();


    const timeDiv = document.createElement('div');
    timeDiv.style.position = 'fixed';
    timeDiv.style.bottom = '10px';
    timeDiv.style.right = '10px';
    timeDiv.style.color = 'white';
    timeDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
    timeDiv.style.padding = '5px';
    timeDiv.style.fontFamily = 'Arial, sans-serif';
    timeDiv.style.zIndex = '1000';
    document.body.appendChild(timeDiv);

    function updateTime() {
        const now = new Date();
        const options = {
            hour: '2-digit',
            minute: '2-digit',
            second: '2-digit',
            hour12: false,
            timeZone: timezoneSelect.value,
            timeZoneName: 'short'
        };
        const formattedTime = new Intl.DateTimeFormat('en-US', options).format(now);
        timeDiv.textContent = `Time: ${formattedTime}`;

        setTimeout(updateTime, 1000);
    }

    updateTime();


    document.addEventListener('keydown', function(event) {
        if (event.key === 'F1') {
            event.preventDefault();
            controlPanel.style.display = controlPanel.style.display === 'none' ? 'block' : 'none';
        }
    });


    document.addEventListener('keydown', function(event) {
        if (event.key === 'F5') {
            event.preventDefault();
            soundControlDiv.style.display = soundControlDiv.style.display === 'none' ? 'block' : 'none';
        }
    });


    let isDragging = false;
    let dragStartX, dragStartY;

    controlPanel.addEventListener('mousedown', function(event) {
        isDragging = true;
        dragStartX = event.clientX - controlPanel.offsetLeft;
        dragStartY = event.clientY - controlPanel.offsetTop;
        controlPanel.style.cursor = 'move';
    });

    document.addEventListener('mousemove', function(event) {
        if (isDragging) {
            controlPanel.style.left = `${event.clientX - dragStartX}px`;
            controlPanel.style.top = `${event.clientY - dragStartY}px`;
        }
    });

    document.addEventListener('mouseup', function() {
        isDragging = false;
        controlPanel.style.cursor = 'default';
    });


    function checkForBan() {

        const isBanned = false;

        if (isBanned) {
            alert('Warning: Potential ban activity detected!');
        }
    }

    setInterval(checkForBan, 5000);


    function checkForClown() {

        const isClownDetected = false;

        if (isClownDetected) {
            alert('Warning: Clown detected!');
        }
    }

    setInterval(() => {
        if (antiClownToggleCheckbox.checked) {
            checkForClown();
        }
    }, 5000);


    const soundControlDiv = document.createElement('div');
    soundControlDiv.style.position = 'fixed';
    soundControlDiv.style.bottom = '10px';
    soundControlDiv.style.left = '10px';
    soundControlDiv.style.color = 'white';
    soundControlDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
    soundControlDiv.style.padding = '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';
    soundFileInput.accept = 'audio/*';
    soundControlDiv.appendChild(soundFileInput);

    const soundPlayButton = document.createElement('button');
    soundPlayButton.textContent = 'Play';
    soundControlDiv.appendChild(soundPlayButton);

    const soundPauseButton = document.createElement('button');
    soundPauseButton.textContent = 'Pause';
    soundControlDiv.appendChild(soundPauseButton);

    const soundRepeatButton = document.createElement('button');
    soundRepeatButton.textContent = 'Repeat';
    soundControlDiv.appendChild(soundRepeatButton);

    const audio = new Audio();

    soundPlayButton.addEventListener('click', () => {
        if (soundUrlInput.value) {
            audio.src = soundUrlInput.value;
            audio.play();
        } else if (soundFileInput.files.length > 0) {
            const file = soundFileInput.files[0];
            const fileURL = URL.createObjectURL(file);
            audio.src = fileURL;
            audio.play();
        }
    });

    soundPauseButton.addEventListener('click', () => {
        audio.pause();
    });

    soundRepeatButton.addEventListener('click', () => {
        audio.loop = !audio.loop;
        soundRepeatButton.style.backgroundColor = audio.loop ? 'green' : '';
    });


    function applyRainbowColors(element) {
        const colors = [
            'red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'
        ];
        element.style.backgroundImage = `linear-gradient(135deg, ${colors.join(', ')})`;
    }

    applyRainbowColors(controlPanel);


    function spawnSmartMessage(message) {
        const messageDiv = document.createElement('div');
        messageDiv.textContent = message;
        messageDiv.style.position = 'fixed';
        messageDiv.style.bottom = '50%';
        messageDiv.style.left = '50%';
        messageDiv.style.transform = 'translate(-50%, -50%)';
        messageDiv.style.color = 'white';
        messageDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
        messageDiv.style.padding = '10px';
        messageDiv.style.borderRadius = '5px';
        messageDiv.style.fontFamily = 'Arial, sans-serif';
        messageDiv.style.zIndex = '1000';
        document.body.appendChild(messageDiv);

        setTimeout(() => {
            messageDiv.remove();
        }, 3000);
    }


    function handleChatMessage(event) {
        const message = event.data;

        if (message.startsWith('!spawn')) {
            const itemsToSpawn = message.replace('!spawn', '').trim();
            spawnContinuousMessages(itemsToSpawn);
        }
    }


    function spawnContinuousMessages(items) {
        const itemArray = items.split(',');

        itemArray.forEach(item => {
            spawnSmartMessage(`Spawning: ${item}`);
        });

        setTimeout(() => {
            spawnContinuousMessages(items);
        }, 5000);
    }


    window.addEventListener('message', handleChatMessage);


    document.addEventListener('click', (event) => {
        const clickEffect = document.createElement('div');
        clickEffect.style.position = 'absolute';
        clickEffect.style.width = '10px';
        clickEffect.style.height = '10px';
        clickEffect.style.backgroundColor = 'white';
        clickEffect.style.borderRadius = '50%';
        clickEffect.style.left = `${event.clientX}px`;
        clickEffect.style.top = `${event.clientY}px`;
        clickEffect.style.pointerEvents = 'none';
        clickEffect.style.zIndex = '1000';
        document.body.appendChild(clickEffect);

        setTimeout(() => {
            clickEffect.style.transform = 'scale(10)';
            clickEffect.style.opacity = '0';
            setTimeout(() => {
                clickEffect.remove();
            }, 300);
        }, 0);
    });


    const jsonFileInput = document.createElement('input');
    jsonFileInput.type = 'file';
    jsonFileInput.accept = 'application/json';
    jsonFileInput.style.marginTop = '10px';
    controlPanel.appendChild(jsonFileInput);

    jsonFileInput.addEventListener('change', (event) => {
        const file = event.target.files[0];
        if (file) {
            const reader = new FileReader();
            reader.onload = function(e) {
                const jsonData = e.target.result;
                localStorage.setItem('uploadedJson', jsonData);
                alert('JSON file saved. The page will now reload.');
                location.reload();
            };
            reader.readAsText(file);
        }
    });
})();