Code:
#include <amxmodx>
#include <engine>
#define PLUGIN "Block rootating door when touch with weapons"
#define AUTHOR "Alucard"
#define VERSION "0.0.5"
#pragma semicolon 1
#define INM_FLAG ADMIN_SLAY
new p_Enabler, p_AdmInm, p_WeaponsCvar[31];
enum
{
DoorRotating = 0,
WeaponBox,
Grenade
};
new const BlockClass[][] =
{
"func_door_rotating", "weaponbox", "grenade"
};
new const WeaponsName[][] =
{
"",
"p228", "shield", "scout", "hegrenade", "xm1014", "c4",
"mac10", "aug", "smokegrenade", "elite", "fiveseven",
"ump45", "sg550", "galil", "famas", "usp", "glock18",
"awp", "mp5navy", "m249", "m3", "m4a1", "tmp", "g3sg1",
"flashbang", "deagle", "sg552", "ak47", "knife", "p90"
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
p_Enabler = register_cvar("bt_enable", "1");
p_AdmInm = register_cvar("bt_adm_inm", "0");
new NameCvar[24];
for(new i = 1; i < sizeof(p_WeaponsCvar); i++)
{
formatex(NameCvar, charsmax(NameCvar), "bt_%s", WeaponsName[i]);
p_WeaponsCvar[i] = register_cvar(NameCvar, "1");
}
register_touch(BlockClass[DoorRotating], BlockClass[WeaponBox], "HookBlockTouch");
register_touch(BlockClass[DoorRotating], BlockClass[Grenade], "HookBlockTouch");
}
public HookBlockTouch(iEntity, iWeapon)
{
if(!get_pcvar_num(p_Enabler) || !is_valid_ent(iWeapon) )
return PLUGIN_CONTINUE;
new id = entity_get_edict(iWeapon, EV_ENT_owner);
if(get_pcvar_num(p_AdmInm) && get_user_flags(id) & INM_FLAG)
return PLUGIN_CONTINUE;
static szClassname[32];
entity_get_string(iWeapon, EV_SZ_classname, szClassname, 31);
if(equal(szClassname, BlockClass[WeaponBox]) )
{
new type = GetWeaponboxType(iWeapon);
if(get_pcvar_num(p_WeaponsCvar[type]) && type)
return PLUGIN_HANDLED;
}
else if(equal(szClassname, BlockClass[Grenade]) )
{
new type = GetWeaponType(id);
if(get_pcvar_num(p_WeaponsCvar[type]) && type)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
stock GetWeaponboxType(entity)
{
static max_clients, max_entities;
if(!max_clients)
max_clients = get_global_int(GL_maxClients);
if(!max_entities)
max_entities = get_global_int(GL_maxEntities);
for(new i = max_clients + 1; i < max_entities; ++i)
{
if(is_valid_ent(i) && entity == entity_get_edict(i, EV_ENT_owner) )
{
new wname[32];
entity_get_string(i, EV_SZ_classname, wname, 31);
return get_weaponid(wname);
}
}
return 0;
}
stock GetWeaponType(id)
{
//new id = entity_get_edict(entity, EV_ENT_owner);
return get_user_weapon(id);
}