Drawaria Hacker Accounts

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

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

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

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

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

你需要先安裝一款使用者腳本管理器擴展,比如 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);
})();