Not thoroughly tested but it appears to work. Might need some minor tweaks.
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#define IsPlayer(%1) (1<=%1<=g_MaxPlayers)
#define DMG_FALL (1<<5)
new g_MaxPlayers;
public plugin_init()
{
RegisterHam( Ham_TakeDamage , "player" , "fw_PlayerTakeDamage" );
g_MaxPlayers = get_maxplayers();
}
public fw_PlayerTakeDamage( this , idinflictor , idattacker, Float:damage, damagebits)
{
if ( !is_user_alive( this ) )
return HAM_IGNORED;
if( damagebits & DMG_FALL )
{
damage -= 20.0;
client_print( this , print_chat , "fixed fall damage" );
}
else if( IsPlayer( idattacker ) && ( this != idattacker ) )
{
damage += ( get_user_weapon( idattacker ) == CSW_KNIFE ) ? 50.0 : 30.0;
client_print( this , print_chat , "fixed weapon damage" );
}
else
{
damage = 0.0;
client_print( this , print_chat , "fixed self inflicted grenade damage" );
}
SetHamParamFloat( 4 , damage );
return HAM_HANDLED;
}
__________________