Rusu Radu Postat Februarie 16 Postat Februarie 16 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 Puneți fișierul bomb_manager_pro.sma în: addons/amxmodx/scripting Puneți fișierul bomb_manager_pro.amxx în: addons/amxmodx/plugins Deschideți addons/amxmodx/configs/plugins.ini și adăugați: bomb_manager_pro.amxx CVAR-uri 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 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 Bonusuri amx_bombbonus 0 amx_bombmoney 500 amx_bombbonus – 0 = Activ | 1 = Dezactivat amx_bombmoney – Suma bonusului ($) 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() } } }
Postări Recomandate