Lunar Aimbot, Crosshair, and FPS Booster for Fortnite on Xbox Cloud Gaming

Aimbot with smooth aim, custom crosshair, and FPS booster for Fortnite on Xbox cloud gaming (Made by CHATGPT)

目前为 2024-11-12 提交的版本。查看 最新版本

// ==UserScript==
// @name        Lunar Aimbot, Crosshair, and FPS Booster for Fortnite on Xbox Cloud Gaming
// @namespace   Violentmonkey Scripts
// @match       https://www.xbox.com/en-US/play/launch/fortnite/BT5P2X999VH2*
// @grant       none
// @version     2.1
// @author      -
// @description Aimbot with smooth aim, custom crosshair, and FPS booster for Fortnite on Xbox cloud gaming (Made by CHATGPT)
// ==/UserScript==
(function() {
    'use strict';

    let lunar;
    let sensitivitySettings;
    let nearbyTargets = [];
    const CROSSHAIR_LOCK_DISTANCE = 200;  // Distance to "lock" onto the target
    const SMOOTHNESS = 0.1;  // Smoothness factor for gradual aiming
    const TARGET_DETECTION_INTERVAL = 200;  // Detection update every 200ms (adjust as needed)
    let targetDetectionTimer;

    // Menu variables
    let menuVisible = true;
    let menuElement, espToggle, aimbotToggle, crosshairToggle;

    // Function to create and add custom crosshair to the page
    function createCustomCrosshair() {
        let crosshair = document.createElement('img');
        crosshair.src = "https://static-00.iconduck.com/assets.00/crosshair-icon-2048x2048-5h6w9rqc.png"; // Custom crosshair image URL
        crosshair.style.position = 'absolute';
        crosshair.style.top = '50%';
        crosshair.style.left = '50%';
        crosshair.style.transform = 'translate(-50%, -50%)';
        crosshair.style.zIndex = '9999';
        crosshair.style.pointerEvents = 'none';
        crosshair.style.width = '30px';  // Set the crosshair width to 30px (smaller size)
        crosshair.style.height = '30px'; // Set the crosshair height to 30px (smaller size)
        document.body.appendChild(crosshair);
    }

    // Function to create the menu
    function createMenu() {
        menuElement = document.createElement('div');
        menuElement.style.position = 'absolute';
        menuElement.style.top = '20px';
        menuElement.style.left = '20px';
        menuElement.style.zIndex = '10000';
        menuElement.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
        menuElement.style.padding = '15px';
        menuElement.style.borderRadius = '10px';
        menuElement.style.cursor = 'move';
        menuElement.style.fontFamily = 'Product Sans, sans-serif';
        menuElement.style.color = '#fff';

        const title = document.createElement('div');
        title.textContent = 'Aimbot ESP Menu';
        title.style.marginBottom = '10px';
        title.style.fontSize = '18px';
        menuElement.appendChild(title);

        // Toggle ESP
        espToggle = createToggleButton('ESP', true);
        menuElement.appendChild(espToggle);

        // Toggle Aimbot
        aimbotToggle = createToggleButton('Aimbot', true);
        menuElement.appendChild(aimbotToggle);

        // Toggle Crosshair
        crosshairToggle = createToggleButton('Crosshair', true);
        menuElement.appendChild(crosshairToggle);

        // Hide/Show menu button
        const hideMenuButton = document.createElement('button');
        hideMenuButton.textContent = 'Hide Menu';
        hideMenuButton.style.marginTop = '10px';
        hideMenuButton.onclick = toggleMenuVisibility;
        menuElement.appendChild(hideMenuButton);

        document.body.appendChild(menuElement);

        // Drag functionality
        let isDragging = false;
        let offsetX, offsetY;

        menuElement.onmousedown = function(e) {
            isDragging = true;
            offsetX = e.clientX - menuElement.offsetLeft;
            offsetY = e.clientY - menuElement.offsetTop;
            document.onmousemove = function(e) {
                if (isDragging) {
                    menuElement.style.left = e.clientX - offsetX + 'px';
                    menuElement.style.top = e.clientY - offsetY + 'px';
                }
            };
            document.onmouseup = function() {
                isDragging = false;
            };
        };
    }

    // Create a toggle button
    function createToggleButton(label, initialState) {
        const button = document.createElement('button');
        button.textContent = label + ': ' + (initialState ? 'ON' : 'OFF');
        button.style.marginBottom = '10px';
        button.style.padding = '5px 10px';
        button.style.cursor = 'pointer';
        button.onclick = function() {
            const isActive = button.textContent.includes('ON');
            button.textContent = label + ': ' + (isActive ? 'OFF' : 'ON');
            toggleFeature(label, !isActive);
        };
        return button;
    }

    // Toggle feature based on button click
    function toggleFeature(feature, state) {
        if (feature === 'ESP') {
            toggleESP(state);
        } else if (feature === 'Aimbot') {
            toggleAimbot(state);
        } else if (feature === 'Crosshair') {
            toggleCrosshair(state);
        }
    }

    // Toggle ESP visibility
    function toggleESP(state) {
        const espMarkers = document.querySelectorAll('.player-esp');
        espMarkers.forEach(marker => {
            marker.style.display = state ? 'block' : 'none';
        });
    }

    // Toggle Aimbot
    function toggleAimbot(state) {
        if (state) {
            if (!lunar) initializeAimbot();
        } else {
            if (lunar) lunar.update_status_aimbot();
        }
    }

    // Toggle Crosshair
    function toggleCrosshair(state) {
        const crosshair = document.querySelector('img');
        crosshair.style.display = state ? 'block' : 'none';
    }

    // Function to hide/show menu
    function toggleMenuVisibility() {
        menuVisible = !menuVisible;
        menuElement.style.display = menuVisible ? 'block' : 'none';
    }

    // Function to detect and render targets
    function detectTargets() {
        nearbyTargets = [
            { x: Math.random() * window.innerWidth, y: Math.random() * window.innerHeight, id: 'target_1' },
            { x: Math.random() * window.innerWidth, y: Math.random() * window.innerHeight, id: 'target_2' }
        ];

        highlightTargets(nearbyTargets);
        createPlayerESP(nearbyTargets);
    }

    // Function to highlight targets with boxes instead of circles
    function highlightTargets(targets) {
        targets.forEach(target => {
            const distanceToTarget = distance(window.innerWidth / 2, window.innerHeight / 2, target.x, target.y);

            if (distanceToTarget < CROSSHAIR_LOCK_DISTANCE) {
                // Highlight target with box
                const box = document.createElement('div');
                box.style.position = 'absolute';
                box.style.top = `${target.y - 25}px`;
                box.style.left = `${target.x - 25}px`;
                box.style.width = '50px';
                box.style.height = '50px';
                box.style.border = '2px solid red';
                box.style.zIndex = '9999';
                box.style.pointerEvents = 'none';
                box.style.opacity = '1';
                box.classList.add('player-esp');
                document.body.appendChild(box);
            }
        });
    }

    // Function to calculate the distance between two points
    function distance(x1, y1, x2, y2) {
        return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
    }

    // Function to initialize and start the aimbot
    function initializeAimbot() {
        lunar = new Aimbot({
            collect_data: location.href.includes('collect_data')
        });
        lunar.start();
    }

    // Aimbot class implementation (for automatic aim assistance)
    class Aimbot {
        constructor(options) {
            this.collectData = options.collect_data;
            this.isAimbotActive = false;
        }

        start() {
            console.log("[Aimbot] Aimbot is now active!");
            this.isAimbotActive = true;
            this.autoAimbot();
        }

        autoAimbot() {
            targetDetectionTimer = setInterval(() => {
                if (this.isAimbotActive) {
                    detectTargets();
                }
            }, TARGET_DETECTION_INTERVAL);
        }

        update_status_aimbot() {
            this.isAimbotActive = !this.isAimbotActive;
            console.log(this.isAimbotActive ? "[Aimbot] Aimbot enabled." : "[Aimbot] Aimbot disabled.");
            if (!this.isAimbotActive) clearInterval(targetDetectionTimer);
        }
    }

    // Initialize the menu and start everything
    createMenu();
    initializeAimbot();

})();