Worldguessr Cheat/Hack 2025

Always visible tiny "See Location" button in the bottom-left corner for WorldGuessr. Made by DarkShadow44. Updated 2025. Undetected.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Worldguessr Cheat/Hack 2025
// @namespace    http://tampermonkey.net/
// @version      2.5
// @description  Always visible tiny "See Location" button in the bottom-left corner for WorldGuessr. Made by DarkShadow44. Updated 2025. Undetected.
// @author       DarkShadow44 & CheatGuessr
// @match        https://www.worldguessr.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=worldguessr.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let seeLocationButton = null;
    let loadingIndicator = null;
    let dotInterval = null;
    let blockAdsSetting = true;
    let initMessageElement = null; // Für die Initialisierungsnachricht

    // Funktion zum Anzeigen der Initialisierungsnachricht
    function showInitializationMessage() {
        if (initMessageElement) return; // Nur einmal anzeigen

        initMessageElement = document.createElement('div');
        initMessageElement.id = 'cheat-init-message';
        initMessageElement.innerHTML = `
            WorldGuessr Cheat Initialized, made by DarkShadow44 2025.<br>
            <span class="untdctd">✔</span>Undetected<span class="untdctd">✔</span><br>
            (Small button to see your location is at the bottom left)
        `;
        document.body.appendChild(initMessageElement);

        // Nachricht nach 5 Sekunden ausblenden und entfernen
        setTimeout(() => {
            if (initMessageElement) {
                initMessageElement.style.opacity = '0';
                // Warten bis die Opacity-Transition vorbei ist, bevor das Element entfernt wird
                setTimeout(() => {
                    if (initMessageElement && initMessageElement.parentNode) {
                        initMessageElement.parentNode.removeChild(initMessageElement);
                    }
                    initMessageElement = null; // Zurücksetzen für den Fall eines Neuladens (obwohl das Skript dann neu startet)
                }, 500); // Muss zur CSS-Transition-Dauer passen
            }
        }, 5000); // 5 Sekunden anzeigen
    }


    // Funktion zum Erstellen des "See Location"-Knopfes
    function createSeeLocationButton() {
        if (seeLocationButton) return;

        seeLocationButton = document.createElement('button');
        seeLocationButton.id = 'tiny-see-location-button';
        seeLocationButton.textContent = 'See Location';
        document.body.appendChild(seeLocationButton);

        seeLocationButton.onclick = () => {
            if (window.location.pathname !== '/banned' && window.location.pathname !== '/banned2') {
                const loc = extractLocationFromIframe();
                if (loc) {
                    window.open(`https://www.google.com/maps?q=${loc.lat},${loc.long}&z=18&output=embed`, "_blank");
                } else {
                    alert('Could not determine current location. Please ensure you are in a game round.');
                }
            } else {
                alert("This function is not available on the 'banned' page.");
            }
        };
    }

    // Banned page handler
    if (window.location.pathname === '/banned' || window.location.pathname === '/banned2') {
        const handleBannedPage = () => {
            // ... (Banned Page Code bleibt unverändert) ...
            const backdrop = document.createElement('div');
            backdrop.style.position = 'fixed';
            backdrop.style.top = '0';
            backdrop.style.left = '0';
            backdrop.style.right = '0';
            backdrop.style.bottom = '0';
            backdrop.style.backgroundColor = 'rgba(0,0,0,0.5)';
            backdrop.style.zIndex = '10000';

            const modal = document.createElement('div');
            modal.style.position = 'fixed';
            modal.style.top = '50%';
            modal.style.left = '50%';
            modal.style.transform = 'translate(-50%, -50%)';
            modal.style.backgroundColor = '#1f2937';
            modal.style.padding = '20px';
            modal.style.borderRadius = '8px';
            modal.style.color = 'white';
            modal.style.zIndex = '10001';

            const message = document.createElement('p');
            message.textContent = 'The Cheat has been detected!\nPlease Enter 10-20 random characters to bypass the anti-cheat.\n\nExample (do not use the example):\ndf89aj3n4r98nd9';
            message.style.margin = '0 0 15px 0';

            const input = document.createElement('input');
            input.type = 'text';
            input.style.width = '100%';
            input.style.marginBottom = '15px';
            input.style.padding = '8px';
            input.style.borderRadius = '4px';
            input.style.border = '1px solid #4b5563';
            input.style.backgroundColor = '#374151';
            input.style.color = 'white';

            const submitButton = document.createElement('button');
            submitButton.textContent = 'Submit';
            submitButton.style.padding = '8px 16px';
            submitButton.style.backgroundColor = '#3b82f6';
            submitButton.style.color = 'white';
            submitButton.style.border = 'none';
            submitButton.style.borderRadius = '4px';
            submitButton.style.cursor = 'pointer';
            submitButton.onmouseenter = () => submitButton.style.backgroundColor = '#2563eb';
            submitButton.onmouseleave = () => submitButton.style.backgroundColor = '#3b82f6';

            submitButton.onclick = () => {
                const chars = input.value.trim();
                if (chars) {
                    if (chars === 'df89aj3n4r98nd9') {
                        alert('You cannot use the example!');
                        return;
                    }
                    const history = JSON.parse(localStorage.getItem('mapDivClassHistory') || '[]');
                    if (history.includes(chars)) {
                        alert('You cannot reuse a previous map div name!');
                        return;
                    }
                    localStorage.removeItem('banned');
                    localStorage.setItem('mapDivClass', chars);
                    history.push(chars);
                    localStorage.setItem('mapDivClassHistory', JSON.stringify(history));
                    window.location.href = 'https://www.worldguessr.com/';
                }
            };
            modal.appendChild(message);
            modal.appendChild(input);
            modal.appendChild(submitButton);
            document.body.appendChild(backdrop);
            document.body.appendChild(modal);
        };
        handleBannedPage();
        // Initialisierungsnachricht und Knopf auch auf der Banned-Seite anzeigen
    }

    // Styles
    const style = document.createElement('style');
    style.textContent = `
        #cheat-init-message {
            position: fixed;
            top: 20px;
            left: 50%;
            transform: translateX(-50%);
            background-color: #28a745; /* Grün */
            color: white;
            padding: 12px 20px;
            border-radius: 8px;
            border: 2px solid white;
            box-shadow: 0 4px 12px rgba(0,0,0,0.2);
            z-index: 10005; /* Sehr hoch */
            text-align: center;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            font-size: 14px;
            opacity: 1;
            transition: opacity 0.5s ease-out;
        }
        #cheat-init-message .untdctd { /* Styling für die Häkchen */
            color: #c3e6cb; /* Helleres Grün für die Häkchen innerhalb des grünen Kastens */
            font-weight: bold;
            margin: 0 2px;
        }

        #tiny-see-location-button {
            position: fixed;
            bottom: 10px;
            left: 10px;
            padding: 5px 10px;
            font-size: 11px;
            background-color: #3b82f6;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            z-index: 10003;
            box-shadow: 0 1px 4px rgba(0,0,0,0.3);
            opacity: 0.9;
            transition: opacity 0.2s, background-color 0.2s;
        }
        #tiny-see-location-button:hover {
            opacity: 1;
            background-color: #2563eb;
        }

        .loading-indicator {
            position: fixed;
            left: 10px;
            bottom: 50px;
            padding: 5px 10px;
            background: rgba(0,0,0,0.7);
            color: white;
            border-radius: 4px;
            z-index: 9999;
            font-family: Arial, sans-serif;
        }
    `;
    document.head.appendChild(style);


    // Nur wenn NICHT auf der Banned-Seite, werden Adblock und Ladeindikator initialisiert
    if (window.location.pathname !== '/banned' && window.location.pathname !== '/banned2') {
        try {
            const savedSettings = JSON.parse(localStorage.getItem('worldGuessrHelperMinimal'));
            if (savedSettings && typeof savedSettings.blockAds === 'boolean') {
                blockAdsSetting = savedSettings.blockAds;
            }
        } catch (e) { /* Ignoriere Fehler, Standardwert wird verwendet */ }

        function blockAdsIfEnabled() {
            // ... (blockAdsIfEnabled Code bleibt unverändert) ...
            if (!blockAdsSetting) return;
            const adSelectors = [
                '[id^="google_ads_iframe"]',
                '[id^="worldguessr-com_"]',
                '.video-ad'
            ];
            const removeAds = () => {
                adSelectors.forEach(selector => {
                    document.querySelectorAll(selector).forEach(ad => ad.remove());
                });
            };
            removeAds();
            const observer = new MutationObserver(removeAds);
            observer.observe(document.body, { childList: true, subtree: true });
        }

        function createLoadingIndicator() {
            // ... (createLoadingIndicator Code bleibt unverändert) ...
            if (loadingIndicator) return;
            loadingIndicator = document.createElement('div');
            loadingIndicator.className = 'loading-indicator';
            loadingIndicator.style.display = 'none';
            document.body.appendChild(loadingIndicator);

            let dots = 0;
            if (dotInterval) clearInterval(dotInterval);
            dotInterval = setInterval(() => {
                dots = (dots + 1) % 4;
                if (loadingIndicator) {
                    loadingIndicator.textContent = 'Loading location' + '.'.repeat(dots);
                }
            }, 500);
        }

        function showLoadingIndicator() {
            if (loadingIndicator) loadingIndicator.style.display = 'block';
        }

        function hideLoadingIndicator() {
            if (loadingIndicator) loadingIndicator.style.display = 'none';
        }

        window.extractLocationFromIframe = function() {
            // ... (extractLocationFromIframe Code bleibt unverändert) ...
            showLoadingIndicator();
            const iframe = document.querySelector('iframe[src^="/svEmbed"]');
            if (!iframe) {
                hideLoadingIndicator();
                console.warn("WorldGuessr iframe not found.");
                return null;
            }
            try {
                const urlParams = new URLSearchParams(iframe.src.split('?')[1]);
                const lat = parseFloat(urlParams.get('lat'));
                const long = parseFloat(urlParams.get('long'));
                if (!isNaN(lat) && !isNaN(long)) {
                    hideLoadingIndicator();
                    return { lat, long };
                }
            } catch (e) {
                console.error("Error parsing iframe src:", e);
            }
            hideLoadingIndicator();
            console.warn("Could not extract lat/long from iframe.");
            return null;
        };

        createLoadingIndicator();
        blockAdsIfEnabled();
    } else {
        window.extractLocationFromIframe = function() {
            console.warn("extractLocationFromIframe called on banned page. No location to extract.");
            return null;
        };
    }

    // Funktionen und Elemente initialisieren, die immer gebraucht werden
    // (unabhängig von Banned-Status für den Knopf und die Init-Nachricht)
    function initializeUI() {
        createSeeLocationButton();
        showInitializationMessage();
    }

    if (document.body) {
        initializeUI();
    } else {
        window.addEventListener('DOMContentLoaded', initializeUI);
    }

    console.log("CheatGuessr Tiny Location Button Loaded (v2.5 - InitMsg).");

})();