Viros Cheating

idk why u need cheats for this. But uh here xd

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Viros Cheating
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  idk why u need cheats for this. But uh here xd
// @author       Viros
// @match        https://www.whatbeatsrock.com/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';

    // Create container for the terminal and its background
    const container = document.createElement('div');
    container.style.cssText = `
        position: fixed;
        top: 20px;
        right: 20px;
        z-index: 9999;
        width: 320px;
        border-radius: 8px;
        overflow: hidden;
        box-shadow: 0 4px 16px rgba(0,0,0,0.3);
    `;

    // Canvas for dots & lines (background)
    const canvas = document.createElement('canvas');
    canvas.style.cssText = `
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
        z-index: 1;
    `;

    // Terminal panel (white, on top of canvas)
    const panel = document.createElement('div');
    panel.style.cssText = `
        position: relative;
        z-index: 2;
        background: #fff;
        color: #000;
        font-family: 'Courier New', 'Fira Code', monospace;
        font-size: 12px;
        padding: 12px;
        border-radius: 8px;
        border: 1px solid #aaa;
        backdrop-filter: none;
    `;

    panel.innerHTML = `
        <div style="margin-bottom: 8px; border-bottom: 1px solid #ccc; padding-bottom: 4px;">
            <span style="font-weight: bold; font-size: 14px;">$ viros-cheat</span>
            <span style="float: right;">v1.2</span>
        </div>
        <div style="font-size: 11px; margin-bottom: 12px; color: #555;">idk why u need cheats for this. But uh here xd</div>
        <div style="margin-bottom: 10px;">
            <button id="viros-show-answers" style="width: 100%; padding: 6px; margin-bottom: 6px; background: #eee; color: #000; border: 1px solid #aaa; border-radius: 4px; font-family: monospace; cursor: pointer;">> show_answers</button>
            <button id="viros-auto-submit" style="width: 100%; padding: 6px; margin-bottom: 6px; background: #eee; color: #000; border: 1px solid #aaa; border-radius: 4px; font-family: monospace; cursor: pointer;">> quick_submit</button>
            <div style="margin-top: 8px;">
                <input type="text" id="viros-custom-beats" placeholder="what beats current?" style="width: 100%; padding: 6px; margin-bottom: 6px; border-radius: 4px; border: 1px solid #aaa; font-family: monospace; box-sizing: border-box;">
                <button id="viros-submit-custom" style="width: 100%; padding: 6px; background: #eee; color: #000; border: 1px solid #aaa; border-radius: 4px; font-family: monospace; cursor: pointer;">> submit_new</button>
            </div>
        </div>
        <div id="viros-status" style="font-size: 11px; background: #f5f5f5; padding: 6px; border-radius: 4px; margin-top: 5px; word-wrap: break-word; border-left: 3px solid #888;">Ready</div>
    `;

    container.appendChild(canvas);
    container.appendChild(panel);
    document.body.appendChild(container);

    // Draw dots and lines on canvas
    function drawNetwork() {
        const rect = container.getBoundingClientRect();
        canvas.width = rect.width;
        canvas.height = rect.height;
        const ctx = canvas.getContext('2d');
        ctx.clearRect(0, 0, canvas.width, canvas.height);

        const dotCount = 45;
        const dots = [];
        const minDistance = 45; // connect dots closer than this
        const maxDistance = 80;

        // Generate random dots within canvas bounds
        for (let i = 0; i < dotCount; i++) {
            dots.push({
                x: Math.random() * canvas.width,
                y: Math.random() * canvas.height
            });
        }

        // Draw lines (connect dots if distance within range)
        ctx.beginPath();
        ctx.strokeStyle = '#ccc';
        ctx.lineWidth = 1;
        for (let i = 0; i < dots.length; i++) {
            for (let j = i + 1; j < dots.length; j++) {
                const dx = dots[i].x - dots[j].x;
                const dy = dots[i].y - dots[j].y;
                const dist = Math.sqrt(dx * dx + dy * dy);
                if (dist < maxDistance && dist > minDistance) {
                    ctx.beginPath();
                    ctx.moveTo(dots[i].x, dots[i].y);
                    ctx.lineTo(dots[j].x, dots[j].y);
                    ctx.stroke();
                }
            }
        }

        // Draw dots
        ctx.fillStyle = '#aaa';
        for (let dot of dots) {
            ctx.beginPath();
            ctx.arc(dot.x, dot.y, 2, 0, Math.PI * 2);
            ctx.fill();
        }
    }

    // Redraw on resize or any changes
    const resizeObserver = new ResizeObserver(() => drawNetwork());
    resizeObserver.observe(container);
    drawNetwork();

    // Helper functions (same as before, with minor tweaks)
    function getCurrentPrompt() {
        const promptElement = document.querySelector('h1, .prompt, [class*="prompt"], [class*="question"]');
        if (promptElement) return promptElement.innerText.trim();
        const mainText = document.body.innerText.split('\n')[0];
        return mainText || "rock";
    }

    function showCorrectAnswers() {
        const statusDiv = document.getElementById('viros-status');
        statusDiv.innerHTML = "> scanning...";
        
        const currentPrompt = getCurrentPrompt();
        const answers = [];
        
        document.querySelectorAll('[class*="entry"], .card, [class*="item"], .beats-item').forEach(el => {
            const text = el.innerText;
            if (text && text.length > 0 && text.length < 200) {
                const voteMatch = text.match(/(\d+(?:\.\d+)?[KM]?)/);
                const votes = voteMatch ? voteMatch[1] : '0';
                answers.push({ text: text.substring(0, 100), votes: votes });
            }
        });
        
        const allText = document.body.innerText.split('\n');
        for (let line of allText) {
            line = line.trim();
            if (line && line.length > 2 && line.length < 100 && !line.includes('score:') && !line.includes('powered by')) {
                if (line.match(/\d+[KM]?/) && !answers.some(a => a.text === line)) {
                    answers.push({ text: line, votes: line.match(/\d+[KM]?/)[0] });
                }
            }
        }
        
        if (answers.length > 0) {
            const topAnswers = answers.slice(0, 5);
            statusDiv.innerHTML = `[${currentPrompt}]\n` + topAnswers.map(a => `  • ${a.text}`).join('\n');
        } else {
            statusDiv.innerHTML = `> no answers found for "${currentPrompt}". try clicking a question.`;
        }
    }

    function submitNewEntry(beatsText) {
        const statusDiv = document.getElementById('viros-status');
        if (!beatsText || beatsText.trim() === '') {
            statusDiv.innerHTML = "> error: empty input";
            return;
        }
        
        statusDiv.innerHTML = "> submitting...";
        
        const inputs = document.querySelectorAll('input[type="text"], textarea');
        let submissionInput = null;
        for (let input of inputs) {
            if (input.placeholder && (input.placeholder.toLowerCase().includes('beats') || input.placeholder.toLowerCase().includes('what'))) {
                submissionInput = input;
                break;
            }
        }
        if (!submissionInput && inputs.length > 0) submissionInput = inputs[0];
        
        if (submissionInput) {
            submissionInput.value = beatsText;
            submissionInput.dispatchEvent(new Event('input', { bubbles: true }));
            
            const buttons = document.querySelectorAll('button');
            let submitBtn = null;
            for (let btn of buttons) {
                const txt = btn.innerText.toLowerCase();
                if (txt.includes('sub') || txt.includes('add') || txt.includes('post') || txt.includes('create')) {
                    submitBtn = btn;
                    break;
                }
            }
            
            if (submitBtn) {
                submitBtn.click();
                statusDiv.innerHTML = `> submitted: "${beatsText}" beats current.`;
            } else {
                statusDiv.innerHTML = `> input filled, but no submit button found. try manually.`;
            }
        } else {
            statusDiv.innerHTML = `> could not find input field. make sure you're on a submission page.`;
        }
    }

    // Attach event listeners
    document.getElementById('viros-show-answers').addEventListener('click', showCorrectAnswers);
    document.getElementById('viros-submit-custom').addEventListener('click', () => {
        const input = document.getElementById('viros-custom-beats');
        submitNewEntry(input.value);
        input.value = '';
    });
    document.getElementById('viros-auto-submit').addEventListener('click', () => {
        const prompt = getCurrentPrompt();
        const suggested = `something that beats ${prompt}`;
        const input = document.getElementById('viros-custom-beats');
        input.value = suggested;
        submitNewEntry(suggested);
    });

    // Initial status
    setTimeout(() => {
        const statusDiv = document.getElementById('viros-status');
        const input = document.querySelector('input[type="text"], textarea');
        if (input) statusDiv.innerHTML = "> ready. use commands above.";
        else statusDiv.innerHTML = "> not on a submission page? show_answers works anywhere.";
    }, 1000);

    console.log("Viros Cheating terminal loaded — dots & lines active.");
})();