RXY V1 - Aimbot and ESP for cxryzen.io

Aimlock with right mouse button

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         RXY V1 - Aimbot and ESP for cxryzen.io
// @description  Aimlock with right mouse button
// @version      1.0.0
// @namespace    https://shadowt3ch.site/
// @author       ShadowT3ch
// @match        https://cryzen.io/*
// @run-at       document-start
// @license      Apache
// ==/UserScript==
// Material property definition
Object.defineProperty(Object.prototype, 'material', {
    get() { return this._material; },
    set(material) {
        if (this.type === 'SkinnedMesh' && this?.skeleton) {
            // Set custom properties for material
            Object.defineProperties(material, {
                'depthTest': {
                    get() { return false; },
                    set() {},
                },
                'transparent': {
                    get() { return true; },
                    set() {},
                }
            });

            // Set additional properties
            material.wireframe = true;
            material.opacity = 1;
        }
        this._material = material;
    }
});

// Game state property definition
(function () {
    Object.defineProperty(Object.prototype, 'gameState', {
        set(state) {
            window._debugWorld = state;
            let isRightClickHeld = false;
            let closestEnemy = null;

            // Interval to check for game state updates
            const gameWorldInterval = setInterval(() => {
                const { gameWorld } = window._debugWorld;

                if (gameWorld && gameWorld.server) {
                    clearInterval(gameWorldInterval);
                    const calculateDistance = (playerPos, enemyPos) =>
                        Math.hypot(enemyPos.x - playerPos.x, enemyPos.y - playerPos.y, enemyPos.z - playerPos.z);

                    const updatePlayerRotationAndPosition = () => {
                        const player = gameWorld.player;
                        const serverPlayers = gameWorld.server.players;

                        let closestDistance = Infinity;

                        // Reset closest enemy if they are dead
                        if (closestEnemy?.dead) closestEnemy = null;

                        // Find the closest enemy
                        Object.values(serverPlayers).forEach(enemy => {
                            if (enemy?.model?.position && enemy.isEnemy && !enemy.dead) {
                                const distance = calculateDistance(player.position, enemy.model.position);
                                if (distance < closestDistance) {
                                    closestDistance = distance;
                                    closestEnemy = enemy;
                                }
                            }
                        });

                        // Update player rotation and movement if scoped or right-click held
                        if (isRightClickHeld || player.weapon?.scoping) {
                            if (closestEnemy) {
                                const directionToEnemy = {
                                    x: closestEnemy.model.position.x - player.position.x,
                                    z: closestEnemy.model.position.z - player.position.z,
                                };

                                const rotationY = Math.atan2(directionToEnemy.x, directionToEnemy.z);
                                const verticalDistance = (closestEnemy.model.position.y + (closestEnemy.crouching ? 0.55 : 0.65)) - player.position.y;
                                const horizontalDistance = Math.hypot(directionToEnemy.x, directionToEnemy.z);
                                let rotationX = Math.atan2(verticalDistance, horizontalDistance);

                                // Constrain vertical rotation
                                rotationX = Math.max(Math.min(rotationX, Math.PI / 2), -Math.PI / 2);
                                const normalizedRotationY = (rotationY + Math.PI) % (2 * Math.PI);

                                // Apply rotations to player
                                player.rotation.y = normalizedRotationY;
                                player.rotation.x = rotationX;

                                // Move the player closer if too far from the enemy
                                const moveSpeed = 0.1;
                                const movement = { x: closestEnemy.model.position.x - player.position.x, z: closestEnemy.model.position.z - player.position.z };
                                const distanceToEnemy = Math.hypot(movement.x, movement.z);
                                if (distanceToEnemy > 1) {
                                    player.position.x += movement.x / distanceToEnemy * moveSpeed;
                                    player.position.z += movement.z / distanceToEnemy * moveSpeed;
                                }
                            }
                        }
                    };

                    // Event listeners for right-click hold
                    const onRightClickDown = (event) => { if (event.button === 2) isRightClickHeld = true; };
                    const onRightClickUp = (event) => { if (event.button === 2) isRightClickHeld = false; };

                    document.addEventListener('mousedown', onRightClickDown);
                    document.addEventListener('mouseup', onRightClickUp);

                    // Start the update loop
                    setInterval(updatePlayerRotationAndPosition, 2);
                }
            });
        },
        get() { return window._debugWorld; }
    });
})();