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)

À partir de 2024-11-12. Voir la dernière version.

// ==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();

})();