Re: Jump sound
PHP Code:
#include < amxmodx > #include < hlsdk_const > #include < orpheu_stocks >
#define STEP_CONCRETE 0 #define STEP_METAL 1 #define STEP_DIRT 2 #define STEP_VENT 3 #define STEP_GRATE 4 #define STEP_TILE 5 #define STEP_SLOSH 6 #define STEP_WADE 7 #define STEP_LADDER 8 #define STEP_SNOW 9 #define STEP_GRASS 10
new const VERSION[] = "0.0.1";
new OrpheuStruct:pmove; static iPlayer; static g_iTeam[ 33 ], bool:g_bPlayJumpStep[ 33 ];
new footsteps_team; new footsteps_jump_team;
public plugin_init() { register_plugin( "[ORPHEU] Footsteps", VERSION, "Juice" ); footsteps_team = register_cvar( "footsteps_team", "0" ); footsteps_jump_team = register_cvar( "footsteps_jump_team", "1" ); register_message( get_user_msgid( "TeamInfo" ), "msg_TeamInfo" ); OrpheuRegisterHook( OrpheuGetDLLFunction( "pfnPM_Move","PM_Move" ), "OnPM_Move" ); OrpheuRegisterHook( OrpheuGetFunction( "PM_PlayStepSound" ), "onPM_PlayStepSound" ); if( get_pcvar_num( footsteps_team ) || get_pcvar_num( footsteps_jump_team ) ) { server_cmd( "mp_footsteps 0" ); } }
public OrpheuHookReturn:OnPM_Move( OrpheuStruct:ppmove, server ) { pmove = ppmove; iPlayer = OrpheuGetStructMember( ppmove, "player_index" ) + 1; g_bPlayJumpStep[ iPlayer ] = ( OrpheuGetStructMember(OrpheuStruct:OrpheuGetStructMember(ppmove, "cmd"), "buttons" ) & IN_JUMP) && OrpheuGetStructMember(ppmove, "onground") != -1 && ~(OrpheuGetStructMember(ppmove, "oldbuttons") & IN_JUMP) && ( get_pcvar_num( footsteps_jump_team ) == 3 || get_pcvar_num( footsteps_jump_team ) < 3 && g_iTeam[ iPlayer ] == get_pcvar_num( footsteps_jump_team ) ) ? true : false; return OrpheuIgnored; }
// http://forums.alliedmods.net/showthread.php?t=123097/ // http://cs-sdk.googlecode.com/svn/trunk/pm_shared.c/ public OrpheuHookReturn:onPM_PlayStepSound( step, Float:fvol ) { if( !g_bPlayJumpStep[ iPlayer ] ) { if ( !get_pcvar_num( footsteps_team ) ||get_pcvar_num( footsteps_team ) < 3 && get_pcvar_num( footsteps_team ) != g_iTeam[ iPlayer ] ) return OrpheuIgnored; } static iSkipStep, irand; irand = random_num(0,1) + (OrpheuGetStructMember( pmove, "iStepLeft" ) * 2); switch ( step ) { case STEP_METAL: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_DIRT: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_VENT: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_GRATE: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_TILE: { if ( !random_num(0,4) ) irand = 4; switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 4: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile5.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_SLOSH: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_WADE: { if ( iSkipStep == 0 ) iSkipStep++; if ( iSkipStep++ == 3 ) iSkipStep = 0; switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } case STEP_LADDER: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } default: { switch(irand) { case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_step1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_step3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_step2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_step4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); } } } return OrpheuIgnored; }
public msg_TeamInfo( msg_id, msg_dest ) { if ( msg_dest != MSG_ALL && msg_dest != MSG_BROADCAST ) return; static id, team[ 2 ]; id = get_msg_arg_int( 1 ); get_msg_arg_string( 2, team, 1 ); switch( team[0] ) { case 'T': g_iTeam[id] = 1; case 'C': g_iTeam[id] = 2; //case 'S': g_iTeam[id] = 3; default: g_iTeam[id] = 0; } }
|