Shell Shockers Crosshair + GUI

Create a Crosshair at the center of the screen with customizable size, color, and real-time preview within the GUI. Keybinding to hide/show the GUI, and watermark notifications.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Shell Shockers Crosshair + GUI
// @namespace    http://tampermonkey.net/
// @version      1.8
// @description  Create a Crosshair at the center of the screen with customizable size, color, and real-time preview within the GUI. Keybinding to hide/show the GUI, and watermark notifications.
// @author       97-
// @match        https://algebra.best/*
// @match        https://algebra.vip/*
// @match        https://biologyclass.club/*
// @match        https://deadlyegg.com/*
// @match        https://deathegg.world/*
// @match        https://egg.dance/*
// @match        https://eggboy.club/*
// @match        https://eggboy.xyz/*
// @match        https://eggcombat.com/*
// @match        https://eggfacts.fun/*
// @match        https://egghead.institute/*
// @match        https://eggisthenewblack.com/*
// @match        https://eggsarecool.com/*
// @match        https://eggshooter.best/*
// @match        https://geometry.best/*
// @match        https://geometry.monster/*
// @match        https://geometry.pw/*
// @match        https://geometry.report/*
// @match        https://shellshockers.today/*
// @match        https://hardboiled.life/*
// @match        https://hardshell.life/*
// @match        https://humanorganising.org/*
// @match        https://mathactivity.xyz/*
// @match        https://mathdrills.info/*
// @match        https://mathdrills.life/*
// @match        https://mathfun.rocks/*
// @match        https://mathgames.world/*
// @match        https://math.international/*
// @match        https://mathlete.fun/*
// @match        https://mathlete.pro/*
// @match        https://new.shellshock.io/*
// @match        https://overeasy.club/*
// @match        https://scrambled.best/*
// @match        https://scrambled.tech/*
// @match        https://scrambled.today/*
// @match        https://scrambled.us/*
// @match        https://shellshock.io/*
// @match        https://scrambled.world/*
// @match        https://shellshockers.today/*
// @match        https://shellsocks.com/*
// @match        https://shellshockers.club/*
// @match        https://shellshockers.site/*
// @match        https://shellshockers.us/*
// @match        https://shellshockers.world/*
// @match        https://shellshockers.xyz/*
// @match        https://softboiled.club/*
// @match        https://urbanegger.com/*
// @match        https://violentegg.club/*
// @match        https://violentegg.fun/*
// @match        https://yolk.best/*
// @match        https://yolk.life/*
// @match        https://yolk.quest/*
// @match        https://yolk.rocks/*
// @match        https://yolk.tech/*
// @match        https://yolk.today/*
// @match        https://zygote.cafe/*
// @license      GPL-3.0
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Create the Crosshair element
    let Crosshair = document.createElement('div');
    Crosshair.style.position = 'fixed';
    Crosshair.style.top = '50%';
    Crosshair.style.left = '50%';
    Crosshair.style.width = '20px'; // Default size
    Crosshair.style.height = '20px'; // Default size
    Crosshair.style.backgroundColor = '#ff0000'; // Default color
    Crosshair.style.borderRadius = '50%';
    Crosshair.style.transform = 'translate(-50%, -50%)';
    document.body.appendChild(Crosshair);

    // Variables to store the current customization settings
    let currentSize = '20';
    let currentColor = '#ff0000';

    // Create the GUI
    let gui = document.createElement('div');
    gui.style.position = 'fixed';
    gui.style.top = '10px';
    gui.style.left = '10px';
    gui.style.padding = '20px';
    gui.style.backgroundColor = 'rgba(0, 0, 0, 0.3)'; // 30% transparent background
    gui.style.color = '#fff';
    gui.style.fontFamily = 'Arial, sans-serif';
    gui.style.zIndex = '9999';
    gui.style.borderRadius = '10px';
    gui.style.border = '2px solid #fff'; // Border around the GUI
    gui.style.display = 'block'; // Initially visible
    document.body.appendChild(gui);

    // Create watermark notification
    let watermark = document.createElement('div');
    watermark.style.position = 'fixed';
    watermark.style.bottom = '-50px';
    watermark.style.left = '10px';
    watermark.style.padding = '10px';
    watermark.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';
    watermark.style.color = '#fff';
    watermark.style.fontFamily = 'Arial, sans-serif';
    watermark.style.borderRadius = '10px';
    watermark.style.transition = 'bottom 0.5s';
    watermark.style.zIndex = '9999';
    document.body.appendChild(watermark);

    // Function to show watermark
    function showWatermark(message) {
        watermark.textContent = message;
        watermark.style.bottom = '10px';
        setTimeout(() => {
            watermark.style.bottom = '-50px';
        }, 2000);
    }

    // Create size slider
    let sizeLabel = document.createElement('label');
    sizeLabel.textContent = 'Crosshair Size:';
    let sizeSlider = document.createElement('input');
    sizeSlider.type = 'range';
    sizeSlider.min = '5';
    sizeSlider.max = '100';
    sizeSlider.value = currentSize; // Default value
    sizeSlider.style.width = '100%';
    sizeSlider.addEventListener('input', function() {
        previewCrosshair.style.width = sizeSlider.value + 'px';
        previewCrosshair.style.height = sizeSlider.value + 'px';
    });

    // Create RGB color input
    let colorLabel = document.createElement('label');
    colorLabel.textContent = 'Crosshair Color:';
    let colorInput = document.createElement('input');
    colorInput.type = 'color';
    colorInput.value = currentColor; // Default color
    colorInput.addEventListener('input', function() {
        previewCrosshair.style.backgroundColor = colorInput.value;
    });

    // Create Crosshair On/Off Checkbox
    let CrosshairCheckboxLabel = document.createElement('label');
    CrosshairCheckboxLabel.textContent = 'Crosshair On/Off:';
    let CrosshairCheckbox = document.createElement('input');
    CrosshairCheckbox.type = 'checkbox';
    CrosshairCheckbox.checked = true; // Default is "On"
    CrosshairCheckbox.addEventListener('change', function() {
        if (CrosshairCheckbox.checked) {
            Crosshair.style.display = 'block';
            showWatermark('Crosshair ON');
        } else {
            Crosshair.style.display = 'none';
            showWatermark('Crosshair OFF');
        }
    });

    // Create the Submit button
    let submitButton = document.createElement('button');
    submitButton.textContent = 'Submit';
    submitButton.style.marginTop = '10px';
    submitButton.addEventListener('click', function() {
        // Apply the preview values to the actual Crosshair
        currentSize = sizeSlider.value;
        currentColor = colorInput.value;
        Crosshair.style.width = currentSize + 'px';
        Crosshair.style.height = currentSize + 'px';
        Crosshair.style.backgroundColor = currentColor;
        showWatermark('Crosshair Updated');
    });

    // Create a container for the preview Crosshair
    let previewContainer = document.createElement('div');
    previewContainer.style.border = '2px solid #fff'; // Border for the preview container
    previewContainer.style.padding = '10px'; // Padding inside the border
    previewContainer.style.margin = '10px 0'; // Space above and below the preview
    previewContainer.style.textAlign = 'center'; // Center align the contents

    // Create the preview Crosshair within the container
    let previewCrosshair = document.createElement('div');
    previewCrosshair.style.width = currentSize + 'px';
    previewCrosshair.style.height = currentSize + 'px';
    previewCrosshair.style.backgroundColor = currentColor;
    previewCrosshair.style.borderRadius = '50%';
    previewContainer.appendChild(previewCrosshair);

    // Append elements to GUI
    gui.appendChild(sizeLabel);
    gui.appendChild(sizeSlider);
    gui.appendChild(document.createElement('br'));
    gui.appendChild(colorLabel);
    gui.appendChild(colorInput);
    gui.appendChild(document.createElement('br'));
    gui.appendChild(CrosshairCheckboxLabel);
    gui.appendChild(CrosshairCheckbox);
    gui.appendChild(document.createElement('br'));
    gui.appendChild(previewContainer);
    gui.appendChild(submitButton);

    // Toggle GUI visibility on 'H' key press, but not when typing in input or textarea
    document.addEventListener('keydown', function(e) {
        if (e.key === 'h' || e.key === 'H') {
            let activeElement = document.activeElement;
            // Only toggle GUI if not typing in input or textarea fields
            if (activeElement.tagName !== 'INPUT' && activeElement.tagName !== 'TEXTAREA') {
                if (gui.style.display === 'none') {
                    gui.style.display = 'block';
                    showWatermark('GUI ON');
                } else {
                    gui.style.display = 'none';
                    showWatermark('GUI OFF');
                }
            }
        }
    });
})();