您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Opens with '1', has close button. Automatically updates on location change.
当前为
- // ==UserScript==
- // @name OpenGuessr Location Hack/Cheat
- // @namespace https://openguessr.com/
- // @version 3.3
- // @description Opens with '1', has close button. Automatically updates on location change.
- // @author Kakoncheater
- // @license MIT
- // @match https://openguessr.com/*
- // @grant GM_addStyle
- // ==/UserScript==
- (function () {
- 'use strict';
- // Add CSS for the floating iframe
- GM_addStyle(`
- #locationFrameContainer {
- position: fixed;
- bottom: 10px;
- left: 10px; /* Displayed in bottom left */
- width: 600px;
- height: 400px;
- background-color: white;
- border: 1px solid #ccc;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
- z-index: 1000; /* Ensure it's on top */
- overflow: hidden; /* Hide scrollbars */
- }
- #locationFrame {
- width: 100%;
- height: 100%;
- border: none;
- }
- #locationFrameHeader {
- background-color: #f0f0f0;
- padding: 5px;
- cursor: move; /* Indicate draggable */
- text-align: center;
- font-weight: bold;
- display: flex; /* Use flexbox for alignment */
- justify-content: space-between; /* Push items to the edges */
- align-items: center; /* Vertically align items */
- }
- #closeButton {
- background-color: #f44336;
- color: white;
- border: none;
- padding: 5px 10px;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 12px;
- cursor: pointer;
- border-radius: 3px;
- }
- `);
- let locationFrameContainer = null; // Store the iframe container element
- let currentLocation = null; // Store the last known location
- let isDragging = false;
- let dragOffsetX = 0;
- let dragOffsetY = 0;
- const zoomLevel = 3; // Adjusted Zoom Level
- // Function to create and display the iframe
- function createLocationFrame(location) {
- if (!location) return; // Prevent creating with null location
- if (locationFrameContainer) {
- // Iframe already exists, just update the URL
- const locationFrame = locationFrameContainer.querySelector('#locationFrame');
- locationFrame.src = `https://www.google.com/maps?q=${location}&output=embed&z=${zoomLevel}`;
- currentLocation = location; //Update known location
- return;
- }
- // Create the container
- locationFrameContainer = document.createElement('div');
- locationFrameContainer.id = 'locationFrameContainer';
- // Create the header (for dragging)
- const locationFrameHeader = document.createElement('div');
- locationFrameHeader.id = 'locationFrameHeader';
- locationFrameHeader.textContent = 'Google Maps Location (Drag to Move)';
- // Create the close button
- const closeButton = document.createElement('button');
- closeButton.id = 'closeButton';
- closeButton.textContent = 'Close';
- closeButton.addEventListener('click', closeLocationFrame); // Add event listener
- // Add elements to the header
- locationFrameHeader.appendChild(document.createTextNode('Google Maps Location (Drag to Move)')); // Text node
- locationFrameHeader.appendChild(closeButton);
- locationFrameContainer.appendChild(locationFrameHeader);
- // Create the iframe
- const locationFrame = document.createElement('iframe');
- locationFrame.id = 'locationFrame';
- locationFrame.src = `https://www.google.com/maps?q=${location}&output=embed&z=${zoomLevel}`; // Embedded version of Maps, zoomed out to level 3
- locationFrameContainer.appendChild(locationFrame);
- // Add to the document
- document.body.appendChild(locationFrameContainer);
- // Make it draggable
- locationFrameHeader.addEventListener('mousedown', dragStart);
- document.addEventListener('mouseup', dragEnd);
- document.addEventListener('mousemove', drag);
- currentLocation = location; // Store initial location.
- }
- function dragStart(e) {
- isDragging = true;
- dragOffsetX = e.clientX - locationFrameContainer.offsetLeft;
- dragOffsetY = e.clientY - locationFrameContainer.offsetTop;
- }
- function dragEnd() {
- isDragging = false;
- }
- function drag(e) {
- if (!isDragging) return;
- locationFrameContainer.style.left = (e.clientX - dragOffsetX) + 'px';
- locationFrameContainer.style.top = (e.clientY - dragOffsetY) + 'px';
- locationFrameContainer.style.right = 'auto'; // prevent weirdness
- locationFrameContainer.style.bottom = 'auto'; // prevent weirdness
- }
- function closeLocationFrame() {
- if (locationFrameContainer) {
- locationFrameContainer.remove();
- locationFrameContainer = null; // Clear the reference
- currentLocation = null; // Clear the stored location
- }
- }
- // Function to extract location from iframe
- function extractLocation() {
- try {
- const iframe = document.querySelector('#PanoramaIframe');
- const src = iframe.getAttribute('src');
- const url = new URL(src);
- return url.searchParams.get('location');
- } catch (e) {
- return null;
- }
- }
- // Key press listener, toggles the map
- document.addEventListener('keydown', function(event) {
- if (event.key === '1') {
- const location = extractLocation();
- if (location) {
- if (locationFrameContainer) {
- // Iframe exists, update the location if needed or close if current location matches
- const locationFrame = locationFrameContainer.querySelector('#locationFrame');
- if (locationFrame.src !== `https://www.google.com/maps?q=${location}&output=embed&z=${zoomLevel}`){
- locationFrame.src = `https://www.google.com/maps?q=${location}&output=embed&z=${zoomLevel}`;
- } else {
- closeLocationFrame();
- }
- } else {
- createLocationFrame(location);
- }
- currentLocation = location;
- } else {
- if(locationFrameContainer){
- closeLocationFrame(); //Close if location cannot be extracted
- }
- }
- }
- });
- //Try extracting location every second and update if it changes
- setInterval(() => {
- const location = extractLocation();
- if (location) {
- if (location !== currentLocation) {
- // Location has changed!
- if (locationFrameContainer) {
- const locationFrame = locationFrameContainer.querySelector('#locationFrame');
- locationFrame.src = `https://www.google.com/maps?q=${location}&output=embed&z=${zoomLevel}`;
- } else {
- createLocationFrame(location);
- }
- currentLocation = location; // Update the stored location
- }
- } else if (locationFrameContainer) {
- closeLocationFrame(); // Close the frame if no location can be found.
- }
- }, 1000);
- })();