Omoggle Cheat Suite - Working Version

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

Dit script moet niet direct worden geïnstalleerd - het is een bibliotheek voor andere scripts om op te nemen met de meta-richtlijn // @require https://update.greasyfork.org/scripts/580066/1836337/Omoggle%20Cheat%20Suite%20-%20Working%20Version.js

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

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

})();