Drawaria Hacker Accounts

Access to Drawaria accounts! Use this script to access accounts and add hacked ones too.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Drawaria Hacker Accounts
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  Access to Drawaria accounts! Use this script to access accounts and add hacked ones too.
// @author       YouTubeDrawaria
// @match        https://drawaria.online/*
// @grant        GM_addStyle
// @license      MIT
// @icon         https://www.google.com/s2/favicons?sz=64&domain=drawaria.online
// ==/UserScript==

(function() {
    'use strict';

    // Predefined accounts
    const DEFAULT_ACCOUNTS = [
        {
            email: "[email protected]",
            password: "12200ahh"
        },
        {
            email: "[email protected]",
            password: "keykey07"
        },
        {
            email: "[email protected]",
            password: "tr0llingwiththis"
        }
    ];

    const STORAGE_KEY = 'drawaria_manager_accounts';
    let currentAccounts = [];

    const LOADING_MESSAGES = [
        "Injecting source code...",
        "Hacking Drawaria mainframe...",
        "Searching for fun bits...",
        "Jumping firewalls with style...",
        "Unlocking the password vault...",
        "Loading login matrix...",
        "Almost ready for action...",
        "Bingo! Connection established..."
    ];
    let loadingInterval;
    let loadingMessageIndex = 0;

    // Data Management Functions
    function loadAccounts() {
        const storedData = localStorage.getItem(STORAGE_KEY);
        if (storedData) {
            try {
                return JSON.parse(storedData);
            } catch (e) {
                console.error("Error parsing accounts from localStorage:", e);
                return JSON.parse(JSON.stringify(DEFAULT_ACCOUNTS));
            }
        }
        return JSON.parse(JSON.stringify(DEFAULT_ACCOUNTS));
    }

    function saveAccounts(accountsToSave) {
        localStorage.setItem(STORAGE_KEY, JSON.stringify(accountsToSave));
    }

    function addAccount(email, password) {
        currentAccounts.push({ email, password });
        saveAccounts(currentAccounts);
        renderAccounts();
    }

    // CSS Style Injection
    GM_addStyle(`
        @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Roboto+Mono:wght@400;700&display=swap');

        :root {
            --tdg-bg-color: #0b0c10;
            --tdg-primary-color: #1c2331;
            --tdg-secondary-color: #3b4252;
            --tdg-accent-color: #88c0d0;
            --tdg-highlight-color: #ebcb8b;
            --tdg-text-color: #eceff4;
            --tdg-success-color: #a3be8c;
            --tdg-error-color: #bf616a;
        }

        #tdg-manager-panel {
            position: fixed;
            bottom: 20px;
            right: 20px;
            width: 85%;
            max-width: 300px;
            max-height: 80vh;
            background-color: var(--tdg-primary-color);
            border-radius: 8px;
            padding: 10px;
            box-shadow: 0 3px 15px rgba(0, 0, 0, 0.7);
            border: 2px solid var(--tdg-secondary-color);
            z-index: 99999;
            display: flex;
            flex-direction: column;
            box-sizing: border-box;
            font-family: 'Roboto Mono', monospace;
            color: var(--tdg-text-color);
            cursor: grab;
            transition: box-shadow 0.2s ease, border-color 0.2s ease;
            overflow-y: auto;
        }
        #tdg-manager-panel:active {
            cursor: grabbing;
            box-shadow: 0 3px 18px rgba(0, 0, 0, 0.9);
            border-color: var(--tdg-accent-color);
        }

        #tdg-manager-panel h2 {
            font-family: 'Press Start 2P', cursive;
            color: var(--tdg-highlight-color);
            text-align: center;
            margin: 0 0 5px 0;
            font-size: 1em;
            text-shadow: 1px 1px var(--tdg-accent-color);
            user-select: none;
        }

        #tdg-manager-panel p.intro-text {
            font-size: 0.7em;
            color: var(--tdg-text-color);
            opacity: 0.9;
            margin-bottom: 10px;
            text-align: center;
            user-select: none;
        }

        #tdg-start-button {
            background-color: var(--tdg-accent-color);
            color: var(--tdg-bg-color);
            border: none;
            padding: 8px 15px;
            font-size: 0.9em;
            font-family: 'Press Start 2P', cursive;
            border-radius: 4px;
            cursor: pointer;
            transition: all 0.2s ease;
            margin-bottom: 10px;
            box-shadow: 2px 2px 0px var(--tdg-secondary-color);
            text-shadow: 1px 1px var(--tdg-primary-color);
        }
        #tdg-start-button:hover {
            transform: translateY(-1px) translateX(-1px);
            box-shadow: 3px 3px 0px var(--tdg-secondary-color);
            background-color: #a3be8c;
        }
        #tdg-start-button:active {
            transform: translateY(0) translateX(0);
            box-shadow: 1px 1px 0px var(--tdg-secondary-color);
        }

        #tdg-loading-screen {
            text-align: center;
            padding: 15px 5px;
            background-color: var(--tdg-primary-color);
            border-radius: 6px;
            margin-top: 5px;
            opacity: 1;
            transition: opacity 0.5s ease;
            min-height: 100px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            color: var(--tdg-text-color);
        }

        #tdg-loading-text {
            font-family: 'Press Start 2P', cursive;
            color: var(--tdg-highlight-color);
            font-size: 0.8em;
            margin-bottom: 10px;
            text-shadow: 1px 1px var(--tdg-secondary-color);
        }

        .tdg-progress-bar-container {
            width: 70%;
            height: 10px;
            background-color: var(--tdg-secondary-color);
            border-radius: 3px;
            overflow: hidden;
            margin-bottom: 10px;
            border: 1px solid var(--tdg-accent-color);
        }

        .tdg-progress-bar {
            height: 100%;
            width: 0%;
            background-color: var(--tdg-accent-color);
            border-radius: 3px;
            transition: width 0.5s ease-out;
        }

        #tdg-final-message {
            font-family: 'Press Start 2P', cursive;
            color: var(--tdg-success-color);
            font-size: 0.9em;
            margin-top: 10px;
            text-shadow: 1px 1px var(--tdg-primary-color);
            animation: tdgPulse 1.5s infinite;
        }

        @keyframes tdgPulse {
            0% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.05); opacity: 0.8; }
            100% { transform: scale(1); opacity: 1; }
        }

        #tdg-account-list-container, #tdg-add-form-container {
            margin-top: 8px;
            opacity: 0;
            transition: opacity 0.5s ease;
            pointer-events: none;
        }
        #tdg-account-list-container.visible, #tdg-add-form-container.visible {
            opacity: 1;
            pointer-events: auto;
        }

        .tdg-section-title {
            color: var(--tdg-text-color);
            font-size: 0.8em;
            margin-bottom: 6px;
            border-bottom: 1px solid var(--tdg-secondary-color);
            padding-bottom: 3px;
            user-select: none;
            font-family: 'Press Start 2P', cursive;
            color: var(--tdg-highlight-color);
            text-shadow: 1px 1px var(--tdg-secondary-color);
        }

        .tdg-account-card, .tdg-add-form-content {
            background-color: var(--tdg-card-bg);
            border: 1px solid var(--tdg-secondary-color);
            border-radius: 6px;
            padding: 6px;
            margin-bottom: 6px;
            animation: tdgFadeIn 0.3s ease-out forwards;
        }
        .tdg-account-card:last-child {
            margin-bottom: 0;
        }

        .tdg-account-field {
            margin-bottom: 5px;
        }

        .tdg-account-field label {
            font-size: 0.6em;
            margin-bottom: 2px;
            color: var(--tdg-accent-color);
            display: block;
        }

        .tdg-input-group {
            display: flex;
            align-items: center;
        }

        .tdg-account-field input {
            flex-grow: 1;
            padding: 4px 6px;
            background-color: var(--tdg-secondary-color);
            border: 1px solid var(--tdg-secondary-color);
            border-radius: 3px;
            color: var(--tdg-text-color);
            font-family: 'Roboto Mono', monospace;
            font-size: 0.7em;
            outline: none;
            transition: border-color 0.2s ease;
        }
        .tdg-account-field input:focus {
            border-color: var(--tdg-accent-color);
        }

        .tdg-copy-btn, .tdg-toggle-password-btn, .tdg-add-btn {
            background: var(--tdg-accent-color);
            border: none;
            color: var(--tdg-bg-color);
            padding: 4px 6px;
            margin-left: 3px;
            border-radius: 3px;
            cursor: pointer;
            transition: background-color 0.2s ease, transform 0.1s ease;
            white-space: nowrap;
            font-size: 0.65em;
            box-shadow: 1px 1px 0px var(--tdg-secondary-color);
        }
        .tdg-copy-btn:hover, .tdg-toggle-password-btn:hover, .tdg-add-btn:hover {
            background: var(--tdg-highlight-color);
            transform: translateY(-1px) translateX(-1px);
        }
        .tdg-copy-btn:active, .tdg-toggle-password-btn:active, .tdg-add-btn:active {
            transform: translateY(0) translateX(0);
            box-shadow: 1px 1px 0px var(--tdg-secondary-color);
        }

        .tdg-add-btn {
            width: calc(100% - 12px);
            margin: 6px 6px 0 6px;
            padding: 6px;
            font-family: 'Press Start 2P', cursive;
        }

        .tdg-copy-feedback {
            color: var(--tdg-success-color);
            font-size: 0.6em;
            margin-left: 3px;
            font-weight: bold;
            opacity: 0;
            transition: opacity 0.3s ease;
            white-space: nowrap;
        }
    `);

    // Create the main panel
    const managerPanel = document.createElement('div');
    managerPanel.id = 'tdg-manager-panel';
    document.body.appendChild(managerPanel);

    // Initial HTML content of the panel
    managerPanel.innerHTML = `
        <h2>Drawaria Hacker Accounts</h2>
        <p class="intro-text">Ready to start hacking!</p>
        <button id="tdg-start-button">Start Hacker!</button>

        <div id="tdg-loading-screen">
            <div id="tdg-loading-text">Starting protocol...</div>
            <div class="tdg-progress-bar-container">
                <div class="tdg-progress-bar" id="tdg-progress-bar"></div>
            </div>
            <div id="tdg-final-message" style="display: none;">YOUR ACCOUNT IS HERE</div>
        </div>

        <div id="tdg-account-list-container">
            <div class="tdg-section-title">Free Accounts</div>
            <div id="tdg-account-list-content"></div>
        </div>

        <div id="tdg-add-form-container">
            <div class="tdg-section-title" style="margin-top: 15px;">Add Hacked Accounts</div>
            <div class="tdg-add-form-content">
                <div class="tdg-account-field">
                    <label for="tdg-new-email">Email:</label>
                    <input type="email" id="tdg-new-email" placeholder="[email protected]">
                </div>
                <div class="tdg-account-field">
                    <label for="tdg-new-password">Password:</label>
                    <input type="password" id="tdg-new-password" placeholder="your ultra-secret password">
                </div>
                <button class="tdg-add-btn" id="tdg-add-account-btn">Enter!</button>
            </div>
        </div>
    `;

    const startButton = document.getElementById('tdg-start-button');
    const loadingScreen = document.getElementById('tdg-loading-screen');
    const loadingText = document.getElementById('tdg-loading-text');
    const progressBar = document.getElementById('tdg-progress-bar');
    const finalMessage = document.getElementById('tdg-final-message');
    const accountListContainer = document.getElementById('tdg-account-list-container');
    const accountListContent = document.getElementById('tdg-account-list-content');
    const addFormContainer = document.getElementById('tdg-add-form-container');
    const newEmailInput = document.getElementById('tdg-new-email');
    const newPasswordInput = document.getElementById('tdg-new-password');
    const addAccountBtn = document.getElementById('tdg-add-account-btn');

    // Initially hide the account sections and add form
    loadingScreen.style.opacity = 0;
    loadingScreen.style.pointerEvents = 'none';
    accountListContainer.classList.remove('visible');
    addFormContainer.classList.remove('visible');

    // Rendering Functions
    function renderAccounts() {
        accountListContent.innerHTML = '';
        currentAccounts.forEach((account, index) => {
            const card = document.createElement('div');
            card.className = 'tdg-account-card';
            card.style.animationDelay = `${index * 0.1}s`;
            card.innerHTML = `
                <div class="tdg-account-field">
                    <label>Email:</label>
                    <div class="tdg-input-group">
                        <input type="text" value="${account.email}" readonly>
                        <button class="tdg-copy-btn">Copy</button>
                        <span class="tdg-copy-feedback">Copied!</span>
                    </div>
                </div>
                <div class="tdg-account-field">
                    <label>Password:</label>
                    <div class="tdg-input-group">
                        <input type="password" value="${account.password}" readonly>
                        <button class="tdg-copy-btn">Copy</button>
                        <button class="tdg-toggle-password-btn">Show</button>
                        <span class="tdg-copy-feedback">Copied!</span>
                    </div>
                </div>
            `;
            accountListContent.appendChild(card);
        });
    }

    // Initialization Logic
    currentAccounts = loadAccounts();

    // Loading Simulation Logic
    startButton.addEventListener('click', function() {
        startButton.style.display = 'none';
        document.querySelector('.intro-text').style.display = 'none';
        loadingScreen.style.opacity = 1;
        loadingScreen.style.pointerEvents = 'auto';

        let progress = 0;
        progressBar.style.width = '0%';
        loadingMessageIndex = 0;
        finalMessage.style.display = 'none';

        loadingInterval = setInterval(() => {
            loadingText.textContent = LOADING_MESSAGES[loadingMessageIndex];
            loadingMessageIndex = (loadingMessageIndex + 1) % LOADING_MESSAGES.length;

            progress += Math.random() * 20;
            if (progress > 100) progress = 100;
            progressBar.style.width = progress + '%';

            if (progress >= 100) {
                clearInterval(loadingInterval);
                loadingText.textContent = LOADING_MESSAGES[LOADING_MESSAGES.length - 1];
                progressBar.style.width = '100%';

                setTimeout(() => {
                    loadingScreen.style.opacity = 0;
                    loadingScreen.style.pointerEvents = 'none';
                    finalMessage.style.display = 'block';

                    setTimeout(() => {
                        finalMessage.style.display = 'none';
                        accountListContainer.classList.add('visible');
                        addFormContainer.classList.add('visible');
                        renderAccounts();
                    }, 1000);
                }, 800);
            }
        }, 300);
    });

    // Logic to Add Account
    addAccountBtn.addEventListener('click', function() {
        const email = newEmailInput.value.trim();
        const password = newPasswordInput.value.trim();

        if (email && password) {
            addAccount(email, password);
            newEmailInput.value = '';
            newPasswordInput.value = '';
        } else {
            alert('ERROR! Mission incomplete: You need email and password!');
        }
    });

    // Logic to Copy and Show/Hide Password
    managerPanel.addEventListener('click', function(e) {
        if (e.target && e.target.classList.contains('tdg-copy-btn')) {
            const button = e.target;
            const inputGroup = button.parentElement;
            const input = inputGroup.querySelector('input');
            const feedback = inputGroup.querySelector('.tdg-copy-feedback');

            navigator.clipboard.writeText(input.value).then(() => {
                feedback.style.opacity = '1';
                setTimeout(() => {
                    feedback.style.opacity = '0';
                }, 2000);
            }).catch(err => {
                console.error('Error copying: ', err);
                alert('SYSTEM ERROR! Could not copy. Permissions denied.');
            });
        }

        if (e.target && e.target.classList.contains('tdg-toggle-password-btn')) {
            const button = e.target;
            const inputGroup = button.parentElement;
            const passwordInput = inputGroup.querySelector('input[type="password"], input[type="text"]');

            if (passwordInput.type === 'password') {
                passwordInput.type = 'text';
                button.textContent = 'Hide';
            } else {
                passwordInput.type = 'password';
                button.textContent = 'Show';
            }
        }
    });

    // Panel Drag Logic
    let isDragging = false;
    let offsetX, offsetY;

    managerPanel.addEventListener('mousedown', function(e) {
        if (e.target.tagName === 'INPUT' || e.target.tagName === 'BUTTON' || e.target.classList.contains('tdg-section-title') || e.target.classList.contains('tdg-account-field') || e.target.classList.contains('tdg-input-group') || e.target.classList.contains('tdg-account-card') || e.target.classList.contains('tdg-add-form-content')) {
            return;
        }

        isDragging = true;
        managerPanel.style.cursor = 'grabbing';
        offsetX = e.clientX - managerPanel.getBoundingClientRect().left;
        offsetY = e.clientY - managerPanel.getBoundingClientRect().top;

        managerPanel.style.position = 'fixed';
        e.preventDefault();
    });

    document.addEventListener('mousemove', function(e) {
        if (!isDragging) return;

        let newLeft = e.clientX - offsetX;
        let newTop = e.clientY - offsetY;

        newLeft = Math.max(0, Math.min(newLeft, window.innerWidth - managerPanel.offsetWidth));
        newTop = Math.max(0, Math.min(newTop, window.innerHeight - managerPanel.offsetHeight));

        managerPanel.style.left = newLeft + 'px';
        managerPanel.style.top = newTop + 'px';
    });

    document.addEventListener('mouseup', function() {
        if (isDragging) {
            isDragging = false;
            managerPanel.style.cursor = 'grab';
        }
    });

    // Position the panel when the page loads
    function setInitialPanelPosition() {
        const lastPosition = JSON.parse(localStorage.getItem('tdg_panel_position') || '{}');
        if (lastPosition.left !== undefined && lastPosition.top !== undefined) {
            managerPanel.style.left = lastPosition.left + 'px';
            managerPanel.style.top = lastPosition.top + 'px';
        } else {
            const initialRight = 20;
            const initialBottom = 20;
            managerPanel.style.left = (window.innerWidth - managerPanel.offsetWidth - initialRight) + 'px';
            managerPanel.style.top = (window.innerHeight - managerPanel.offsetHeight - initialBottom) + 'px';
        }
    }

    managerPanel.addEventListener('mouseup', function() {
        if (!isDragging) {
            const rect = managerPanel.getBoundingClientRect();
            localStorage.setItem('tdg_panel_position', JSON.stringify({ left: rect.left, top: rect.top }));
        }
    });
    window.addEventListener('beforeunload', function() {
        const rect = managerPanel.getBoundingClientRect();
        localStorage.setItem('tdg_panel_position', JSON.stringify({ left: rect.left, top: rect.top }));
    });

    document.fonts.ready.then(() => {
        setInitialPanelPosition();
    });
    window.addEventListener('resize', setInitialPanelPosition);
})();