Sari la conținut

Postări Recomandate

Postat

🔥 BOMB MANAGER PRO 🔥

Nume: Bomb Manager Pro
Versiune: 1.8
Autor: Gemini

📌 Descriere

Bomb Manager Pro este o soluție all-in-one pentru gestionarea bombei pe serverele de Counter-Strike 1.6. Este conceput pentru a îmbunătăți dinamica jocului, a oferi informații tactice esențiale și a recompensa jucătorii care se concentrează pe obiectiv.

⚙️ Funcții Principale

  • Management AFK – Previne pierderea rundelor din cauza purtătorilor de bombă care nu se mișcă la spawn.
  • HUD Timer Dinamic – Afișează secundele rămase până la explozie.
  • Countdown Vocal – Sistem audio pentru ultimele 5 secunde.
  • Sistem de Recompense – Bonusuri financiare pentru plantare, defuse și protejarea bombei.
  • Monitorizare Defuse – Timer precis cu detectare kit defuse.

📥 Instalare

  1. Puneți fișierul bomb_manager_pro.sma în: addons/amxmodx/scripting
  2. Puneți fișierul bomb_manager_pro.amxx în: addons/amxmodx/plugins
  3. Deschideți addons/amxmodx/configs/plugins.ini și adăugați:
bomb_manager_pro.amxx

🔧 CVAR-uri

1️⃣ Management AFK

amx_afkbombtime 15
amx_bombmode 1
  • amx_afkbombtime – Timp în secunde până când purtătorul este considerat AFK.
  • amx_bombmode – 1 = Drop bomb | 2 = Transfer automat

2️⃣ HUD & Sunet

amx_timershow 0
amx_bombsoundscountdown 0
  • amx_timershow – 0 = Toți văd timerul | 1 = Doar T văd secundele
  • amx_bombsoundscountdown – 0 = Sunete ON | 1 = Sunete OFF

3️⃣ Bonusuri

amx_bombbonus 0
amx_bombmoney 500
  • amx_bombbonus – 0 = Activ | 1 = Dezactivat
  • amx_bombmoney – Suma bonusului ($)

4️⃣ Defuse Helper

amx_defuseshow 0
  • 0 = Afișează timer defuse
  • 1 = Dezactivat

🧩 Module Necesare

CStrike
Fun
Engine
FakeMeta

💻 Plugin

Plugin mai jos 

❗ NU L-AM TESTAT ❗
Spoiler
 #include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta> // Adaugat pentru siguranta maxima la pdata

#define PLUGIN "Bomb Manager Pro"
#define VERSION "1.8"
#define AUTHOR "Gemini"

// Offset-ul pentru defuse kit in memoria jocului
#define m_bHasDefuser 193 

new p_afkbombtime, p_bombmode, p_timershow, p_bombsounds
new p_bombmoney, p_bombbonus, p_defuseshow
new Float:spawn_origin[33][3]
new g_c4timer, g_planter
new Float:g_defuse_time[33]

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)

    p_afkbombtime = register_cvar("amx_afkbombtime", "15")
    p_bombmode = register_cvar("amx_bombmode", "1")
    p_timershow = register_cvar("amx_timershow", "0")
    p_bombsounds = register_cvar("amx_bombsoundscountdown", "0")
    p_bombmoney = register_cvar("amx_bombmoney", "500")
    p_bombbonus = register_cvar("amx_bombbonus", "0") 
    p_defuseshow = register_cvar("amx_defuseshow", "0")

    register_logevent("event_round_start", 2, "1=Round_Start")
    register_event("ResetHUD", "event_player_spawn", "be")
    register_logevent("event_bomb_planted", 3, "2=Planted_The_Bomb")
    register_logevent("event_bomb_exploded", 3, "2=Target_Bombed")
    register_logevent("event_bomb_defused", 3, "2=Bomb_Defused")
    register_event("BarTime", "event_bartime", "be")
}

public event_player_spawn(id) {
    if(is_user_connected(id)) {
        entity_get_vector(id, EV_VEC_origin, spawn_origin[id])
    }
}

public event_round_start() {
    remove_task(888)
    g_planter = 0 
    set_task(get_pcvar_float(p_afkbombtime), "check_bomb_carrier")
}

public check_bomb_carrier() {
    new players[32], num, id
    get_players(players, num, "ae", "TERRORIST")

    for(new i = 0; i < num; i++) {
        id = players[i]
        if(user_has_weapon(id, CSW_C4)) {
            new Float:current_origin[3]
            entity_get_vector(id, EV_VEC_origin, current_origin)
            if(get_distance_f(current_origin, spawn_origin[id]) < 10.0) {
                handle_bomb_transfer(id)
            }
        }
    }
}

handle_bomb_transfer(id) {
    new mode = get_pcvar_num(p_bombmode)
    new name[32]; get_user_name(id, name, 31)

    if(mode == 1) {
        engclient_cmd(id, "drop", "weapon_c4")
        ColorChat(0, "!g[BOMB]!n Bomba a fost aruncata (AFK: !t%s!n).", name)
    } 
    else {
        new target = find_random_terro(id)
        if(target != 0) {
            engclient_cmd(id, "drop", "weapon_c4")
            new bomb_ent = find_ent_by_owner(-1, "weapon_c4", id)
            if(!is_valid_ent(bomb_ent)) bomb_ent = find_ent_by_class(-1, "weapon_c4")
            if(is_valid_ent(bomb_ent)) {
                remove_entity(bomb_ent)
                give_item(target, "weapon_c4")
                cs_set_user_plant(target, 1)
                ColorChat(0, "!g[BOMB]!n Bomba transferata lui !t%n!n (AFK: %s).", target, name)
            }
        }
    }
}

public event_bomb_planted() {
    g_planter = get_loguser_index()
    g_c4timer = get_cvar_num("mp_c4timer")
    set_task(1.0, "display_hud_timer", 888, _, _, "b") 

    if(get_pcvar_num(p_bombbonus) == 0 && is_user_connected(g_planter)) {
        new money = get_pcvar_num(p_bombmoney)
        cs_set_user_money(g_planter, cs_get_user_money(g_planter) + money)
        ColorChat(0, "!g[BOMB]!t %n!n a plantat bomba si a primit bonus:!g %d$", g_planter, money)
    }
}

public event_bomb_exploded() {
    remove_task(888)
    if(get_pcvar_num(p_bombbonus) == 0 && g_planter > 0 && is_user_alive(g_planter)) {
        new money = get_pcvar_num(p_bombmoney)
        cs_set_user_money(g_planter, cs_get_user_money(g_planter) + money)
        ColorChat(0, "!g[BOMB]!t %n!n a supravietuit exploziei si a primit bonus:!g %d$", g_planter, money)
    }
}

public event_bomb_defused() {
    remove_task(888)
    new id = get_loguser_index()
    if(get_pcvar_num(p_bombbonus) == 0 && is_user_connected(id)) {
        new money = get_pcvar_num(p_bombmoney)
        cs_set_user_money(id, cs_get_user_money(id) + money)
        ColorChat(0, "!g[BOMB]!t %n!n a dezamorsat bomba si a primit bonus:!g %d$", id, money)
    }
}

public event_bartime(id) {
    if(get_pcvar_num(p_defuseshow) != 0 || !is_user_alive(id) || get_user_team(id) != 2)
        return

    new duration = read_data(1)
    if(duration > 0) {
        g_defuse_time[id] = float(duration)
        remove_task(id + 100)
        set_task(0.1, "task_defuse_hud", id + 100, _, _, "b")
    } else {
        remove_task(id + 100)
    }
}

public task_defuse_hud(id) {
    id -= 100
    if(!is_user_alive(id) || g_defuse_time[id] <= 0.0) {
        remove_task(id + 100)
        return
    }
    g_defuse_time[id] -= 0.1
    
    // VERIFICARE MANUALA KIT (bypass la eroare cstrike)
    new hasKit = get_pdata_int(id, m_bHasDefuser)
    
    set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 0.1, 0.1, 0.01, 0.01, -1)
    show_hudmessage(id, "Dezamorsezi bomba %s kit^nTimp ramas: %.1f secunde", hasKit ? "cu" : "fara", g_defuse_time[id])
}

public display_hud_timer() {
    g_c4timer--
    if(g_c4timer < 0) { remove_task(888); return; }

    if(get_pcvar_num(p_bombsounds) == 0 && g_c4timer <= 5 && g_c4timer > 0) {
        new const sounds[6][] = { "", "vox/one.wav", "vox/two.wav", "vox/three.wav", "vox/four.wav", "vox/five.wav" }
        client_cmd(0, "spk %s", sounds[g_c4timer])
    }

    new mode = get_pcvar_num(p_timershow)
    new players[32], num, id
    get_players(players, num, "ch")

    for(new i = 0; i < num; i++) {
        id = players[i]
        set_hudmessage(0, 255, 0, -1.0, 0.20, 0, 1.0, 1.0, 0.1, 0.1, -1)
        if(mode == 0) show_hudmessage(id, "C4 a fost plantat!^nExplodeaza in: %d secunde", g_c4timer)
        else {
            if(get_user_team(id) == 1) show_hudmessage(id, "C4 a fost plantat!^nExplodeaza in: %d secunde", g_c4timer)
            else show_hudmessage(id, "C4 a fost plantat!")
        }
    }
}

stock get_loguser_index() {
    new loguser[80], name[32]; read_logargv(0, loguser, 79)
    parse_loguser(loguser, name, 31)
    return get_user_index(name)
}

stock find_random_terro(exclude_id) {
    new players[32], num; get_players(players, num, "ae", "TERRORIST")
    if(num <= 1) return 0
    new target = players[random(num)]; while(target == exclude_id) { target = players[random(num)]; }
    return target
}

stock ColorChat(id, const input[], any:...) {
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    replace_all(msg, 190, "!g", "^4"); replace_all(msg, 190, "!n", "^1"); replace_all(msg, 190, "!t", "^3")
    if (id) players[0] = id; else get_players(players, count, "ch")
    for (new i = 0; i < count; i++) {
        if (is_user_connected(players[i])) {
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
            write_byte(players[i]); write_string(msg); message_end()
        }
    }
}
  

 

 

Vizitator
Acest topic este acum închis pentru alte răspunsuri.
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Termeni de Utilizare & Politică Intimitate