I don't need now.
Use it with your sounds
Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
new const gSoundList[][] =
{
"radio/reloadm_01.wav",
"radio/reloadm_02.wav",
"radio/reloadm_03.wav",
"radio/reloadm_04.wav",
"radio/reloadm_05.wav",
"radio/reloadm_06.wav",
"radio/reloadm_07.wav",
"radio/reloadm_08.wav",
"radio/reloadm_09.wav"
}
const CANT_RELOAD_BITSUM = ( 1 << CSW_HEGRENADE | 1 << CSW_SMOKEGRENADE | 1<<CSW_FLASHBANG | 1 << CSW_KNIFE | 1 << CSW_C4 );
const SHOTGUNS_BITSUM = ( 1 << CSW_XM1014 | 1 << CSW_M3 );
const MAX_WEAPONS = 30 // --| Max number of weapons. ( cs1.6/cz )
const sg_start_reload = 5; // --| Shotgun start reload sequence.
const m_iId = 43; // --| Weapon offset. ( return CSW_* )
const m_fInReload = 54; // --| Weapon offset. ( In reload ? )
public plugin_precache()
{
for ( new i; i < sizeof gSoundList; i++ )
{
precache_sound( gSoundList[ i ] );
}
}
public plugin_init()
{
register_plugin( "Sound on reload", "1.0.0", "Arkshine" );
RegisterHamsReload ();
}
public Event_OnReload ( const Entity )
{
new Player = pev ( Entity , pev_owner );
if ( UTIL_IsWeaponReloading ( Player, Entity ) )
{
emit_sound( Player, CHAN_VOICE, gSoundList[ random_num( 0, sizeof gSoundList - 1 ) ], 0.8, ATTN_NORM, 0, PITCH_NORM );
}
}
UTIL_IsWeaponReloading ( const id, const Entity )
{
// --| If we're holding a shotgun.
if ( 1 << get_pdata_int ( Entity, m_iId, 4 ) & SHOTGUNS_BITSUM )
{
// --| We check its animation instead of m_fInSpecialReload because
// --| Event_OnReload will be called 3 times by ball and it's a pain to
// --| deal with that when we want to play the sound one time.
if ( pev ( id, pev_weaponanim ) == sg_start_reload ) { return 1; }
}
// --| Other weapons.
return get_pdata_int ( Entity, m_fInReload, 4 );
}
RegisterHamsReload ()
{
// --| Need to loop through all weapons because Ham sucks. :p
// --| As 'post' is necessary, otherwise the offset will not work.
new s_WeaponName[ 24 ];
for ( new i_Wpid = 1; i_Wpid <= MAX_WEAPONS; i_Wpid++ )
{
// --| Don't register item/weapons which can not reload.
if ( !( ( 1 << i_Wpid ) & CANT_RELOAD_BITSUM ) && get_weaponname ( i_Wpid, s_WeaponName, charsmax ( s_WeaponName ) ) )
{
RegisterHam ( Ham_Weapon_Reload, s_WeaponName, "Event_OnReload", 1 );
}
}
}
__________________