Swordz.io Mod Pack 2

Cleans up your game, also has a spam bot feature. Look at the collapsable UI at the bottom right!

目前為 2025-02-22 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Swordz.io Mod Pack 2
// @namespace    intuxs
// @version      1.2
// @description  Cleans up your game, also has a spam bot feature. Look at the collapsable UI at the bottom right!
// @author       YourName
// @match        *.swordz.io
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // ==========================================
    // Ad and UI Cleanup Functionality
    // ==========================================

    var hideBoxesEnabled = false; // Toggle hide boxes on/off
    var showPauseEnabled = false; // Toggle show pause on/off
    var showCoinsEnabled = false; // Toggle show coins on/off

    // Store original styles for elements
    const originalStyles = new Map();

    // Function to hide ads
    function hideAds() {
        if (!hideBoxesEnabled) return; // Only hide ads if hideBoxesEnabled is true
        const ads = document.querySelectorAll('div[style*="background-color"], iframe, img[src*="ads"]');
        ads.forEach(ad => {
            if (ad.offsetWidth > 0 && ad.offsetHeight > 0 && !ad.classList.contains('custom-ui')) { // Skip custom UI elements
                originalStyles.set(ad, { display: ad.style.display, visibility: ad.style.visibility });
                ad.style.display = 'none';
                console.log('Ad hidden:', ad);
            }
        });
    }

    // Function to hide specific elements on the top left
    function hideTopLeftElements() {
        if (!hideBoxesEnabled) return; // Only hide elements if hideBoxesEnabled is true
        const elementsToHide = [
            { id: 'buttonFullscreenImage', type: 'img' },
            { id: 'buttonFullscreen', type: 'div' },
            { id: 'buttonMusicImage', type: 'img' },
            { id: 'buttonMusic', type: 'div' },
            { id: 'buttonPauseImage', type: 'img' },
            { id: 'buttonPause', type: 'div' },
            { id: 'buttonSoundImage', type: 'img' },
            { id: 'buttonSound', type: 'div' }
        ];

        elementsToHide.forEach(element => {
            const el = document.getElementById(element.id);
            if (el && !el.classList.contains('custom-ui')) { // Skip custom UI elements
                originalStyles.set(el, { display: el.style.display, visibility: el.style.visibility });
                el.style.visibility = 'hidden';
            }
        });
    }

    // Function to hide the coins display
    function hideCoinsDisplay() {
        if (!hideBoxesEnabled) return; // Only hide coins if hideBoxesEnabled is true
        const coinsText = document.getElementById('coinsText');
        if (coinsText && !coinsText.classList.contains('custom-ui')) { // Skip custom UI elements
            originalStyles.set(coinsText, { display: coinsText.style.display, visibility: coinsText.style.visibility });
            coinsText.style.visibility = 'hidden';
        }

        const coinsIcon = document.querySelector('img[src*="coins.png"]');
        if (coinsIcon && !coinsIcon.classList.contains('custom-ui')) { // Skip custom UI elements
            originalStyles.set(coinsIcon, { display: coinsIcon.style.display, visibility: coinsIcon.style.visibility });
            coinsIcon.style.visibility = 'hidden';
        }
    }

    // Function to hide the YouTube wrapper and big box on the bottom right
    function hideYouTubeWrapperAndBigBox() {
        if (!hideBoxesEnabled) return; // Only hide if hideBoxesEnabled is true

        // Hide YouTube wrapper
        const youtubeWrapper = document.querySelector('.youtube-wrapper'); // Adjust selector if needed
        if (youtubeWrapper && !youtubeWrapper.classList.contains('custom-ui')) { // Skip custom UI elements
            originalStyles.set(youtubeWrapper, { display: youtubeWrapper.style.display, visibility: youtubeWrapper.style.visibility });
            youtubeWrapper.style.visibility = 'hidden';
        }

        // Hide big box on the bottom right
        const bigBox = document.querySelector('.big-box'); // Adjust selector if needed
        if (bigBox && !bigBox.classList.contains('custom-ui')) { // Skip custom UI elements
            originalStyles.set(bigBox, { display: bigBox.style.display, visibility: bigBox.style.visibility });
            bigBox.style.visibility = 'hidden';
        }
    }

    // Function to show hidden elements
    function showHiddenElements() {
        // Restore original styles for all elements except the UI we created
        originalStyles.forEach((styles, element) => {
            if (element && !element.classList.contains('custom-ui')) { // Skip custom UI elements
                element.style.display = styles.display;
                element.style.visibility = styles.visibility;
            }
        });

        // Clear the original styles map
        originalStyles.clear();
    }

    // Function to toggle pause button visibility
    function togglePauseButton() {
        const buttonPause = document.getElementById('buttonPause');
        const buttonPauseImage = document.getElementById('buttonPauseImage');

        if (buttonPause && buttonPauseImage) {
            if (showPauseEnabled) {
                buttonPause.style.visibility = 'visible';
                buttonPauseImage.style.visibility = 'visible';
            } else {
                buttonPause.style.visibility = 'hidden';
                buttonPauseImage.style.visibility = 'hidden';
            }
        }
    }

    // Function to toggle coins visibility
    function toggleCoinsDisplay() {
        const coinsText = document.getElementById('coinsText');
        const coinsIcon = document.querySelector('img[src*="coins.png"]');

        if (coinsText && coinsIcon) {
            if (showCoinsEnabled) {
                coinsText.style.visibility = 'visible';
                coinsIcon.style.visibility = 'visible';
            } else {
                coinsText.style.visibility = 'hidden';
                coinsIcon.style.visibility = 'hidden';
            }
        }
    }

    // ==========================================
    // AI Spam Bot Functionality
    // ==========================================

    var spam = false; // Toggle spam on/off
    var spamMessage = "Subscribe to richupi YT!"; // Default spam message

    // Function to send spam messages
    function spamChat() {
        if (spam) {
            const message = input.value.trim() !== '' ? input.value : spamMessage;
            console.log('Sending message:', message);

            try {
                socket.emit('keyPressX', {
                    inputId: 'chatMessage',
                    state: message
                });
                console.log('Message sent successfully!');
            } catch (error) {
                console.error('Error sending message:', error);
            }
        }
    }

    // ==========================================
    // Toggle UI Functionality
    // ==========================================

    // Create a UI container at the bottom left
    const uiContainer = document.createElement('div');
    uiContainer.style.position = 'fixed';
    uiContainer.style.bottom = '10px';
    uiContainer.style.left = '10px';
    uiContainer.style.zIndex = '9999';
    uiContainer.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
    uiContainer.style.padding = '10px';
    uiContainer.style.borderRadius = '10px';
    uiContainer.style.color = '#fff';
    uiContainer.style.fontFamily = 'Montserrat, Arial, sans-serif';
    uiContainer.style.transition = 'transform 0.3s ease';
    uiContainer.classList.add('custom-ui'); // Add a class to identify our custom UI
    document.body.appendChild(uiContainer);

    // Create an arrow button to hide/show the UI
    const arrowButton = document.createElement('div');
    arrowButton.textContent = '◄'; // Arrow pointing left
    arrowButton.style.position = 'fixed';
    arrowButton.style.bottom = '20px';
    arrowButton.style.left = '10px';
    arrowButton.style.zIndex = '10000';
    arrowButton.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
    arrowButton.style.color = 'lightblue'; // Changed from white to light blue
    arrowButton.style.padding = '10px';
    arrowButton.style.borderRadius = '50%';
    arrowButton.style.cursor = 'pointer';
    arrowButton.style.userSelect = 'none';
    arrowButton.style.transition = 'transform 0.3s ease';
    arrowButton.classList.add('custom-ui'); // Add a class to identify our custom UI
    document.body.appendChild(arrowButton);

    // Toggle UI visibility
    let uiVisible = true;
    arrowButton.addEventListener('click', () => {
        uiVisible = !uiVisible;
        if (uiVisible) {
            uiContainer.style.transform = 'translateX(0)';
            arrowButton.style.transform = 'rotate(0deg)';
            arrowButton.textContent = '◄'; // Arrow pointing left
        } else {
            uiContainer.style.transform = 'translateX(-110%)';
            arrowButton.style.transform = 'rotate(180deg)';
            arrowButton.textContent = '►'; // Arrow pointing right
        }
    });

    // Spam Bot Toggle
    const spamBotLabel = document.createElement('div');
    spamBotLabel.textContent = 'Spam Bot [1]';
    spamBotLabel.style.color = '#ffa500'; // Orange when off
    spamBotLabel.style.fontSize = '14px';
    spamBotLabel.style.fontWeight = 'bold';
    spamBotLabel.style.marginBottom = '10px';
    spamBotLabel.style.cursor = 'pointer';
    uiContainer.appendChild(spamBotLabel);

    // Hide Boxes Toggle
    const hideBoxesLabel = document.createElement('div');
    hideBoxesLabel.textContent = 'Hide Boxes [2]';
    hideBoxesLabel.style.color = '#ffa500'; // Orange when off
    hideBoxesLabel.style.fontSize = '14px';
    hideBoxesLabel.style.fontWeight = 'bold';
    hideBoxesLabel.style.marginBottom = '10px';
    hideBoxesLabel.style.cursor = 'pointer';
    uiContainer.appendChild(hideBoxesLabel);

    // Show Pause Toggle
    const showPauseLabel = document.createElement('div');
    showPauseLabel.textContent = 'Show Pause [3]';
    showPauseLabel.style.color = '#ffa500'; // Orange when off
    showPauseLabel.style.fontSize = '14px';
    showPauseLabel.style.fontWeight = 'bold';
    showPauseLabel.style.marginBottom = '10px';
    showPauseLabel.style.cursor = 'pointer';
    uiContainer.appendChild(showPauseLabel);

    // Show Coins Toggle
    const showCoinsLabel = document.createElement('div');
    showCoinsLabel.textContent = 'Show Coins [4]';
    showCoinsLabel.style.color = '#ffa500'; // Orange when off
    showCoinsLabel.style.fontSize = '14px';
    showCoinsLabel.style.fontWeight = 'bold';
    showCoinsLabel.style.marginBottom = '10px';
    showCoinsLabel.style.cursor = 'pointer';
    uiContainer.appendChild(showCoinsLabel);

    // Input for custom spam message
    const input = document.createElement('input');
    input.style.width = '100%';
    input.style.marginTop = '10px';
    input.style.height = '25px';
    input.style.borderRadius = '5px';
    input.style.backgroundColor = '#222';
    input.style.color = '#fff';
    input.style.border = '1px solid #555';
    input.style.padding = '5px';
    input.placeholder = 'Enter spam message';
    uiContainer.appendChild(input);

    // Toggle Spam Bot with '1' key
    document.addEventListener('keydown', function (e) {
        if (e.key === '1') { // '1' key to toggle spam bot
            spam = !spam;
            spamBotLabel.textContent = `Spam Bot [1] ${spam ? 'ON' : 'OFF'}`;
            spamBotLabel.style.color = spam ? '#32CD32' : '#ffa500'; // Lime green when on, orange when off
            console.log(`Spam Bot ${spam ? 'enabled' : 'disabled'}`);
        }
    });

    // Toggle Hide Boxes with '2' key
    document.addEventListener('keydown', function (e) {
        if (e.key === '2') { // '2' key to toggle hide boxes
            hideBoxesEnabled = !hideBoxesEnabled;
            hideBoxesLabel.textContent = `Hide Boxes [2] ${hideBoxesEnabled ? 'ON' : 'OFF'}`;
            hideBoxesLabel.style.color = hideBoxesEnabled ? '#32CD32' : '#ffa500'; // Lime green when on, orange when off
            console.log(`Hide Boxes ${hideBoxesEnabled ? 'enabled' : 'disabled'}`);

            if (hideBoxesEnabled) {
                hideAds();
                hideTopLeftElements();
                hideCoinsDisplay();
                hideYouTubeWrapperAndBigBox();
            } else {
                showHiddenElements();
            }
        }
    });

    // Toggle Show Pause with '3' key
    document.addEventListener('keydown', function (e) {
        if (e.key === '3') { // '3' key to toggle show pause
            showPauseEnabled = !showPauseEnabled;
            showPauseLabel.textContent = `Show Pause [3] ${showPauseEnabled ? 'ON' : 'OFF'}`;
            showPauseLabel.style.color = showPauseEnabled ? '#32CD32' : '#ffa500'; // Lime green when on, orange when off
            console.log(`Show Pause ${showPauseEnabled ? 'enabled' : 'disabled'}`);
            togglePauseButton();
        }
    });

    // Toggle Show Coins with '4' key
    document.addEventListener('keydown', function (e) {
        if (e.key === '4') { // '4' key to toggle show coins
            showCoinsEnabled = !showCoinsEnabled;
            showCoinsLabel.textContent = `Show Coins [4] ${showCoinsEnabled ? 'ON' : 'OFF'}`;
            showCoinsLabel.style.color = showCoinsEnabled ? '#32CD32' : '#ffa500'; // Lime green when on, orange when off
            console.log(`Show Coins ${showCoinsEnabled ? 'enabled' : 'disabled'}`);
            toggleCoinsDisplay();
        }
    });

    // Continuously send spam messages
    setInterval(spamChat, 1000);
})();