Drawaria Hacker Accounts

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

// ==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);
})();