Greasy Fork

Greasy Fork is available in English.

Fortnite Xbox Cloud Aim Assist with Debugging

Fully featured Fortnite aimbot with ESP, FOV control, auto-shoot, sliders, buttons, and debugging logs.

当前为 2024-12-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         Fortnite Xbox Cloud Aim Assist with Debugging
// @namespace    http://tampermonkey.net/
// @version      28.3
// @description  Fully featured Fortnite aimbot with ESP, FOV control, auto-shoot, sliders, buttons, and debugging logs.
// @author       You
// @match        https://www.xbox.com/en-US/play/launch/fortnite/BT5P2X999VH2
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const config = {
        enemySelector: '.enemy-class',
        playerSelector: '.PlayerInfo-module__container___ROgVL',
        aimInterval: 100,
        aimSmoothing: 0.2,
        fov: 60,
        fovRadius: 100,
        fovEnabled: true,
        enableESP: false,
        enableAimbot: true,
        autoShoot: false,
        distanceLimit: 500,
        aimSpeed: 0.2,
    };

    function debugLog(message) {
        console.log(`[DEBUG] ${message}`);
    }

    debugLog('Initializing script...');

    const guiStyle = `
        position: fixed;
        top: 10px;
        left: 10px;
        background: rgba(0, 0, 0, 0.7);
        color: white;
        padding: 10px;
        border-radius: 10px;
        z-index: 1000;
    `;

    const sliderStyle = `
        margin: 5px 0;
        width: 100%;
    `;

    const buttonStyle = `
        background: #4CAF50;
        color: white;
        border: none;
        padding: 5px 10px;
        margin: 5px 0;
        cursor: pointer;
        text-align: center;
        font-size: 14px;
        border-radius: 5px;
    `;

    const gui = document.createElement('div');
    gui.style.cssText = guiStyle;
    document.body.appendChild(gui);
    debugLog('GUI added to the page.');

    function createSlider(label, min, max, step, initialValue, onChange) {
        const container = document.createElement('div');
        container.style.marginBottom = '10px';

        const sliderLabel = document.createElement('label');
        sliderLabel.textContent = `${label}: ${initialValue}`;
        container.appendChild(sliderLabel);

        const slider = document.createElement('input');
        slider.type = 'range';
        slider.min = min;
        slider.max = max;
        slider.step = step;
        slider.value = initialValue;
        slider.style.cssText = sliderStyle;
        slider.addEventListener('input', (event) => {
            const value = parseFloat(event.target.value);
            sliderLabel.textContent = `${label}: ${value}`;
            onChange(value);
            debugLog(`${label} updated to ${value}`);
        });
        container.appendChild(slider);

        gui.appendChild(container);
    }

    function createButton(label, onClick) {
        const button = document.createElement('button');
        button.textContent = label;
        button.style.cssText = buttonStyle;
        button.addEventListener('click', onClick);
        gui.appendChild(button);
    }

    createSlider('Field of View (FOV)', 20, 180, 1, config.fov, (value) => {
        config.fov = value;
        updateFovCircle();
    });

    createSlider('Aim Smoothing', 0.1, 1, 0.1, config.aimSmoothing, (value) => {
        config.aimSmoothing = value;
    });

    createSlider('FOV Radius', 50, 500, 10, config.fovRadius, (value) => {
        config.fovRadius = value;
        updateFovCircle();
    });

    createButton('Toggle ESP', () => {
        config.enableESP = !config.enableESP;
        debugLog(`ESP ${config.enableESP ? 'Enabled' : 'Disabled'}`);
    });

    createButton('Toggle Aimbot', () => {
        config.enableAimbot = !config.enableAimbot;
        debugLog(`Aimbot ${config.enableAimbot ? 'Enabled' : 'Disabled'}`);
    });

    createButton('Toggle Auto-Shoot', () => {
        config.autoShoot = !config.autoShoot;
        debugLog(`Auto-Shoot ${config.autoShoot ? 'Enabled' : 'Disabled'}`);
    });

    const fovCircle = document.createElement('div');
    fovCircle.style.cssText = `
        position: fixed;
        top: 50%;
        left: 50%;
        width: ${config.fovRadius * 2}px;
        height: ${config.fovRadius * 2}px;
        border-radius: 50%;
        border: 2px solid red;
        pointer-events: none;
        transform: translate(-50%, -50%);
        opacity: 0.5;
        z-index: 999;
    `;
    document.body.appendChild(fovCircle);

    function updateFovCircle() {
        debugLog(`Updating FOV Circle to radius: ${config.fovRadius}`);
        fovCircle.style.width = `${config.fovRadius * 2}px`;
        fovCircle.style.height = `${config.fovRadius * 2}px`;
    }

    debugLog('FOV Circle initialized.');

    function aimAtEnemies() {
        const player = document.querySelector(config.playerSelector);
        const enemies = document.querySelectorAll(config.enemySelector);

        if (!player || enemies.length === 0) {
            debugLog('Player or enemies not found.');
            return;
        }

        enemies.forEach((enemy) => {
            const enemyRect = enemy.getBoundingClientRect();
            const playerRect = player.getBoundingClientRect();

            const enemyX = enemyRect.x + enemyRect.width / 2;
            const enemyY = enemyRect.y + enemyRect.height / 2;
            const playerX = playerRect.x + playerRect.width / 2;
            const playerY = playerRect.y + playerRect.height / 2;

            const angle = Math.atan2(enemyY - playerY, enemyX - playerX) * (180 / Math.PI);

            if (config.fovEnabled && Math.abs(angle) > config.fov / 2) {
                debugLog(`Enemy outside of FOV: ${angle}°`);
                return;
            }

            debugLog(`Aiming at enemy at angle: ${angle}°`);

            if (config.autoShoot) {
                debugLog('Auto-shoot triggered!');
            }
        });
    }

    setInterval(() => {
        if (config.enableAimbot) {
            aimAtEnemies();
        }
    }, config.aimInterval);

    debugLog('Aimbot initialized.');
})();