Greasy Fork

Greasy Fork is available in English.

Fortnite Xbox Cloud Silent Aim with Advanced Features

Advanced Fortnite Silent Aim with ESP, FOV control, auto-shoot, no recoil, controller support, enhanced GUI, crosshair overlay, and more.

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

// ==UserScript==
// @name         Fortnite Xbox Cloud Silent Aim with Advanced Features
// @namespace    http://tampermonkey.net/
// @version      32.6
// @description  Advanced Fortnite Silent Aim with ESP, FOV control, auto-shoot, no recoil, controller support, enhanced GUI, crosshair overlay, and more.
// @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,
        enableSilentAim: true,
        autoShoot: false,
        visibleCheck: true,
        distanceLimit: 500,
        hitbox: 'head', // Options: 'head', 'body', 'nearest'
        silentAimSpeed: 0.2,
        noRecoil: true,
        debugMode: true,
        crosshair: {
            enabled: true,
            size: 15,
            color: 'red',
            style: 'circle' // Options: 'circle', 'dot', 'cross'
        },
    };

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

    debugLog('Initializing script...');

    // GUI setup
    const guiStyle = `
        position: fixed;
        top: 10px;
        left: 10px;
        background: rgba(0, 0, 0, 0.8);
        color: white;
        padding: 10px;
        border-radius: 10px;
        z-index: 10000;
        font-family: Arial, sans-serif;
        cursor: move;
    `;

    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;
    `;

    // GUI setup
    const gui = document.createElement('div');
    gui.style.cssText = guiStyle;
    gui.id = 'custom-gui';
    gui.draggable = true;
    gui.innerHTML = `<h3>Silent Aim Controls</h3>`;
    document.body.appendChild(gui);
    debugLog('GUI added to the page.');

    // Make GUI draggable
    gui.addEventListener('dragstart', (e) => {
        const rect = gui.getBoundingClientRect();
        e.dataTransfer.setData('text/plain', JSON.stringify({
            offsetX: e.clientX - rect.left,
            offsetY: e.clientY - rect.top
        }));
    });

    gui.addEventListener('dragend', (e) => {
        const offset = JSON.parse(e.dataTransfer.getData('text/plain'));
        gui.style.left = `${e.clientX - offset.offsetX}px`;
        gui.style.top = `${e.clientY - offset.offsetY}px`;
    });

    // Utility functions for sliders and buttons
    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);
    }

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

    createSlider('Silent Aim Speed', 0.1, 1, 0.1, config.silentAimSpeed, (value) => {
        config.silentAimSpeed = value;
    });

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

    createSlider('Crosshair Size', 5, 50, 1, config.crosshair.size, (value) => {
        config.crosshair.size = value;
        updateCrosshair();
    });

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

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

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

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

    // Crosshair setup
    function updateCrosshair() {
        let crosshairElement = document.getElementById('custom-crosshair');
        if (!crosshairElement) {
            crosshairElement = document.createElement('div');
            crosshairElement.id = 'custom-crosshair';
            document.body.appendChild(crosshairElement);
        }

        const size = config.crosshair.size;
        const color = config.crosshair.color;
        const style = config.crosshair.style;

        crosshairElement.style.position = 'absolute';
        crosshairElement.style.top = '50%';
        crosshairElement.style.left = '50%';
        crosshairElement.style.transform = 'translate(-50%, -50%)';
        crosshairElement.style.pointerEvents = 'none';
        crosshairElement.style.zIndex = '10000';

        if (style === 'circle') {
            crosshairElement.style.width = `${size}px`;
            crosshairElement.style.height = `${size}px`;
            crosshairElement.style.border = `2px solid ${color}`;
            crosshairElement.style.borderRadius = '50%';
        } else if (style === 'dot') {
            crosshairElement.style.width = `${size / 4}px`;
            crosshairElement.style.height = `${size / 4}px`;
            crosshairElement.style.background = color;
            crosshairElement.style.borderRadius = '50%';
        } else if (style === 'cross') {
            crosshairElement.style.width = `${size}px`;
            crosshairElement.style.height = `${size}px`;
            crosshairElement.style.border = `1px solid ${color}`;
        }
    }

    if (config.crosshair.enabled) {
        updateCrosshair();
    }
})();