#include < amxmodx >
#include < engine >
#include < hamsandwich >
#define PLUGIN "Sensible Nades"
#define VERSION "0.1"
#define AUTHOR "aNNakin"
#if !defined charsmax
#define charsmax(%1) sizeof %1 - 1
#endif
enum
{
NADE_HE,
NADE_FB,
NADE_SG,
NADE_NONE
};
new g_Cvars[ NADE_NONE ];
new gi_CountTouches[ 2049 ];
public plugin_init ( )
{
register_plugin ( PLUGIN, VERSION, AUTHOR );
RegisterHam ( Ham_Touch, "grenade", "ham_grenade_touch", 1 );
g_Cvars[ NADE_HE ] = register_cvar ( "he_touch", "1" );
g_Cvars[ NADE_FB ] = register_cvar ( "fb_touch", "2" );
g_Cvars[ NADE_SG ] = register_cvar ( "sg_touch", "2" );
}
public ham_grenade_touch ( const e_Entity, const e_World )
{
static s_Model[ 32 ], i_Value, m_Type;
entity_get_string ( e_Entity, EV_SZ_model, s_Model, charsmax ( s_Model ) );
switch ( s_Model[ 9 ] )
{
case 'h': m_Type = NADE_HE;
case 'f': m_Type = NADE_FB;
case 's': m_Type = NADE_SG;
default: return HAM_IGNORED;
}
if ( ! ( i_Value = get_pcvar_num ( g_Cvars[ m_Type ] ) ) )
return HAM_IGNORED;
if ( ++gi_CountTouches[ e_Entity ] >= i_Value )
{
entity_set_float ( e_Entity, EV_FL_dmgtime, 0.0 );
gi_CountTouches[ e_Entity ] = 0;
return HAM_HANDLED;
}
return HAM_IGNORED;
}