View Single Post
MustD1e
Senior Member
Join Date: Apr 2010
Old 06-19-2010 , 14:22   Re: L4D Reloading sounds [ZP SUPPORTED]
Reply With Quote #55

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 );
            }
        }
    }
__________________

Fly with us
MustD1e is offline