Small edit
This plugin makes landing sounds but there is one problem. Even if I am going down on a sloped surface it will play the landing sound rapidly. So I'm wondering how to create a buffer where if a player wasn't off the ground for like 0.5 seconds it won't play a sound.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <engine>
new snd_land[][] = { "misc/land1.wav", "misc/land2.wav", "misc/land3.wav", "misc/land4.wav" }
const BUTTONS = ( IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT | IN_JUMP );
new g_OffGround , g_LandEntity , g_iMaxPlayers;
public plugin_init()
{
register_plugin( "Hook Landing" , "0.1" , "bugsy" );
register_forward( FM_CmdStart , "fw_FMCmdStart" );
g_iMaxPlayers = get_maxplayers();
}
public plugin_precache() {
static i
for(i = 0; i < sizeof snd_land; i++)
precache_sound(snd_land[i])
}
public fw_FMCmdStart( id , uc_handle , seed )
{
if ( ( get_uc( uc_handle , UC_Buttons ) | pev( id , pev_oldbuttons ) ) & BUTTONS )
{
if ( !( pev( id , pev_flags ) & FL_ONGROUND ) )
{
g_OffGround |= ( 1 << ( id & 31 ) );
if ( !g_LandEntity )
CreateLandEntity();
entity_set_float( g_LandEntity , EV_FL_nextthink , get_gametime() + 0.01 );
}
}
}
public LandEntityThink( iEntity )
{
for ( new id = 1 ; id <= g_iMaxPlayers ; id++ )
{
if ( g_OffGround & ( 1 << ( id & 31 ) ) )
{
if ( pev( id , pev_flags ) & FL_ONGROUND )
{
emit_sound(id, CHAN_BODY, snd_land[random_num(0, sizeof snd_land - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
g_OffGround &= ~( 1 << ( id & 31 ) );
if ( !g_OffGround )
break;
}
}
}
if ( g_OffGround )
entity_set_float( g_LandEntity , EV_FL_nextthink , get_gametime() + 0.01 );
}
CreateLandEntity()
{
g_LandEntity = create_entity( "info_target" );
entity_set_string( g_LandEntity , EV_SZ_classname , "land_entity" );
register_think( "land_entity" , "LandEntityThink" );
}
|