Anime Chat Cringe Troll Popup (Multi-Style Otaku Edition - Random CSS & Delays)

Zeigt im Anime-Chat ein einzelnes, nerviges Popup an – mit dynamischen Textwechseln, diversen Popup-Styles, einem flüssig fliehenden Close-Button, zufälligen CSS-Änderungen an der gesamten Website und verzögerten Popup-/Sound-Intervallen (10-30 Minuten) sowie CSS-Änderungen (5-10 Minuten).

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/530069/1555371/Anime%20Chat%20Cringe%20Troll%20Popup%20%28Multi-Style%20Otaku%20Edition%20-%20Random%20CSS%20%20Delays%29.js

// ==UserScript==
// @name         Anime Chat Cringe Troll Popup (Multi-Style Otaku Edition - Random CSS & Delays)
// @namespace    http://tampermonkey.net/
// @version      2.2.3
// @description  Zeigt im Anime-Chat ein einzelnes, nerviges Popup an – mit dynamischen Textwechseln, diversen Popup-Styles, einem flüssig fliehenden Close-Button, zufälligen CSS-Änderungen an der gesamten Website und verzögerten Popup-/Sound-Intervallen (10-30 Minuten) sowie CSS-Änderungen (5-10 Minuten).
// @author       
// @license      MIT
// @match        https://anime.academy/chat*
// @match        https://anime.academy/profile/*
// @include      /^https?:\/\/(www\.)?tandro\.de\/.*/
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // CSS-Animationen injizieren
    const style = document.createElement('style');
    style.textContent = `
    @keyframes blink {
        0% { opacity: 1; }
        50% { opacity: 0.5; }
        100% { opacity: 1; }
    }
    @keyframes shake {
        0% { transform: translate(-50%, -50%) translate(0, 0); }
        25% { transform: translate(-50%, -50%) translate(5px, -5px); }
        50% { transform: translate(-50%, -50%) translate(0, 0); }
        75% { transform: translate(-50%, -50%) translate(-5px, 5px); }
        100% { transform: translate(-50%, -50%) translate(0, 0); }
    }
    @keyframes floatAround {
        0% { top: 10%; left: 10%; }
        25% { top: 10%; left: 80%; }
        50% { top: 80%; left: 80%; }
        75% { top: 80%; left: 10%; }
        100% { top: 10%; left: 10%; }
    }
    @keyframes spin {
        from { transform: translate(-50%, -50%) rotate(0deg); }
        to { transform: translate(-50%, -50%) rotate(360deg); }
    }
    @keyframes pulse {
        0% { transform: translate(-50%, -50%) scale(1); }
        50% { transform: translate(-50%, -50%) scale(1.2); }
        100% { transform: translate(-50%, -50%) scale(1); }
    }
    @keyframes bounce {
        0% { transform: translate(-50%, -50%) translateY(0); }
        50% { transform: translate(-50%, -50%) translateY(-30px); }
        100% { transform: translate(-50%, -50%) translateY(0); }
    }
    @keyframes wobble {
        0% { transform: translate(-50%, -50%) rotate(0deg) scale(1); }
        25% { transform: translate(-50%, -50%) rotate(3deg) scale(1.1); }
        50% { transform: translate(-50%, -50%) rotate(0deg) scale(1); }
        75% { transform: translate(-50%, -50%) rotate(-3deg) scale(0.9); }
        100% { transform: translate(-50%, -50%) rotate(0deg) scale(1); }
    }
    `;
    document.head.appendChild(style);

    // Verschiedene Popup-Styles mit unterschiedlichen Bewegungsmustern
    const popupStyles = [
        {
            position: 'fixed',
            top: '50%',
            left: '50%',
            transform: 'translate(-50%, -50%)',
            backgroundColor: '#1e1e1e',
            color: '#f0f0f0',
            padding: '30px',
            border: '3px solid hotpink',
            borderRadius: '10px',
            textAlign: 'center',
            fontSize: '22px',
            fontWeight: 'bold',
            boxShadow: '0 0 20px hotpink',
            animation: 'blink 0.5s infinite alternate, shake 0.5s infinite'
        },
        {
            position: 'fixed',
            top: '10%',
            left: '10%',
            backgroundColor: '#000',
            color: '#ff0',
            padding: '40px',
            border: '5px dotted lime',
            borderRadius: '5px',
            textAlign: 'center',
            fontSize: '24px',
            fontWeight: '900',
            boxShadow: '0 0 30px lime',
            animation: 'floatAround 12s linear infinite'
        },
        {
            position: 'fixed',
            top: '50%',
            left: '50%',
            transform: 'translate(-50%, -50%)',
            backgroundColor: '#ff00ff',
            color: '#000',
            padding: '20px',
            border: '4px double #00f',
            borderRadius: '15px',
            textAlign: 'center',
            fontSize: '20px',
            fontWeight: 'bold',
            boxShadow: '0 0 25px #00f',
            animation: 'spin 4s linear infinite'
        },
        {
            position: 'fixed',
            top: '50%',
            left: '50%',
            transform: 'translate(-50%, -50%)',
            backgroundColor: '#ff6347',
            color: '#fff',
            padding: '35px',
            border: '3px solid #000',
            borderRadius: '8px',
            textAlign: 'center',
            fontSize: '23px',
            fontWeight: 'bold',
            boxShadow: '0 0 25px #ff6347',
            animation: 'pulse 1.5s ease-in-out infinite'
        },
        {
            position: 'fixed',
            top: '50%',
            left: '50%',
            transform: 'translate(-50%, -50%)',
            backgroundColor: '#ff1493',
            color: '#000',
            padding: '40px',
            border: '4px dashed #fff',
            borderRadius: '20px',
            textAlign: 'center',
            fontSize: '26px',
            fontWeight: 'bold',
            boxShadow: '0 0 30px #ff1493',
            animation: 'bounce 1s ease-in-out infinite'
        },
        {
            position: 'fixed',
            top: '50%',
            left: '50%',
            transform: 'translate(-50%, -50%)',
            backgroundColor: '#222',
            color: '#39ff14',
            padding: '35px',
            border: '3px solid #39ff14',
            borderRadius: '8px',
            textAlign: 'center',
            fontSize: '22px',
            fontWeight: 'bold',
            boxShadow: '0 0 25px #39ff14',
            animation: 'wobble 2s ease-in-out infinite'
        }
    ];

    // Erweiterte Sound-Arrays
    const openSounds = [
        'https://www.myinstants.com/media/sounds/vine-boom.mp3',
        'https://www.myinstants.com/media/sounds/airhorn.mp3',
        'https://www.myinstants.com/media/sounds/anime-scream.mp3',
        'https://www.myinstants.com/media/sounds/otaku-alert.mp3',
        'https://www.myinstants.com/media/sounds/anime-wow.mp3',
        'https://www.myinstants.com/media/sounds/nani.mp3',
        'https://www.myinstants.com/media/sounds/anime-laugh.mp3',
        'https://www.myinstants.com/media/sounds/chibi-beep.mp3'
    ];
    const closeSounds = [
        'https://www.myinstants.com/media/sounds/metal-pipe.mp3',
        'https://www.myinstants.com/media/sounds/sad-trombone.mp3',
        'https://www.myinstants.com/media/sounds/anime-magic.mp3',
        'https://www.myinstants.com/media/sounds/anime-fail.mp3',
        'https://www.myinstants.com/media/sounds/anime-disappoint.mp3',
        'https://www.myinstants.com/media/sounds/boing.mp3',
        'https://www.myinstants.com/media/sounds/anime-cry.mp3',
        'https://www.myinstants.com/media/sounds/otaku-shrug.mp3'
    ];
    const annoyingSounds = [
        'https://www.myinstants.com/media/sounds/airhorn.mp3',
        'https://www.myinstants.com/media/sounds/sad-trombone.mp3',
        'https://www.myinstants.com/media/sounds/vine-boom.mp3',
        'https://www.myinstants.com/media/sounds/anime-scream.mp3',
        'https://www.myinstants.com/media/sounds/anime-alert.mp3',
        'https://www.myinstants.com/media/sounds/boing.mp3',
        'https://www.myinstants.com/media/sounds/nani.mp3',
        'https://www.myinstants.com/media/sounds/chibi-beep.mp3',
        'https://www.myinstants.com/media/sounds/anime-laugh.mp3'
    ];

    // Cringe Otaku Nachrichten
    const messages = [
        { text: 'OMG, dein Chat ist so cringe – total otaku, total kawaii, Senpai approved!', buttonText: 'LOL, genug!' },
        { text: 'Onii-chan, dein Style ist mega weird und cringe – pure Otaku-Power, aber bitte stopp das!', buttonText: 'Ich kann nicht mehr!' },
        { text: 'Konnichiwa, cringe-otaku! Dein Chat-Vibe ist der absolute Shit – so weird, so fresh, so cringe!', buttonText: 'Stoppt den Wahnsinn!' },
        { text: 'Sugoi! Dein Chat ist cringe AF – ein totaler Anime-Fail, aber wir feiern den Vibe!', buttonText: 'Enough already!' },
        { text: 'Baka! Dein Vibe ist so cringe, dass sogar die Chibi-Charaktere erröten – total otaku!', buttonText: 'Cut it out!' },
        { text: 'Watashi wa cringe desu! Dein Chat ist der absolute Overload an Otaku-Cringe!', buttonText: 'I can’t even!' },
        { text: 'Hentai? Nein, es ist nur dein ultra-cringe, over-the-top Otaku-Style – einfach next level!', buttonText: 'Genug jetzt!' }
    ];

    // Hilfsfunktion: Spielt zufällig einen Sound
    function playRandomSound(soundArray) {
        const soundUrl = soundArray[Math.floor(Math.random() * soundArray.length)];
        new Audio(soundUrl).play();
    }
    function playOpenSound() { playRandomSound(openSounds); }
    function playCloseSound() { playRandomSound(closeSounds); }

    let annoyingSoundInterval;
    function startAnnoyingSounds() {
        annoyingSoundInterval = setInterval(() => {
            playRandomSound(annoyingSounds);
        }, 3000);
    }
    function stopAnnoyingSounds() {
        clearInterval(annoyingSoundInterval);
    }

    // Zufällige CSS-Änderungen an der gesamten Seite (alle 5-10 Minuten)
    function randomizeSiteCSS() {
        const option = Math.floor(Math.random() * 5);
        switch(option) {
            case 0:
                document.body.style.filter = `hue-rotate(${Math.floor(Math.random() * 360)}deg)`;
                break;
            case 1:
                document.body.style.fontSize = (Math.floor(Math.random() * 9) + 16) + 'px';
                break;
            case 2:
                document.body.style.letterSpacing = Math.floor(Math.random() * 6) + 'px';
                break;
            case 3:
                document.body.style.backgroundColor = '#' + Math.floor(Math.random() * 16777215).toString(16);
                break;
            case 4:
                document.body.style.opacity = (Math.random() * 0.5 + 0.5).toFixed(2);
                break;
        }
    }
    function scheduleRandomizeSiteCSS() {
        randomizeSiteCSS();
        const delay = Math.floor(Math.random() * (10 - 5 + 1) + 5) * 60000;
        setTimeout(scheduleRandomizeSiteCSS, delay);
    }
    scheduleRandomizeSiteCSS();

    // Zusätzliche Textinjektion in die Website
    function injectRandomText() {
        const injected = document.createElement('div');
        const textOptions = [
            "Extra cringe Nachricht!",
            "Otaku takeover!",
            "Nani? WTF!",
            "Senpai, notice me!",
            "Kawaii but cringe!",
            "Baka, so annoying!"
        ];
        injected.innerText = textOptions[Math.floor(Math.random() * textOptions.length)];
        injected.style.position = 'fixed';
        injected.style.top = Math.floor(Math.random() * 100) + '%';
        injected.style.left = Math.floor(Math.random() * 100) + '%';
        injected.style.zIndex = '10002';
        injected.style.color = '#' + Math.floor(Math.random() * 16777215).toString(16);
        injected.style.fontSize = (Math.floor(Math.random() * 10) + 16) + 'px';
        injected.style.pointerEvents = 'none';
        document.body.appendChild(injected);
        injected.style.transition = 'opacity 2s';
        setTimeout(() => { injected.style.opacity = '0'; }, 3000);
        setTimeout(() => { if(document.body.contains(injected)) { injected.remove(); } }, 5000);
    }
    setInterval(injectRandomText, 7000);

    // --- Helper: Ensure Popup stays within viewport ---
    function ensurePopupInViewport(popup) {
        const rect = popup.getBoundingClientRect();
        let newTop = rect.top;
        let newLeft = rect.left;
        if (rect.top < 0) newTop = 0;
        if (rect.left < 0) newLeft = 0;
        if (rect.right > window.innerWidth) newLeft = window.innerWidth - rect.width;
        if (rect.bottom > window.innerHeight) newTop = window.innerHeight - rect.height;
        popup.style.top = newTop + 'px';
        popup.style.left = newLeft + 'px';
        // Remove any translate transform so the element is positioned in pixels
        popup.style.transform = '';
    }

    // Funktion zum Erstellen eines Popups
    function showPopup() {
        playOpenSound();
        startAnnoyingSounds();

        // Overlay erstellen
        const overlay = document.createElement('div');
        overlay.style.position = 'fixed';
        overlay.style.top = '0';
        overlay.style.left = '0';
        overlay.style.width = '100%';
        overlay.style.height = '100%';
        overlay.style.backgroundColor = 'rgba(255, 0, 0, 0.3)';
        overlay.style.zIndex = '9999';
        overlay.style.animation = 'blink 0.5s infinite alternate';
        document.body.appendChild(overlay);

        // Zufällig eine Nachricht und einen Style auswählen
        const selectedMessage = messages[Math.floor(Math.random() * messages.length)];
        const selectedStyle = popupStyles[Math.floor(Math.random() * popupStyles.length)];

        // Popup erstellen und Style anwenden
        const popup = document.createElement('div');
        if (!selectedStyle.transform) {
            popup.style.transform = 'translate(-50%, -50%)';
        }
        if (!selectedStyle.animation.includes('floatAround')) {
            popup.style.top = '50%';
            popup.style.left = '50%';
        }
        for (const prop in selectedStyle) {
            popup.style[prop] = selectedStyle[prop];
        }
        popup.style.overflow = 'visible';
        popup.style.zIndex = '10000';

        // Nachricht mit dynamischem Text
        const messageElem = document.createElement('p');
        messageElem.innerText = selectedMessage.text;
        popup.appendChild(messageElem);
        const textInterval = setInterval(() => {
            messageElem.innerText = messages[Math.floor(Math.random() * messages.length)].text;
        }, 3000);
        popup.dataset.textInterval = textInterval;

        // Close-Button mit dynamisch fließendem Verhalten
        const closeButton = document.createElement('button');
        closeButton.innerText = selectedMessage.buttonText;
        closeButton.style.marginTop = '20px';
        closeButton.style.padding = '12px 25px';
        closeButton.style.border = 'none';
        closeButton.style.backgroundColor = 'hotpink';
        closeButton.style.color = '#fff';
        closeButton.style.cursor = 'pointer';
        closeButton.style.borderRadius = '5px';
        closeButton.style.fontSize = '20px';
        closeButton.style.position = 'absolute';
        closeButton.style.left = '50%';
        closeButton.style.top = '70%';
        closeButton.addEventListener('mouseover', () => {
            const randomSpeed = (Math.random() * 0.7 + 0.3).toFixed(2);
            closeButton.style.transition = `transform ${randomSpeed}s ease-out`;
            const offsetX = Math.floor(Math.random() * 300) - 150;
            const offsetY = Math.floor(Math.random() * 300) - 150;
            closeButton.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
        });
        closeButton.addEventListener('click', () => {
            clearInterval(textInterval);
            popup.remove();
            overlay.remove();
            stopAnnoyingSounds();
            playCloseSound();
            const delay = Math.floor(Math.random() * (30 - 10 + 1) + 10) * 60000;
            setTimeout(showPopup, delay);
        });
        popup.appendChild(closeButton);

        document.body.appendChild(popup);
        ensurePopupInViewport(popup);
    }

    // Starte das erste Popup
    showPopup();

    // Expose a console command for testing: call "showTestPopup()" to trigger a new popup immediately.
    window.showTestPopup = showPopup;
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址