#include <amxmodx>
#include <reapi>
#include <hamsandwich>
#define ACCESS_FLAG ADMIN_LEVEL_H // если хотите дать доступ всем - ADMIN_USER
public plugin_init()
{
register_plugin("Instant Bomb", "1.0.0", "@pywave")
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_c4", "C4_PrimaryAttack_Pre", false)
RegisterHookChain(RG_CGrenade_DefuseBombStart, "RG_DefuseBombStart_Post", true)
}
public C4_PrimaryAttack_Pre(weapon)
{
new id = get_member(weapon, m_pPlayer)
if (!is_user_alive(id) || !(get_user_flags(id) & ACCESS_FLAG))
return HAM_IGNORED
if (!get_member(weapon, m_C4_bStartedArming))
{
set_task(0.1, "Task_InstantPlant", id + 1000)
}
return HAM_IGNORED
}
public Task_InstantPlant(taskid)
{
new id = taskid - 1000
if (!is_user_alive(id))
return
new weapon = get_member(id, m_pActiveItem)
if (weapon <= 0 || get_member(weapon, m_iId) != WEAPON_C4)
return
if (get_member(weapon, m_C4_bStartedArming))
{
set_member(weapon, m_C4_fArmedTime, get_gametime() + 0.3)
}
}
public RG_DefuseBombStart_Post(const bomb, const id)
{
if (is_nullent(bomb) || !is_user_alive(id) || !(get_user_flags(id) & ACCESS_FLAG))
return HC_CONTINUE
set_task(0.1, "Task_InstantDefuse", id + 2000, .flags = "a", .repeat = 1)
return HC_CONTINUE
}
public Task_InstantDefuse(taskid)
{
new id = taskid - 2000
if (!is_user_alive(id) || !get_member(id, m_bIsDefusing))
return
new bomb = -1
while ((bomb = rg_find_ent_by_class(bomb, "grenade")) != 0)
{
if (get_member(bomb, m_Grenade_bIsC4) && get_member(bomb, m_Grenade_bStartDefuse))
{
rg_send_bartime(id, 0)
set_member(bomb, m_Grenade_flDefuseCountDown, get_gametime() + 0.1)
break
}
}
}