//////////////////////////////////////////////
// C4 TAKER //
// ======================================== //
// //
// Engedélyezi egy játékosnak a bomba át- //
// vételét (T csapat) célzás alapján és //
// az "USE" gomb lenyomásával. (alap "E") //
// //
// SPECIAL THANKS To: joaquimandrade, //
// ConnorMcLeod, wickked, JusTGo, VEN //
// & HamletEagle //
//////////////////////////////////////////////
#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
new const plugin[] = "C4 Taker"
new const author[] = "hellmonja & HamletEagle"
new const version[] = "1.09"
new num[33], admin_only, take_from_humans, max_dist, hud_limiter;
public plugin_init()
{
register_plugin(plugin, version, author);
register_logevent("Bomb_Carrier_Spawned", 3, "2=Spawned_With_The_Bomb");
register_event("StatusValue", "EventStatusValue_PlayerID", "b", "1=2", "2>0");
register_event("StatusValue", "Event_StatusValue_Hide", "be", "1=1", "2=0");
RegisterHam(Ham_ObjectCaps, "player", "Use_Button");
//CVAR-ok
admin_only = register_cvar("c4t_admin_only", "1"); //alapból csak az adminoknak működik, '0' esetén mindenkinek (T csapaton belül mindkét esetben)
take_from_humans = register_cvar("c4t_take_from_humans", "0"); //'1' hogy emberektől is elvehető legyen a C4, máskülönben csak a botoktól
max_dist = register_cvar("c4t_max_distance", "120"); //maximum távolság ahonnan átveheted
hud_limiter = register_cvar("c4t_hud", "5"); //hányszor jelenjen meg a HUD üzenet, '0' kikapcs, maximum '9999'
}
public Bomb_Carrier_Spawned()
{
new carrier = get_loguser_index();
if(is_user_admin(carrier))
return
if(get_pcvar_num(admin_only) == 2)
{
new player, players[32], num, admins[32], count
get_players(players, num, "ae", "TERRORIST")
for(new i; i < num; i++)
{
player = players[i];
if(is_user_admin(player))
admins[count++] = player
}
new taker = admins[random_num(0, count - 1)]
fm_transfer_user_gun(carrier, taker, CSW_C4);
}
}
public EventStatusValue_PlayerID(id) //Esemény amely észleli ha egy játékosra célzol
{
if(!is_user_alive(id))
return
new idAim, body, dist = get_pcvar_num(max_dist), limiter = get_pcvar_num(hud_limiter);
get_user_aiming(id, idAim, body, dist);
if(!is_user_alive(idAim))
return
if(!is_user_admin(id) && get_pcvar_num(admin_only) >= 1)
return //HUD üzenet nem jelenik meg ha az admin_only 1-en van és nem vagy admin
if(get_pcvar_num(take_from_humans) == 0 && !is_user_bot(idAim))
return
if(get_user_team(id) == get_user_team(idAim) && user_has_weapon(idAim, CSW_C4) && num[id] <= limiter)
{
set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 3.0, 2.0, 0.5, 1.0, 4);
show_hudmessage(id, "Nyomd meg az 'E' gombot a C4 átvételéhez.");
num[id]++; // Limit: ha eléri a megadott számot akkor a HUD üzenet eltűnik
}
}
public Event_StatusValue_Hide(id) //HUD üzenet eltűnik ha már nem nézel a bombát hordozó játékosra
{
set_hudmessage(0, 0, 0, -1.0, 0.40, 0, 3.0, 0.1, 0.1, 0.1, 4);
show_hudmessage(id, " ");
}
Take_C4(id) //C4 elvétele funckió
{
new idAim, body, dist = get_pcvar_num(max_dist);
get_user_aiming(id, idAim, body, dist);
if(!is_user_alive(idAim))
return
if(!is_user_admin(id) && get_pcvar_num(admin_only) >= 1)
return //Take_C4 nem fut le ha az admin_only 1-en van és nem vagy admin
if(get_pcvar_num(take_from_humans) == 0 && !is_user_bot(idAim))
return //Ha egy emberre nézel de a 'take_from_humans' 0, akkor nem veheted el a C4-et
if((get_user_team(id) == get_user_team(idAim)) && user_has_weapon(idAim, CSW_C4))
{
fm_transfer_user_gun(idAim, id, CSW_C4); //C4 átadása funkció
new playername[32];
get_user_name(id, playername, charsmax(playername));
set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 3.0, 2.0, 0.5, 1.0, 4);
show_hudmessage(idAim, "%s has taken the C4 from you.", playername); //Játékos értesítése hogy elvették tőle a bombát
}
}
public Use_Button(id) //Funckió ami lefut ha megnyomod az 'E' vagy az "USE" gombot
{
if(is_user_alive(id))
if(pev(id,pev_button) & IN_USE) //Ellenőrzi hogy megnyomtad-e az "USE" gombot
Take_C4(id); //C4 funckió hívása
}
public client_disconnect(id)
num[id] = 0; //Nullázódik ha a játékos kilép
stock get_loguser_index()
{
new loguser[80], name[32];
read_logargv(0, loguser, charsmax(loguser));
parse_loguser(loguser, name, charsmax(name));
return get_user_index(name);
}