#include #include #include #include #define VERSION "1.0" #define pev_no_open pev_iuser4 new pCvarEnabled new pCvarBlockDoorButtons new g_iFwdSpawn public plugin_init() { unregister_forward(FM_Spawn,g_iFwdSpawn) if(engfunc(EngFunc_FindEntityByString, FM_NULLENT, "classname","func_door_rotating") || engfunc(EngFunc_FindEntityByString, FM_NULLENT, "classname","func_door")) { register_plugin("(ON) Open doors with a shot", VERSION, "Starsailor") register_cvar("open_doors_version",VERSION,FCVAR_SERVER|FCVAR_SPONLY) pCvarEnabled = register_cvar("od_enabled", "1") pCvarBlockDoorButtons = register_cvar("od_filterdoors","0") RegisterHam(Ham_TraceAttack, "func_door_rotating", "ham_open_door") RegisterHam(Ham_TraceAttack, "func_door", "ham_open_door") } else { register_plugin("(OFF) Open doors with a shot", VERSION, "Starsailor") pause("ad") } } public plugin_precache() { g_iFwdSpawn = register_forward(FM_Spawn,"fw_Spawn") } public ham_open_door(iEnt, iAttacker, Float:fDamage, Float:vDirection[3], TraceHandle, iDamageBits) { if(!get_pcvar_num(pCvarEnabled)) { return HAM_IGNORED } if(get_pcvar_num(pCvarBlockDoorButtons) && pev(iEnt,pev_no_open)) { return HAM_IGNORED } dllfunc(DLLFunc_Use, iEnt, iAttacker) return HAM_IGNORED } public fw_Spawn(iEnt) { if(!pev_valid(iEnt)) { return FMRES_IGNORED } new szClassName[32] pev(iEnt,pev_classname,szClassName,charsmax(szClassName)) if(!equal(szClassName,"func_button")) { return FMRES_IGNORED } new szTargetName[32] new iTarget pev(iEnt, pev_target, szTargetName,charsmax(szTargetName)) iTarget = 0 new szClassName2[32] while((iTarget = engfunc(EngFunc_FindEntityByString, iTarget, "targetname", szTargetName))) { pev(iTarget,pev_classname,szClassName2,charsmax(szClassName2)) if(equal(szClassName2,"func_door") || equal(szClassName2,"func_door_rotating")) { set_pev(iTarget,pev_no_open,1) } } return FMRES_IGNORED }