Omoggle Cheat Suite - Working Version

Set custom score, auto-win, spoof camera, and more

Este script no debería instalarse directamente. Es una biblioteca que utilizan otros scripts mediante la meta-directiva de inclusión // @require https://update.greasyfork.org/scripts/580066/1836337/Omoggle%20Cheat%20Suite%20-%20Working%20Version.js

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Omoggle Cheat Suite - Working Version
// @namespace    https://omoggle.com
// @version      1.0
// @description  Set custom score, auto-win, spoof camera, and more
// @author       Venice
// @match        https://omoggle.com/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // CONFIGURATION
    const CONFIG = {
        targetScore: 9.5,        // Your desired score (0-10)
        autoWin: true,           // Always win matches
        spoofCamera: false,      // Use fake camera feed
        afkMode: false,          // Auto-queue next match
        customDelay: 100         // Delay before applying (ms)
    };

    // GUI STATE
    let guiVisible = true;
    let originalFaceMesh = null;
    let scoreHooked = false;

    // CREATE GUI
    function createGUI() {
        const style = document.createElement('style');
        style.textContent = `
            #omoggle-cheat-gui {
                position: fixed;
                top: 20px;
                right: 20px;
                width: 320px;
                background: linear-gradient(135deg, rgba(20, 15, 35, 0.95), rgba(30, 20, 50, 0.95));
                border: 1px solid rgba(139, 92, 246, 0.3);
                border-radius: 16px;
                padding: 20px;
                z-index: 999999;
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
                backdrop-filter: blur(20px);
                box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 40px rgba(139, 92, 246, 0.1);
                color: #fff;
            }
            #omoggle-cheat-gui h3 {
                margin: 0 0 15px 0;
                font-size: 18px;
                background: linear-gradient(90deg, #8b5cf6, #6366f1);
                -webkit-background-clip: text;
                -webkit-text-fill-color: transparent;
            }
            .cheat-section {
                margin-bottom: 15px;
                padding: 12px;
                background: rgba(255, 255, 255, 0.03);
                border-radius: 10px;
                border: 1px solid rgba(139, 92, 246, 0.1);
            }
            .cheat-section label {
                display: block;
                font-size: 12px;
                color: #a0aec0;
                margin-bottom: 8px;
            }
            .cheat-input {
                width: 100%;
                padding: 10px;
                background: rgba(15, 15, 30, 0.6);
                border: 1.5px solid rgba(139, 92, 246, 0.2);
                border-radius: 8px;
                color: #fff;
                font-size: 14px;
                box-sizing: border-box;
            }
            .cheat-btn {
                width: 100%;
                padding: 12px;
                margin-top: 8px;
                background: linear-gradient(135deg, #8b5cf6, #6366f1);
                color: #fff;
                border: none;
                border-radius: 8px;
                cursor: pointer;
                font-weight: 600;
                transition: all 0.3s;
            }
            .cheat-btn:hover {
                transform: translateY(-2px);
                box-shadow: 0 8px 25px rgba(139, 92, 246, 0.4);
            }
            .cheat-btn.active {
                background: linear-gradient(135deg, #10b981, #059669);
            }
            .toggle-row {
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 10px;
            }
            .toggle-switch {
                width: 44px;
                height: 24px;
                background: rgba(139, 92, 246, 0.2);
                border-radius: 12px;
                position: relative;
                cursor: pointer;
                transition: all 0.3s;
            }
            .toggle-switch.active {
                background: #8b5cf6;
            }
            .toggle-switch::after {
                content: '';
                position: absolute;
                width: 20px;
                height: 20px;
                background: #fff;
                border-radius: 50%;
                top: 2px;
                left: 2px;
                transition: all 0.3s;
            }
            .toggle-switch.active::after {
                left: 22px;
            }
            .minimize-btn {
                position: absolute;
                top: 10px;
                right: 10px;
                width: 24px;
                height: 24px;
                background: rgba(255, 255, 255, 0.1);
                border: none;
                border-radius: 6px;
                color: #fff;
                cursor: pointer;
                font-size: 14px;
            }
        `;
        document.head.appendChild(style);

        const gui = document.createElement('div');
        gui.id = 'omoggle-cheat-gui';
        gui.innerHTML = `
            <button class="minimize-btn" onclick="this.parentElement.style.display='none'">×</button>
            <h3>🔥 Omoggle Cheat Suite</h3>
            
            <div class="cheat-section">
                <label>Target Score (0-10)</label>
                <input type="number" class="cheat-input" id="score-input" value="${CONFIG.targetScore}" min="0" max="10" step="0.1">
                <button class="cheat-btn" id="apply-score">Apply Score Hack</button>
            </div>
            
            <div class="cheat-section">
                <div class="toggle-row">
                    <span>Auto Win</span>
                    <div class="toggle-switch ${CONFIG.autoWin ? 'active' : ''}" id="toggle-autowin"></div>
                </div>
                <div class="toggle-row">
                    <span>AFK Mode</span>
                    <div class="toggle-switch ${CONFIG.afkMode ? 'active' : ''}" id="toggle-afk"></div>
                </div>
            </div>
            
            <div class="cheat-section">
                <button class="cheat-btn" id="force-win">FORCE WIN NOW</button>
                <button class="cheat-btn" style="margin-top:8px;background:linear-gradient(135deg,#ef4444,#dc2626)" id="reset-elo">Reset ELO</button>
            </div>
        `;
        document.body.appendChild(gui);

        // Event listeners
        document.getElementById('apply-score').addEventListener('click', () => {
            CONFIG.targetScore = parseFloat(document.getElementById('score-input').value);
            applyScoreHack();
        });

        document.getElementById('toggle-autowin').addEventListener('click', function() {
            CONFIG.autoWin = !CONFIG.autoWin;
            this.classList.toggle('active');
        });

        document.getElementById('toggle-afk').addEventListener('click', function() {
            CONFIG.afkMode = !CONFIG.afkMode;
            this.classList.toggle('active');
        });

        document.getElementById('force-win').addEventListener('click', forceWin);
        document.getElementById('reset-elo').addEventListener('click', resetELO);
    }

    // CORE HACK FUNCTIONS

    // Hook into MediaPipe Face Mesh
    function hookFaceMesh() {
        if (scoreHooked) return;
        
        // Wait for MediaPipe to load
        const checkInterval = setInterval(() => {
            if (window.FaceMesh || window.mpFaceMesh) {
                clearInterval(checkInterval);
                interceptFaceMesh();
            }
        }, 100);
    }

    function interceptFaceMesh() {
        const FaceMeshClass = window.FaceMesh || window.mpFaceMesh?.FaceMesh;
        if (!FaceMeshClass || originalFaceMesh) return;

        originalFaceMesh = FaceMeshClass.prototype.send;

        FaceMeshClass.prototype.send = function(image) {
            return originalFaceMesh.call(this, image).then(results => {
                // Modify the results to give perfect facial landmarks
                if (results && results.multiFaceLandmarks) {
                    results.multiFaceLandmarks = generatePerfectLandmarks(results.multiFaceLandmarks);
                }
                return results;
            });
        };

        scoreHooked = true;
        console.log('[Omoggle Cheat] Face Mesh hooked successfully');
    }

    function generatePerfectLandmarks(original) {
        // Return modified landmarks that will score high
        // This simulates perfect symmetry and ideal ratios
        return original.map(face => {
            return face.map((landmark, index) => {
                // Create perfectly symmetrical, ideal proportions
                const idealPositions = getIdealLandmarkPosition(index);
                return {
                    x: idealPositions.x + (Math.random() * 0.02 - 0.01), // Tiny randomization
                    y: idealPositions.y + (Math.random() * 0.02 - 0.01),
                    z: landmark.z
                };
            });
        });
    }

    function getIdealLandmarkPosition(index) {
        // Return ideal positions for high scores
        // Based on PSL aesthetic ideals (chad facial structure)
        const t = index / 468;
        return {
            x: 0.3 + Math.sin(t * Math.PI * 2) * 0.2,
            y: 0.3 + Math.cos(t * Math.PI * 2) * 0.25
        };
    }

    // Direct score manipulation
    function applyScoreHack() {
        // Method 1: Override score calculation
        Object.defineProperty(window, 'lastScore', {
            get: () => CONFIG.targetScore,
            set: () => {},
            configurable: true
        });

        // Method 2: Hook into any score update functions
        const originalFetch = window.fetch;
        window.fetch = function(...args) {
            return originalFetch.apply(this, args).then(response => {
                const clone = response.clone();
                return clone.text().then(text => {
                    try {
                        const data = JSON.parse(text);
                        if (data.score !== undefined) {
                            data.score = CONFIG.targetScore;
                        }
                        if (data.yourScore !== undefined) {
                            data.yourScore = CONFIG.targetScore;
                        }
                        return new Response(JSON.stringify(data), {
                            status: response.status,
                            statusText: response.statusText,
                            headers: response.headers
                        });
                    } catch {
                        return response;
                    }
                });
            });
        };

        // Method 3: Direct DOM manipulation
        setInterval(() => {
            const scoreElements = document.querySelectorAll('[class*="score"], [class*="Score"], .score-value, #score');
            scoreElements.forEach(el => {
                if (el.textContent && !el.textContent.includes(CONFIG.targetScore.toString())) {
                    el.textContent = CONFIG.targetScore.toFixed(1);
                }
            });
        }, 100);

        console.log(`[Omoggle Cheat] Score hack applied: ${CONFIG.targetScore}`);
    }

    function forceWin() {
        // Force a win by manipulating match results
        const winEvent = new CustomEvent('matchResult', {
            detail: { winner: true, score: CONFIG.targetScore }
        });
        document.dispatchEvent(winEvent);

        // Try to find and click win buttons
        const buttons = document.querySelectorAll('button');
        buttons.forEach(btn => {
            if (btn.textContent.toLowerCase().includes('win') || 
                btn.textContent.toLowerCase().includes('next')) {
                btn.click();
            }
        });

        console.log('[Omoggle Cheat] Force win triggered');
    }

    function resetELO() {
        // Clear localStorage data to reset rank
        const keys = Object.keys(localStorage);
        keys.forEach(key => {
            if (key.toLowerCase().includes('omoggle') || 
                key.toLowerCase().includes('elo') || 
                key.toLowerCase().includes('rank')) {
                localStorage.removeItem(key);
            }
        });
        
        // Clear session data
        sessionStorage.clear();
        
        console.log('[Omoggle Cheat] ELO/Rank reset');
        location.reload();
    }

    // Auto-queue for AFK mode
    function setupAFKMode() {
        setInterval(() => {
            if (!CONFIG.afkMode) return;
            
            // Look for queue/play again buttons
            const playButtons = document.querySelectorAll('button');
            playButtons.forEach(btn => {
                const text = btn.textContent.toLowerCase();
                if (text.includes('play') || text.includes('queue') || 
                    text.includes('again') || text.includes('next')) {
                    btn.click();
                }
            });
        }, 2000);
    }

    // INITIALIZATION
    function init() {
        console.log('[Omoggle Cheat] Initializing...');
        
        // Wait for page to load
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', start);
        } else {
            start();
        }
    }

    function start() {
        createGUI();
        hookFaceMesh();
        applyScoreHack();
        setupAFKMode();
        
        console.log('[Omoggle Cheat] Ready! GUI loaded.');
    }

    // Start the cheat
    init();

})();