Custom Crosshairs for Krunker, 1v1.lol, and Anything Else.

Custom Crosshiars For Literally ANYTHING--Hide The Menu Using "P"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Custom Crosshairs for Krunker, 1v1.lol, and Anything Else.
// @namespace    http://tampermonkey.net/
// @version      3.1
// @description  Custom Crosshiars For Literally ANYTHING--Hide The Menu Using "P"
// @author       LCM
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Create a container for the menu
    const menuContainer = document.createElement('div');
    menuContainer.style.position = 'fixed';
    menuContainer.style.top = '10px';
    menuContainer.style.left = '10px';
    menuContainer.style.zIndex = '10000';
    menuContainer.style.backgroundColor = 'black';
    menuContainer.style.padding = '50px'; // Increased padding for more space
    menuContainer.style.borderRadius = '10px';
    menuContainer.style.display = 'flex'; // Use flexbox for better layout control
    menuContainer.style.flexDirection = 'column'; // Align buttons vertically
    menuContainer.style.userSelect = 'none'; // Disable text selection

    // Make the menu draggable
    makeDraggable(menuContainer);

    // Make the menu resizable
    makeResizable(menuContainer);

    // Create an "Authors" title
    const authorsTitle = document.createElement('div');
    authorsTitle.innerText = 'Made By - LCM';
    authorsTitle.style.color = 'white';
    authorsTitle.style.fontWeight = 'bold';
    authorsTitle.style.marginBottom = '10px';
    menuContainer.appendChild(authorsTitle);

    // Create buttons to toggle different shapes
    const shapeButtons = ['Square', 'Circle', 'ESP Rectangle'].map(createShapeButton);

    // Create shape elements
    const shapes = {
        Square: createShape('20px', '20px', '2px solid white'),
        Circle: createShape('20px', '20px', '2px solid white', '50%', '50%'),
        'ESP Rectangle': createShape('60px', '30px', '2px solid white', '0deg', '50%', '50%'),
    };

    // Append the shapes to the body
    Object.values(shapes).forEach(shape => document.body.appendChild(shape));

    // Append the menu container to the body
    document.body.appendChild(menuContainer);

    // Append the buttons to the menu container
    shapeButtons.forEach(button => menuContainer.appendChild(button));

    // Add buttons for Red, Blue, Green, Purple, White Crosshairs
    const redCrosshairsButton = createColorButton('Red Crosshairs', 'red');
    const blueCrosshairsButton = createColorButton('Blue Crosshairs', 'blue');
    const greenCrosshairsButton = createColorButton('Green Crosshairs', 'green');
    const purpleCrosshairsButton = createColorButton('Purple Crosshairs', 'purple');
    const whiteCrosshairsButton = createColorButton('White Crosshairs', 'white');
    menuContainer.appendChild(redCrosshairsButton);
    menuContainer.appendChild(blueCrosshairsButton);
    menuContainer.appendChild(greenCrosshairsButton);
    menuContainer.appendChild(purpleCrosshairsButton);
    menuContainer.appendChild(whiteCrosshairsButton);

    // Hotkey to toggle menu visibility
    document.addEventListener('keydown', (event) => {
        if (event.key === 'p' || event.key === 'P') {
            toggleMenuVisibility();
        }
    });

    // Function to toggle the display of the menu
    function toggleMenuVisibility() {
        if (menuContainer.style.display === 'none') {
            menuContainer.style.display = 'flex';
        } else {
            menuContainer.style.display = 'none';
        }
    }

    // Function to make an element draggable
    function makeDraggable(element) {
        let offsetX, offsetY;
        let isDragging = false;

        element.addEventListener('mousedown', (event) => {
            isDragging = true;
            offsetX = event.clientX - element.getBoundingClientRect().left;
            offsetY = event.clientY - element.getBoundingClientRect().top;
        });

        document.addEventListener('mousemove', (event) => {
            if (isDragging) {
                element.style.left = event.clientX - offsetX + 'px';
                element.style.top = event.clientY - offsetY + 'px';
            }
        });

        document.addEventListener('mouseup', () => {
            isDragging = false;
        });
    }

    // Function to make an element resizable
    function makeResizable(element) {
        const handle = document.createElement('div');
        handle.style.position = 'absolute';
        handle.style.width = '10px';
        handle.style.height = '10px';
        handle.style.background = 'white';
        handle.style.right = '0';
        handle.style.bottom = '0';
        handle.style.cursor = 'se-resize';

        handle.addEventListener('mousedown', (event) => {
            event.preventDefault();
            const startX = event.clientX;
            const startY = event.clientY;
            const startWidth = parseInt(document.defaultView.getComputedStyle(element).width, 10);
            const startHeight = parseInt(document.defaultView.getComputedStyle(element).height, 10);

            function handleMouseMove(e) {
                const newWidth = startWidth + e.clientX - startX;
                const newHeight = startHeight + e.clientY - startY;
                element.style.width = `${newWidth}px`;
                element.style.height = `${newHeight}px`;
            }

            function handleMouseUp() {
                document.removeEventListener('mousemove', handleMouseMove);
                document.removeEventListener('mouseup', handleMouseUp);
            }

            document.addEventListener('mousemove', handleMouseMove);
            document.addEventListener('mouseup', handleMouseUp);
        });

        element.appendChild(handle);
    }

    // Function to create a button for a shape
    function createShapeButton(shape) {
        const button = document.createElement('button');
        button.innerText = `Toggle ${shape}`;
        button.style.marginBottom = '10px'; // Adjust the margin
        button.style.width = '100%';
        button.addEventListener('click', () => toggleShape(shape));
        return button;
    }

    // Function to toggle the display of a shape
    function toggleShape(shape) {
        const currentShape = shapes[shape];
        if (currentShape.style.display === 'none') {
            currentShape.style.display = 'block';
        } else {
            currentShape.style.display = 'none';
        }
    }

    // Function to create a button for a color
    function createColorButton(label, color) {
        const button = document.createElement('button');
        button.innerText = label;
        button.style.marginTop = '10px'; // Adjusted margin to separate from other buttons
        button.style.width = '100%';
        button.style.height = '40px'; // Set the height for a square button
        button.style.backgroundColor = color;
        button.addEventListener('click', () => toggleColorCrosshairs(color));
        return button;
    }

    // Function to toggle the color of all shapes to the specified color
    function toggleColorCrosshairs(color) {
        Object.values(shapes).forEach(shape => {
            shape.style.borderColor = color;
        });
    }

    // Function to create a basic shape element
    function createShape(width, height, border, borderRadius = '0', positionTop = '50%', positionLeft = '50%', transform = '0') {
        const shape = document.createElement('div');
        shape.style.position = 'fixed';
        shape.style.top = positionTop;
        shape.style.left = positionLeft;
        shape.style.transform = `translate(-${positionLeft}, -${positionTop}) rotate(${transform})`;
        shape.style.width = width;
        shape.style.height = height;
        shape.style.border = border;
        shape.style.borderRadius = borderRadius;
        shape.style.boxSizing = 'border-box';
        shape.style.zIndex = '9999';
        shape.style.display = 'none';
        return shape;
    }
})();