Untitled

 avatar
unknown
plain_text
6 days ago
6.3 kB
3
Indexable
// Tworzenie menu do gry i ustawienie jego stylu
const menu = document.createElement('div');
menu.id = 'gameMenu';
Object.assign(menu.style, {
    position: 'fixed',
    top: '50%', // Ustawienie na środek ekranu w pionie
    right: '10px', // Ustawienie na prawą stronę
    transform: 'translateY(-50%)', // Przemieszczanie w górę o połowę wysokości menu, żeby wyśrodkować
    width: '230px', // Szerokość menu
    padding: '15px', // Większy padding dla lepszego wyglądu
    background: 'rgba(0, 0, 0, 0.7)', // Trochę ciemniejszy tło, aby było subtelniejsze
    color: 'white', // Kolor tekstu
    border: '2px solid #444', // Ciemniejsza ramka dla lepszego kontrastu
    borderRadius: '12px', // Zaokrąglone rogi
    fontFamily: 'Arial, sans-serif', // Dodanie alternatywnej czcionki
    fontSize: '14px', // Rozmiar czcionki
    boxShadow: '0 4px 8px rgba(0, 0, 0, 0.5)', // Dodanie cienia, by menu wyglądało bardziej elegancko
    display: 'block'
});
document.body.appendChild(menu);

// Funkcja do znajdowania gracza o nazwie "raha"
function findPlayer() {
    return a0_0x4cd2c3.find(entity => entity && entity.oType === 2 && entity.nickName === "spermojad") || null;
}

// Funkcja do znajdowania najbliższego wroga
function findClosestEnemy(player) {
    return a0_0x4cd2c3.reduce((closest, entity) => {
        if (entity && entity.oType === 2 && entity.nickName !== "raha" && entity.nickName.trim() !== "") {
            const distance = Math.hypot(entity.ox - player.ox, entity.oy - player.oy);
            if (distance < (closest.distance || Infinity)) {
                return { entity, distance };
            }
        }
        return closest;
    }, {}).entity || null;
}

let lockedEnemy = null; // Zmienna przechowująca zablokowanego wroga
let isLocked = false;  // Zmienna określająca, czy wróg jest zablokowany

// Funkcja do aktualizacji menu
function updateMenu() {
    const player = findPlayer(); // Znajdź gracza
    const enemy = isLocked && lockedEnemy ? lockedEnemy : (player ? findClosestEnemy(player) : null); // Znajdź wroga (jeśli zablokowany, to ten zablokowany)

    let enemyText = enemy ? `Enemy: ${enemy.nickName}` : 'Enemy: Brak';
    // Jeśli wróg jest zablokowany, pokaż go w inny sposób
    if (isLocked && lockedEnemy) {
        enemyText = `<span style="color: red; font-weight: bold;">ZABLOKOWANO "${lockedEnemy.nickName}"</span>`;
    }

    if (player) {
        // Aktualizowanie treści menu o pozycję gracza i wroga
        menu.innerHTML = 
            `<b>Pozycja nasza:</b><br>
            🟢 Twój X: ${Math.round(player.ox)} <br>
            🟢 Twój Y: ${Math.round(player.oy)} <br>
            <b>Pozycja wroga:</b><br>
            🔴 ${enemyText} <br>
            🔴 Enemy X: ${enemy ? Math.round(enemy.ox) : 'Brak'} <br>
            🔴 Enemy Y: ${enemy ? Math.round(enemy.oy) : 'Brak'}`;

        // Jeśli zablokowany wróg zniknął, wyłącz blokadę
        if (isLocked && lockedEnemy && !a0_0x4cd2c3.includes(lockedEnemy)) {
            lockedEnemy = null;
            isLocked = false;
        }
    } else {
        menu.innerHTML = "<b>Brak danych o graczu</b>";
    }
}

setInterval(updateMenu, 50); // Odświeżanie menu co 50ms

// Funkcja do przełączania blokady wroga
function toggleLock() {
    const player = findPlayer();
    if (!player) return;

    if (isLocked) {
        lockedEnemy = null;
        isLocked = false;
    } else {
        const closestEnemy = findClosestEnemy(player);
        if (closestEnemy) {
            lockedEnemy = closestEnemy;
            isLocked = true;
        }
    }
}

// Obsługuje naciśnięcie klawisza "N" do przełączania blokady
document.addEventListener('keydown', (event) => {
    if ((event.key === 'n' || event.key === 'N')) {
        const player = findPlayer();
        if (!player) return;

        const closestEnemy = findClosestEnemy(player);
        if (closestEnemy) {
            toggleLock(); // Zmienianie stanu blokady
            toggleState = !toggleState; // Zmiana stanu aktywacji śledzenia
        }
    }
});

let toggleState = false; // Zmienna stanu śledzenia (włączone/wyłączone)

// Funkcja do aktualizacji pozycji celu (gracza lub wroga)
function a0_0x46e041() {
    // Sprawdzanie, czy zablokowany wróg nadal istnieje
    if (isLocked && lockedEnemy && !a0_0x4cd2c3.includes(lockedEnemy)) {
        lockedEnemy = null;
        isLocked = false;
        toggleState = false;
    }

    if (a0_0x153da2 || a0_0x54d6b2) {
        const _0x254dd4 = a0_0x4cd833[a0_0x19bfe7];
        if (_0x254dd4) {
            a0_0x37c8e9 = _0x254dd4['x'];
            a0_0x4e5c94 = _0x254dd4['y'];
        } else if (toggleState && a0_0x153da2) {
            a0_0x4e5c94 -= 10000;
        } else {
            return;
        }
    }

    let targetX, targetY;
    if (toggleState && isLocked && lockedEnemy && a0_0x4cd2c3.includes(lockedEnemy)) {
        // Jeśli wróg jest zablokowany, śledź jego pozycję
        targetX = lockedEnemy.ox;
        targetY = lockedEnemy.oy;
    } else {
        // W przeciwnym razie śledź kursor
        targetX = a0_0x37c8e9;
        targetY = a0_0x4e5c94;
    }

    // Przemieszczanie postaci w stronę celu
    if (a0_0xd2a4cf() && (a0_0x3f2f7d || a0_0x258499)) {
        const currentX = toggleState ? a0_0x37c8e9 : a0_0x4bef11;
        const currentY = toggleState ? a0_0x4e5c94 : a0_0x26fd7e;

        if (Math.abs(targetX - currentX) > 0.1 || Math.abs(targetY - currentY) > 0.1) {
            if (toggleState) {
                a0_0x37c8e9 = targetX;
                a0_0x4e5c94 = targetY;
            } else {
                a0_0x4bef11 = targetX;
                a0_0x26fd7e = targetY;
            }

            const mes = new a0_0xf533a9(a0_0x18962f);
            mes.writeUInt8(0x5);
            mes.writeInt16(targetX);
            mes.writeInt16(targetY);
            a0_0x23258b(mes); // Wysyłanie danych do serwera gry
        }
    }
}

setInterval(a0_0x46e041, 1); // Aktualizowanie pozycji celu co 1ms
setInterval(a0_0x3f427c, 1); // Uruchamianie innej funkcji co 1ms
Leave a Comment