|
AMX Mod X Plugin Approver
|

12-08-2011
, 06:39
Re: Check if model sound is emit.
|
#1
|
PHP Code:
void PM_PlayStepSound( int step, float fvol ) { static int iSkipStep = 0; int irand; vec3_t hvel;
pmove->iStepLeft = !pmove->iStepLeft;
if ( !pmove->runfuncs ) { return; } irand = pmove->RandomLong(0,1) + ( pmove->iStepLeft * 2 );
// FIXME mp_footsteps needs to be a movevar if ( pmove->multiplayer && !pmove->movevars->footsteps ) return;
// irand - 0,1 for right foot, 2,3 for left foot // used to alternate left and right foot // FIXME, move to player state
switch (step) { default: case STEP_CONCRETE: // default step sound switch (irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_step1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_step3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_step2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_step4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_METAL: // metal floor switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_metal1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_metal3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_metal2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_metal4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_DIRT: switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_dirt1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_dirt3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_dirt2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_dirt4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_VENT: switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_duct1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_duct3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_duct2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_duct4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_GRATE: switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_grate1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_grate3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_grate2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_grate4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_TILE: if ( !pmove->RandomLong(0,4) ) irand = 4; switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_tile1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_tile3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_tile2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_tile4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 4: pmove->PM_PlaySound( CHAN_BODY, "player/pl_tile5.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_SLOSH: switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_slosh1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_slosh3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_slosh2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_slosh4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_WADE: if ( iSkipStep == 0 ) { iSkipStep++; break; }
if ( iSkipStep++ == 3 ) { iSkipStep = 0; }
switch (irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_wade1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_wade2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_wade3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_wade4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; case STEP_LADDER: switch(irand) { // right foot case 0: pmove->PM_PlaySound( CHAN_BODY, "player/pl_ladder1.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 1: pmove->PM_PlaySound( CHAN_BODY, "player/pl_ladder3.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; // left foot case 2: pmove->PM_PlaySound( CHAN_BODY, "player/pl_ladder2.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; case 3: pmove->PM_PlaySound( CHAN_BODY, "player/pl_ladder4.wav", fvol, ATTN_NORM, 0, PITCH_NORM ); break; } break; } }
PHP Code:
void PM_UpdateStepSound( void ) { vec3_t knee; vec3_t feet; int height; int isLadder; int isDucking; int step; float vol;
if( pmove->flTimeStepSound > 0 || pmove->flags & FL_FROZEN ) return;
if( Length( pmove->velocity ) <= 150 ) { pmove->flTimeStepSound = 400; return; } isLadder = ( pmove->movetype == MOVETYPE_FLY ); if( isLadder || pmove->onground != -1 ) { PM_CatagorizeTextureType(); VectorCopy( pmove->origin, knee ); VectorCopy( pmove->origin, feet ); height = pmove->player_maxs[ pmove->usehull ][ 2 ] - pmove->player_mins[ pmove->usehull ][ 2 ]; knee[2] = pmove->origin[2] - 0.3 * height; feet[2] = pmove->origin[2] - 0.5 * height; } if( isLadder ) { step = STEP_LADDER; vol = 0.35; pmove->flTimeStepSound = 350; } else if( pmove->PM_PointContents( knee, NULL ) == CONTENTS_WATER ) { step = STEP_WADE; vol = 0.65; pmove->flTimeStepSound = 600; } else if( pmove->PM_PointContents( feet, NULL ) == CONTENTS_WATER ) { step = STEP_SLOSH; vol = 0.5; pmove->flTimeStepSound = 300; } else { step = PM_MapTextureTypeStepType( pmove->chtexturetype ); switch( pmove->chtexturetype ) { case CHAR_TEX_DIRT : vol = 0.55; case CHAR_TEX_VENT : vol = 0.70; default : vol = 0.50; } pmove->flTimeStepSound = 300; }
isDucking = pmove->flags & FL_DUCKING; if( isDucking || isLadder ) { pmove->flTimeStepSound += 100; if( isDucking && pmove->flDuckTime < 950 ) { vol *= 0.35; } } PM_PlayStepSound( step, vol ); }
Quote:
|
But, noone has made that plugin
|
I remember seeing plugin hooking PM_PlayStepSound.
__________________
|
|