#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#define VERSION "2.0"
const m_fBombStatus = 96;
const m_usEvent = 114;
const fBombPlanted = 1 << 8;
const fExploEvent = 1 << 0;
const fSmokeEvent = 1 << 1;
new pCvar_TimeHe, pCvar_TimeFlash, pCvar_TimeSmoke;
new HamHook: SmokeThink;
public plugin_init( )
{
register_plugin("Grenade explosion TIME",VERSION,"BboY GruN");
register_cvar( "Grenade_Explosion_Time",VERSION,FCVAR_SERVER | FCVAR_SPONLY );
set_cvar_string( "Grenade_Explosion_Time", VERSION );
pCvar_TimeHe = register_cvar( "Grenade_TIME_HE", "3.0" );
pCvar_TimeFlash = register_cvar( "Grenade_TIME_FL", "2.0" );
pCvar_TimeSmoke = register_cvar( "Grenade_TIME_SK", "4.0" );
register_event( "HLTV", "roundBegin", "a", "1=0", "2=0" );
register_forward( FM_SetModel, "Fw_NadeModel", 1 );
if( get_pcvar_float( pCvar_TimeSmoke ) > 0.0 )
{
SmokeThink = RegisterHam( Ham_Think, "grenade", "Fw_NadeThink" );
}
roundBegin( );
}
public roundBegin( )
{
if( get_pcvar_float( pCvar_TimeSmoke ) <= 0.0 )
{
if( SmokeThink )
{
DisableHamForward( SmokeThink );
}
}
else
{
if( SmokeThink )
{
EnableHamForward( SmokeThink );
}
else
{
SmokeThink = RegisterHam( Ham_Think, "grenade", "Fw_NadeThink" );
}
}
}
public Fw_NadeModel( const nade, const NadeModel[ ] )
{
if( pev_valid( nade ) )
{
static nade_ID;
nade_ID = grenade_type( nade, 1 );
if( nade_ID ) // nem HE - FLASH - SMOKE gránát
{
new Float: nadeCvar;
switch( nade_ID )
{
case CSW_HEGRENADE:
{
nadeCvar = get_pcvar_float( pCvar_TimeHe );
if( nadeCvar )
{
set_pev( nade, pev_dmgtime, get_gametime( ) + nadeCvar )
}
}
case CSW_FLASHBANG:
{
nadeCvar = get_pcvar_float( pCvar_TimeFlash );
if( nadeCvar )
{
set_pev( nade, pev_dmgtime, get_gametime( ) + nadeCvar )
}
}
case CSW_SMOKEGRENADE:
{
nadeCvar = get_pcvar_float( pCvar_TimeSmoke );
if( nadeCvar )
{
set_pev( nade, pev_dmgtime, get_gametime( ) + nadeCvar )
}
}
}
}
}
}
public Fw_NadeThink( const nade )
{
if( pev_valid( nade ) && grenade_type( nade ) == CSW_SMOKEGRENADE )
{
set_pev( nade, pev_flags, FL_ONGROUND )
}
}
stock grenade_type( const index, const checkClassName = 0 )
{
static classname[ 9 ]
if( checkClassName )
{
pev( index, pev_classname, classname, 8 )
if ( !equal( classname, "grenade") )
{
return 0;
}
}
if( get_pdata_int( index, m_fBombStatus ) & fBombPlanted )
{
return 0;
}
static bits; bits = get_pdata_int( index, m_usEvent )
if ( bits & fExploEvent )
{
return CSW_HEGRENADE;
}
else if( !bits )
{
return CSW_FLASHBANG;
}
else if( bits & fSmokeEvent )
{
return CSW_SMOKEGRENADE;
}
return 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/