Kour.io チート

究極の Kour.io 体験。機能: オートエイム、ウォールハック ESP、インスタントキル、レイジスピンボット、Bhop Strafe。

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         Kour.io cheat
// @name:en      Kour.io cheat
// @name:zh-CN   Kour.io 辅助
// @name:zh-TW   Kour.io 輔助
// @name:es      Kour.io Cheat
// @name:pt-BR   Kour.io Cheat
// @name:ru      Kour.io Читы
// @name:fr      Kour.io Cheat
// @name:de      Kour.io Cheat
// @name:ja      Kour.io チート
// @name:ko      Kour.io 치트
// @name:it      Kour.io Cheat
// @name:pl      Kour.io Cheat
// @name:nl      Kour.io Cheat
// @name:tr      Kour.io Cheat
// @name:el      Kour.io Cheat
// @name:uk      Kour.io Чити
// @name:fa      Kour.io چیت
// @name:ar      Kour.io غش
// @name:he      Kour.io צ'יט
// @name:vi      Kour.io Cheat
// @name:th      Kour.io โปร
// @name:id      Kour.io Cheat
// @name:hi      Kour.io चीट
// @name:bn      Kour.io চিট
// @name:cs      Kour.io Cheat
// @name:hu      Kour.io Cheat
// @name:ro      Kour.io Cheat
// @name:fi      Kour.io Cheat
// @name:sv      Kour.io Cheat
// @name:da      Kour.io Cheat
// @match        *://kour.io/*
// @version      1.0
// @author       xonena
// @icon         https://gogamego.io/wp-content/uploads/thumbs/custom/K/kour.io_.webp
// @description  The Ultimate Kour.io Experience. Features: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:en The Ultimate Kour.io Experience. Features: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:zh-CN 终极 Kour.io 体验。功能:自动瞄准、透视 (ESP)、即时击杀、狂暴陀螺 (Spinbot)、连跳 (Bhop)。
// @description:zh-TW 終極 Kour.io 體驗。功能:自動瞄準、透視 (ESP)、即時擊殺、狂暴陀螺 (Spinbot)、連跳 (Bhop)。
// @description:es La experiencia definitiva de Kour.io. Características: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:pt-BR A melhor experiência Kour.io. Recursos: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:ru Лучший опыт Kour.io. Функции: Автоприцеливание, Wallhack ESP, Мгновенное убийство, Rage Spinbot, Bhop Strafe.
// @description:fr L'expérience ultime Kour.io. Caractéristiques : Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:de Das ultimative Kour.io-Erlebnis. Funktionen: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:ja 究極の Kour.io 体験。機能: オートエイム、ウォールハック ESP、インスタントキル、レイジスピンボット、Bhop Strafe。
// @description:ko 궁극의 Kour.io 경험. 특징: 오토 에임, 월핵 ESP, 인스턴트 킬, 레이지 스핀봇, Bhop Strafe.
// @description:it L'esperienza definitiva di Kour.io. Caratteristiche: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:pl Najlepsze doświadczenie Kour.io. Funkcje: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:nl De ultieme Kour.io-ervaring. Kenmerken: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:tr En iyi Kour.io deneyimi. Özellikler: Otomatik Nişan, Wallhack ESP, Anında Öldürme, Rage Spinbot, Bhop Strafe.
// @description:el Η απόλυτη εμπειρία Kour.io. Χαρακτηριστικά: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:uk Найкращий досвід Kour.io. Функції: Автоприцілювання, Wallhack ESP, Миттєве вбивство, Rage Spinbot, Bhop Strafe.
// @description:fa تجربه نهایی Kour.io. ویژگی ها: Aimbot خودکار، Wallhack ESP، کشتن فوری، Rage Spinbot، Bhop Strafe.
// @description:ar تجربة Kour.io المثالية. الميزات: Aimbot تلقائي ، Wallhack ESP ، قتل فوري ، Rage Spinbot ، Bhop Strafe.
// @description:he חווית Kour.io האולטימטיבית. תכונות: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:vi Trải nghiệm Kour.io đỉnh cao. Tính năng: Tự động ngắm, Wallhack ESP, Giết tức thì, Rage Spinbot, Bhop Strafe.
// @description:th ประสบการณ์ Kour.io ขั้นสุดยอด คุณสมบัติ: เล็งอัตโนมัติ, Wallhack ESP, ฆ่าทันที, Rage Spinbot, Bhop Strafe.
// @description:id Pengalaman Kour.io Terbaik. Fitur: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:hi परम Kour.io अनुभव। विशेषताएं: ऑटो एम्बोट, वॉलहैक ईएसपी, इंस्टेंट किल, रेज स्पिनबॉट, भॉप स्ट्रैफ।
// @description:bn চূড়ান্ত Kour.io অভিজ্ঞতা। বৈশিষ্ট্য: অটো আইমবট, ওয়ালহ্যাক ESP, ইনস্ট্যান্ট কিল, রেজ স্পিনবট, ভপ স্ট্রাফ।
// @description:cs Nejlepší zážitek z Kour.io. Funkce: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:hu A végső Kour.io élmény. Jellemzők: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:ro Experiența supremă Kour.io. Caracteristici: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:fi Ultimate Kour.io -kokemus. Ominaisuudet: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:sv Den ultimata Kour.io-upplevelsen. Funktioner: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @description:da Den ultimative Kour.io-oplevelse. Funktioner: Auto Aimbot, Wallhack ESP, Instant Kill, Rage Spinbot, Bhop Strafe.
// @run-at       document-start
// @grant        unsafeWindow
// @namespace https://greatest.deepsurf.us/users/1522142
// ==/UserScript==

(function () {
    ("use strict");



    const Signatures = {
        damageTaken: "f3 04 c8 02 f5 15 04",
        updateState: "f3 02 fd 02 f4 03 c8",
    };

    function hexOf(buf) {
        return Array.from(new Uint8Array(buf))
            .map((b) => b.toString(16).padStart(2, "0"))
            .join(" ");
    }

    function shouldBlockDamage(ev) {
        return (
            ev.data instanceof ArrayBuffer &&
            hexOf(ev.data).startsWith(Signatures.damageTaken) &&
            kourInstance.config.Invisible
        );
    }

    function arrayStartsWith(arr, prefix) {
        if (arr.length < prefix.length) return false;
        for (let i = 0; i < prefix.length; i++) {
            if (arr[i] !== prefix[i]) return false;
        }
        return true;
    }



    const HEADER_SIG = [0xf3, 0x02, 0xfd, 0x02, 0xf4, 0x03];
    const SAFE_MIN_LENGTH = 70;





    (function hookWS() {
        const OrigWS = unsafeWindow.WebSocket;
        unsafeWindow.WebSocket = function (...args) {
            const ws = new OrigWS(...args);

            const { addEventListener } = ws;
            ws.addEventListener = (type, fn, opts) =>
                addEventListener.call(
                    ws,
                    type,
                    type === "message" ? (ev) => shouldBlockDamage(ev) || fn(ev) : fn,
                    opts
                );

            const protoDesc = Object.getOwnPropertyDescriptor(OrigWS.prototype, "onmessage");
            Object.defineProperty(ws, "onmessage", {
                set(fn) {
                    protoDesc.set.call(this, (ev) => shouldBlockDamage(ev) || fn(ev));
                },
                get() {
                    return protoDesc.get.call(this);
                },
            });

            const originalSend = ws.send;
            ws.send = function (data) {
                if (data instanceof ArrayBuffer || data instanceof Uint8Array) {
                    let packet = data instanceof Uint8Array ? data : new Uint8Array(data);

                    const hex = hexOf(packet);

                    if (hex.startsWith(Signatures.updateState) && kourInstance.config.Instakill) {
                        for (let i = 0; i < 41; i++) originalSend.call(ws, data);
                        return;
                    }

                }

                return originalSend.call(this, data);
            };

            return ws;
        };

        unsafeWindow.WebSocket.prototype = OrigWS.prototype;
    })();

    class Kour {
        constructor() {
            this.config = {
                Invisible: true,
                Instakill: false,
                airStrafing: true,
            };
        }
    }

    const kourInstance = new Kour();
    unsafeWindow.kourInstance = kourInstance;

    const weapons = [
        { name: "AK-47", id: "0" }, { name: "Deagle", id: "1" }, { name: "AWP", id: "2" }, { name: "Bayonet", id: "3" },
        { name: "Uzi", id: "4" }, { name: "PKM", id: "5" }, { name: "Revolver", id: "6" }, { name: "RPG", id: "7" },
        { name: "USPS", id: "8" }, { name: "MP5", id: "9" }, { name: "Shotgun", id: "10" }, { name: "Glock", id: "11" },
        { name: "Karambit", id: "12" }, { name: "Knife", id: "13" }, { name: "Scar", id: "14" }, { name: "Minigun", id: "15" },
        { name: "Famas", id: "16" }, { name: "Vector", id: "17" }, { name: "Flamethrower", id: "18" }, { name: "Kar98k", id: "19" },
        { name: "M4A4", id: "20" }, { name: "Tec-9", id: "21" }, { name: "CZ", id: "22" }, { name: "Berretta92fs", id: "23" },
        { name: "AK-109", id: "24" }, { name: "P90", id: "25" }, { name: "Thompson", id: "26" }, { name: "UMP45", id: "27" },
        { name: "XM1014", id: "28" }, { name: "Butterfly", id: "29" }, { name: "Laser Gun", id: "30" }, { name: "Bomb", id: "31" },
        { name: "Smoke", id: "32" }, { name: "Molotov", id: "33" }, { name: "Grenade", id: "34" }, { name: "Flash", id: "35" },
        { name: "Glizzy", id: "36" }, { name: "Axe", id: "37" }, { name: "Bare Fists", id: "38" },
    ];

    function setSecondaryWeapon(weaponID) {
        firebase.database().ref("users/" + firebase.auth().currentUser.uid).child("overrideWeaponIndexes1").set(weaponID);
        showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser);
    }

    function setMeleeWeapon(weaponID) {
        firebase.database().ref("users/" + firebase.auth().currentUser.uid).child("overrideWeaponIndexes2").set(weaponID);
        showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser);
    }

    const skins = [
        { name: "KBI Agent", id: "12" }, { name: "James Kour", id: "13" }, { name: "President", id: "14" },
        { name: "Doctor", id: "15" }, { name: "Trickster", id: "16" }, { name: "Royal Guard", id: "17" },
        { name: "Xmas", id: "18" }, { name: "Kelvis", id: "19" }, { name: "Peter", id: "27" },
        { name: "Chicken", id: "28" }, { name: "Kyle", id: "30" }, { name: "Hackour", id: "37" },
        { name: "Banana", id: "59" }, { name: "Chef", id: "81" }, { name: "Drakour", id: "94" }
    ];

    function setSkin(skinID) {
        firebase.database().ref("users/" + firebase.auth().currentUser.uid).child("skin").set(skinID);
        showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser);
    }

    function setStat(stat, value) {
        const parsedValue = parseInt(value, 10);
        firebase.database().ref("users/" + firebase.auth().currentUser.uid + "/public").child(stat).set(isNaN(parsedValue) ? value : parsedValue);
        showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser);
    }

    function overrideCreateClan() {
        if (typeof createClan === 'function') {
            createClan = function (clanName, leaderUserId, clanColor, reqID) {
                unityInstanceWrapper.sendMessage(firebaseObjName, 'OnSetDataNew', clanName + "&" + reqID);
            };
        } else {
            setTimeout(overrideCreateClan, 500);
        }
    }
    overrideCreateClan();

    const classMap = { Soldier: "class0kills", Hitman: "class1kills", Gunner: "class2kills", Heavy: "class3kills", Rocketeer: "class4kills", Agent: "class5kills", Brawler: "class6kills", Investor: "class7kills", Assassin: "class8kills", Juggernaut: "class9kills", Recon: "class10kills", Pyro: "class11kills", Rayblader: "class15kills" };

    function setClassKills() {
        const kills = prompt("Enter kills for all classes:", "10000");
        if (!kills) return;
        Object.values(classMap).forEach(field => {
            firebase.database().ref(`users/${firebase.auth().currentUser.uid}`).update({ [field]: parseInt(kills) });
        });
        showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser);
    }



    let gl = null;
    const filters = [{ min: 1481, max: 1483 }, { min: 1553, max: 1555 }, { min: 5615, max: 5617 }, { min: 3875, max: 3877 }];
    window.espEnabled = true;

    const WebGL = WebGL2RenderingContext.prototype;
    HTMLCanvasElement.prototype.getContext = new Proxy(HTMLCanvasElement.prototype.getContext, {
        apply(target, thisArgs, args) {
            if (args[1]) args[1].preserveDrawingBuffer = true;
            return Reflect.apply(...arguments);
        },
    });

    try { window.espColor = JSON.parse(localStorage.getItem("espColorRGB")) || { r: 255, g: 0, b: 255 }; } catch { window.espColor = { r: 255, g: 0, b: 255 }; }

    const settings = { crosshairEnabled: false, damagenumbersoff: false };

    const drawHandler = {
        apply(target, thisArgs, args) {
            const count = args[1];
            if ((count === 300 && settings.crosshairEnabled) || (count === 24 && settings.damagenumbersoff) || (count === 1098 && window.hideArms)) return;
            const program = thisArgs.getParameter(thisArgs.CURRENT_PROGRAM);
            if (!program.uniforms) {
                program.uniforms = {
                    vertexCount: thisArgs.getUniformLocation(program, "vertexCount"),
                    espToggle: thisArgs.getUniformLocation(program, "espToggle"),
                    espColor: thisArgs.getUniformLocation(program, "espColor"),
                };
            }
            if (program.uniforms.vertexCount) thisArgs.uniform1f(program.uniforms.vertexCount, count);
            if (program.uniforms.espToggle) thisArgs.uniform1f(program.uniforms.espToggle, window.espEnabled ? 1.0 : 0.0);
            if (program.uniforms.espColor && window.espColor) thisArgs.uniform3f(program.uniforms.espColor, window.espColor.r / 255, window.espColor.g / 255, window.espColor.b / 255);
            gl = thisArgs;
            return Reflect.apply(...arguments);
        },
    };
    WebGL.drawElements = new Proxy(WebGL.drawElements, drawHandler);
    WebGL.drawElementsInstanced = new Proxy(WebGL.drawElementsInstanced, drawHandler);

    WebGL.shaderSource = new Proxy(WebGL.shaderSource, {
        apply(target, thisArgs, args) {
            let [shader, src] = args;
            if (src.includes("gl_Position")) {
                const conditions = filters.map(({ min, max }) => `(vertexCount >= ${min}.0 && vertexCount <= ${max}.0)`).join(" || ");
                src = src.replace(/void\s+main\s*\(\s*\)\s*\{/, `uniform float vertexCount;\nuniform float espToggle;\nout float vVertexCount;\nvoid main() {\nvVertexCount = vertexCount;\n`).replace(/(gl_Position\s*=.+;)/, `$1\nif (espToggle > 0.5 && (${conditions})) {\n  gl_Position.z = 0.01 + gl_Position.z * 0.1;\n}`);
            }
            if (src.includes("SV_Target0")) {
                const conditions = filters.map(({ min, max }) => `(vVertexCount >= ${min}.0 && vVertexCount <= ${max}.0)`).join(" || ");
                src = src.replace(/void\s+main\s*\(\s*\)\s*\{/, `uniform float espToggle;\nin float vVertexCount;\nuniform vec3 espColor;\nvoid main() {`).replace(/return;/, `if (espToggle > 0.5 && (${conditions}) && SV_Target0.a > 0.5) {\n  SV_Target0 = vec4(espColor, 1.0);\n}\nreturn;`);
            }
            args[1] = src;
            return Reflect.apply(...arguments);
        },
    });

    let fovCircleEnabled = true;
    const fovCanvas = document.createElement('canvas');
    Object.assign(fovCanvas.style, { position: 'fixed', top: '0', left: '0', pointerEvents: 'none', zIndex: '9999' });
    document.body.appendChild(fovCanvas);
    const fovCtx = fovCanvas.getContext('2d');
    const resize = () => { fovCanvas.width = window.innerWidth; fovCanvas.height = window.innerHeight; };
    resize(); window.addEventListener('resize', resize);

    function drawFOVCircle() {
        fovCtx.clearRect(0, 0, fovCanvas.width, fovCanvas.height);
        if (!fovCircleEnabled) return;
        fovCtx.beginPath(); fovCtx.arc(window.innerWidth / 2, window.innerHeight / 2, 80, 0, Math.PI * 2);
        fovCtx.strokeStyle = 'rgba(0, 255, 204, 0.6)'; fovCtx.lineWidth = 2; fovCtx.stroke();
    }

    setInterval(() => {
        drawFOVCircle();
    }, 0);

    function createUI() {
        const style = document.createElement("style");
        style.textContent = `
            @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Inter:wght@300;500;700&display=swap');
            :root {
                --bg: rgba(10, 10, 15, 0.98);
                --accent: #00ffcc;
                --accent-glow: rgba(0, 255, 204, 0.4);
                --panel: rgba(25, 25, 30, 0.9);
                --text: #fff;
                --text-dim: #888;
                --grad: linear-gradient(135deg, #00ffcc, #0099ff);
            }
            #kourMain {
                position: fixed; top: 50px; right: 50px; width: 360px;
                background: var(--bg); color: var(--text);
                font-family: 'Inter', sans-serif;
                border-radius: 16px; border: 1px solid rgba(0, 255, 204, 0.2);
                box-shadow: 0 0 40px rgba(0,0,0,0.8), 0 0 20px var(--accent-glow);
                z-index: 10000; overflow: hidden; backdrop-filter: blur(20px);
                display: flex; flex-direction: column;
                animation: slideIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
            }
            @keyframes slideIn { from { opacity: 0; transform: translateX(50px) scale(0.9); } to { opacity: 1; transform: translateX(0) scale(1); } }
            #kourHeader {
                padding: 25px; background: rgba(0,0,0,0.4);
                border-bottom: 1px solid rgba(0,255,204,0.1);
                position: relative; overflow: hidden;
            }
            #kourHeader::after {
                content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%;
                background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);
                opacity: 0.1; animation: rotate 10s linear infinite;
            }
            @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
            #kourTitle { font-family: 'Orbitron', sans-serif; font-size: 22px; font-weight: 900; letter-spacing: 2px; background: var(--grad); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
            #kourAuthor { font-size: 11px; color: var(--text-dim); text-transform: uppercase; margin-top: 5px; font-weight: 600; letter-spacing: 1px; }
            #kourTabs { display: flex; padding: 10px; gap: 8px; background: rgba(0,0,0,0.3); }
            .kourTab {
                flex: 1; padding: 12px; text-align: center; cursor: pointer;
                font-size: 11px; font-weight: 700; color: var(--text-dim);
                border-radius: 10px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
                border: 1px solid transparent;
            }
            .kourTab:hover { color: var(--text); background: rgba(255,255,255,0.05); }
            .kourTab.active { color: #000; background: var(--grad); box-shadow: 0 0 15px var(--accent-glow); border-color: rgba(255,255,255,0.2); }
            #kourContent { padding: 25px; max-height: 480px; overflow-y: auto; scrollbar-width: none; }
            #kourContent::-webkit-scrollbar { display: none; }
            .kourSection { display: none; }
            .kourSection.active { display: block; animation: sectionIn 0.4s ease-out; }
            @keyframes sectionIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
            .kourRow {
                display: flex; justify-content: space-between; align-items: center;
                margin-bottom: 12px; padding: 14px 18px; background: var(--panel);
                border-radius: 12px; border: 1px solid rgba(255,255,255,0.03);
                transition: all 0.2s;
            }
            .kourRow:hover { border-color: var(--accent); transform: scale(1.02); box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
            .kourLabel { font-size: 13px; font-weight: 600; letter-spacing: 0.5px; }
            .kourToggle {
                position: relative; width: 44px; height: 22px;
                appearance: none; background: #222; border-radius: 11px;
                outline: none; cursor: pointer; transition: 0.4s;
                border: 1px solid rgba(255,255,255,0.1);
            }
            .kourToggle:checked { background: var(--grad); border-color: transparent; }
            .kourToggle::before {
                content: ''; position: absolute; width: 16px; height: 16px;
                border-radius: 50%; top: 2px; left: 2px; background: #fff;
                transition: 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
                box-shadow: 0 2px 5px rgba(0,0,0,0.4);
            }
            .kourToggle:checked::before { transform: translateX(22px); }
            .kourSliderContainer { margin-bottom: 20px; padding: 14px 18px; background: var(--panel); border-radius: 12px; }
            .kourSlider { width: 100%; height: 6px; background: #111; border-radius: 3px; appearance: none; outline: none; margin-top: 15px; }
            .kourSlider::-webkit-slider-thumb { appearance: none; width: 18px; height: 18px; background: #fff; border-radius: 50%; cursor: pointer; box-shadow: 0 0 10px var(--accent); border: 4px solid var(--accent); }
            .kourBtn {
                width: 100%; padding: 15px; margin-top: 12px; background: var(--grad);
                color: #000; border: none; border-radius: 12px; font-weight: 800;
                font-family: 'Orbitron', sans-serif; font-size: 12px; cursor: pointer;
                transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
                box-shadow: 0 4px 15px rgba(0,0,0,0.3);
            }
            .kourBtn:hover { transform: translateY(-3px); box-shadow: 0 8px 25px var(--accent-glow); }
            .kourBtn:active { transform: translateY(-1px); }
            .kourBtn.secondary { background: rgba(255,255,255,0.05); color: var(--text); border: 1px solid rgba(255,255,255,0.1); }
            .kourBtn.secondary:hover { background: rgba(255,255,255,0.1); border-color: var(--accent); }
            .kourColor { border: 2px solid rgba(255,255,255,0.1); background: none; width: 34px; height: 34px; cursor: pointer; border-radius: 8px; padding: 0; }
            .kourBadge { font-size: 9px; background: var(--accent); color: #000; padding: 2px 6px; border-radius: 4px; font-weight: 900; margin-left: 10px; vertical-align: middle; }
        `;
        document.head.appendChild(style);

        const container = document.createElement("div");
        container.id = "kourMain";
        container.innerHTML = `
            <div id="kourHeader">
                <div>
                    <div id="kourTitle">Kour.io Cheats</div>
                    <div id="kourAuthor">PREMIUM • V1.0</div>
                </div>
            </div>
            <div id="kourTabs">
                <div class="kourTab active" data-tab="combat">COMBAT</div>
                <div class="kourTab" data-tab="visuals">VISUALS</div>

                <div class="kourTab" data-tab="account">PROFILE</div>
            </div>
            <div id="kourContent">
                <div id="tab-combat" class="kourSection active"></div>
                <div id="tab-visuals" class="kourSection"></div>

                <div id="tab-account" class="kourSection"></div>
            </div>
        `;
        document.body.appendChild(container);

        const sections = { combat: document.getElementById("tab-combat"), visuals: document.getElementById("tab-visuals"), misc: document.getElementById("tab-misc"), account: document.getElementById("tab-account") };

        const addToggle = (parent, label, id, state, cb, badge = null) => {
            const row = document.createElement("div");
            row.className = "kourRow";
            row.innerHTML = `<div><span class="kourLabel">${label}</span>${badge ? `<span class="kourBadge">${badge}</span>` : ''}</div><input type="checkbox" id="${id}" class="kourToggle" ${state ? 'checked' : ''}>`;
            row.querySelector("input").addEventListener("change", (e) => cb(e.target.checked));
            parent.appendChild(row);
        };

        const addSlider = (parent, label, min, max, step, val, cb) => {
            const div = document.createElement("div");
            div.className = "kourSliderContainer";
            div.innerHTML = `<div style="display:flex;justify-content:space-between;align-items:center"><span class="kourLabel">${label}</span><span id="${label}-val" style="color:var(--accent);font-weight:800;font-family:'Orbitron'">${val}</span></div>
                             <input type="range" class="kourSlider" min="${min}" max="${max}" step="${step}" value="${val}">`;
            div.querySelector("input").addEventListener("input", (e) => {
                document.getElementById(`${label}-val`).textContent = e.target.value;
                cb(e.target.value);
            });
            parent.appendChild(div);
        };

        const addBtn = (parent, label, cb, secondary = false) => {
            const btn = document.createElement("button");
            btn.className = `kourBtn ${secondary ? 'secondary' : ''}`;
            btn.textContent = label;
            btn.onclick = cb;
            parent.appendChild(btn);
        };

        addToggle(sections.combat, "Instant Kill", "kill-toggle", kourInstance.config.Instakill, v => kourInstance.config.Instakill = v, "OP");

        addToggle(sections.visuals, "Wallhack ESP", "esp-toggle", window.espEnabled, v => window.espEnabled = v);
        addToggle(sections.visuals, "Field of View", "fov-toggle", fovCircleEnabled, v => fovCircleEnabled = v);
        addToggle(sections.visuals, "Cleaner View", "arms-toggle", window.hideArms, v => window.hideArms = v);
        addToggle(sections.visuals, "Invisible", "invis-toggle", kourInstance.config.Invisible, v => kourInstance.config.Invisible = v, "LEGACY");

        const colorRow = document.createElement("div");
        colorRow.className = "kourRow";
        colorRow.innerHTML = `<span class="kourLabel">ESP Glow Color</span><input type="color" class="kourColor" value="#${((1 << 24) + (window.espColor.r << 16) + (window.espColor.g << 8) + window.espColor.b).toString(16).slice(1)}">`;
        colorRow.querySelector("input").addEventListener("input", (e) => {
            const bigint = parseInt(e.target.value.slice(1), 16);
            window.espColor = { r: (bigint >> 16) & 255, g: (bigint >> 8) & 255, b: bigint & 255 };
            localStorage.setItem("espColorRGB", JSON.stringify(window.espColor));
        });
        sections.visuals.appendChild(colorRow);



        addBtn(sections.account, "Unlock All Class Stats", setClassKills);
        addBtn(sections.account, "Modify Public Kills", () => {
            const k = prompt("Set total kills:", "99999");
            if (k) { firebase.database().ref(`users/${firebase.auth().currentUser.uid}`).update({ totalKills: parseInt(k) }); showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser); }
        });
        addBtn(sections.account, "Sync Nickname", () => {
            const n = prompt("New nickname:", localStorage.getItem("playerNickname") || "");
            if (n) { localStorage.setItem("playerNickname", n.trim()); if (window.location.hash.includes("#")) unityInstance.SendMessage("MapScripts", "SetNickname", n.trim()); }
        }, true);
        addBtn(sections.account, "Set ELO Points", () => setStat("elo", prompt("Target ELO:")), true);

        const tabs = document.querySelectorAll(".kourTab");
        tabs.forEach(tab => {
            tab.onclick = () => {
                tabs.forEach(t => t.classList.remove("active"));
                document.querySelectorAll(".kourSection").forEach(s => s.classList.remove("active"));
                tab.classList.add("active");
                sections[tab.dataset.tab].classList.add("active");
            };
        });

        document.addEventListener("keydown", (e) => {
            if (e.key === "Insert") {
                const isHidden = container.style.display === "none";
                container.style.display = isHidden ? "flex" : "none";
            }
        });


    }

    window.addEventListener("load", createUI);
})();