AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Check if model sound is emit. (https://forums.alliedmods.net/showthread.php?t=173616)

.Dare Devil. 12-08-2011 03:58

Check if model sound is emit.
 
Hi,

This here is model qc code
$sequence "run" "run" fps 30 { event 5004 1 "newstep/grass1.wav" }

How i check that, when i this sound play then amxmodx call something.

.Dare Devil. 12-08-2011 04:57

Re: Check if model sound is emit.
 
I think i can make step sound like cs by my self.

What i want to do is, block the old sounds.
then make a step sound with same sound like cs have and same step speed sound, like all the same like cs, by amxmodx script.

Some peoples are want to replace step sounds, soon it is possible and easy to use.
Sorry for posting useless thread.

mayby i need some code help soon, then i post it in this thread

Arkshine 12-08-2011 05:08

Re: Check if model sound is emit.
 
Quote:

Some peoples are want to replace step sounds
It has been already discussed numerous times, and with possible solutions. Please search.

.Dare Devil. 12-08-2011 05:38

Re: Check if model sound is emit.
 
Quote:

Originally Posted by Arkshine (Post 1609570)
It has been already discussed numerous times, and with possible solutions. Please search.

I have already search, and i know possible solutions.

But, noone has made that plugin
what block old stepsounds
and add exactly same stepsound system like cs by amxmodx script.


The cs step random sound system is hard to copy.
Sounds never repeated like pl_step1 and then again pl_step1.

And its not just a some random random,
There are like saved the way to play that sounds
System select one random way
and one random way has
example

pl_step3
pl_step1
pl_step2
pl_step4.

Arkshine, do you have source code of that place where is done that sounds random and stuff?
It will be easier if i see that :)

Arkshine 12-08-2011 06:39

Re: Check if model sound is emit.
 
PHP Code:

void PM_PlayStepSoundint stepfloat 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 );

    
// 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_PlaySoundCHAN_BODY"player/pl_step1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_step3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_step2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_step4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_METAL// metal floor
        
switch(irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_DIRT:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_VENT:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_GRATE:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_TILE:
        if ( !
pmove->RandomLong(0,4) )
            
irand 4;
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
4pmove->PM_PlaySoundCHAN_BODY"player/pl_tile5.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_SLOSH:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_WADE:
        if ( 
iSkipStep == )
        {
            
iSkipStep++;
            break;
        }

        if ( 
iSkipStep++ == )
        {
            
iSkipStep 0;
        }

        switch (
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_LADDER:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    }


PHP Code:

void PM_UpdateStepSoundvoid )
{
    
vec3_t knee;
    
vec3_t feet;
    
int height;
    
int isLadder;
    
int isDucking;
    
int step;
    
float vol;

    if( 
pmove->flTimeStepSound || pmove->flags FL_FROZEN )
        return;

    if( 
Lengthpmove->velocity ) <= 150 )
    {
        
pmove->flTimeStepSound 400;
        return;
    }
    
    
isLadder = ( pmove->movetype == MOVETYPE_FLY );
    
    if( 
isLadder || pmove->onground != -)
    {
        
PM_CatagorizeTextureType();
        
        
VectorCopypmove->originknee );
        
VectorCopypmove->originfeet );
        
        
height pmove->player_maxspmove->usehull ][ ] - pmove->player_minspmove->usehull ][ ];
        
        
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_PointContentskneeNULL ) == CONTENTS_WATER )
    {
        
step STEP_WADE;
        
vol 0.65;
        
pmove->flTimeStepSound 600;
    }
    else if( 
pmove->PM_PointContentsfeetNULL ) == CONTENTS_WATER )
    {
        
step STEP_SLOSH;
        
vol 0.5;
        
pmove->flTimeStepSound 300;
    }
    else
    {
        
step PM_MapTextureTypeStepTypepmove->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_PlayStepSoundstepvol );


Quote:

But, noone has made that plugin
I remember seeing plugin hooking PM_PlayStepSound.

.Dare Devil. 12-08-2011 06:55

Re: Check if model sound is emit.
 
Quote:

Originally Posted by Arkshine (Post 1609598)
PHP Code:

void PM_PlayStepSoundint stepfloat 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 );
 
    
// 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_PlaySoundCHAN_BODY"player/pl_step1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_step3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_step2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_step4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_METAL// metal floor
        
switch(irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_metal4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_DIRT:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_dirt4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_VENT:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_duct4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_GRATE:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_grate4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_TILE:
        if ( !
pmove->RandomLong(0,4) )
            
irand 4;
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_tile4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
4pmove->PM_PlaySoundCHAN_BODY"player/pl_tile5.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_SLOSH:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_slosh4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_WADE:
        if ( 
iSkipStep == )
        {
            
iSkipStep++;
            break;
        }
 
        if ( 
iSkipStep++ == )
        {
            
iSkipStep 0;
        }
 
        switch (
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_wade4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    case 
STEP_LADDER:
        switch(
irand)
        {
        
// right foot
        
case 0:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder1.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
1:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder3.wav"fvolATTN_NORM0PITCH_NORM );    break;
        
// left foot
        
case 2:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder2.wav"fvolATTN_NORM0PITCH_NORM );    break;
        case 
3:    pmove->PM_PlaySoundCHAN_BODY"player/pl_ladder4.wav"fvolATTN_NORM0PITCH_NORM );    break;
        }
        break;
    }


PHP Code:

void PM_UpdateStepSoundvoid )
{
    
vec3_t knee;
    
vec3_t feet;
    
int height;
    
int isLadder;
    
int isDucking;
    
int step;
    
float vol;
 
    if( 
pmove->flTimeStepSound || pmove->flags FL_FROZEN )
        return;
 
    if( 
Lengthpmove->velocity ) <= 150 )
    {
        
pmove->flTimeStepSound 400;
        return;
    }
 
    
isLadder = ( pmove->movetype == MOVETYPE_FLY );
 
    if( 
isLadder || pmove->onground != -)
    {
        
PM_CatagorizeTextureType();
 
        
VectorCopypmove->originknee );
        
VectorCopypmove->originfeet );
 
        
height pmove->player_maxspmove->usehull ][ ] - pmove->player_minspmove->usehull ][ ];
 
        
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_PointContentskneeNULL ) == CONTENTS_WATER )
    {
        
step STEP_WADE;
        
vol 0.65;
        
pmove->flTimeStepSound 600;
    }
    else if( 
pmove->PM_PointContentsfeetNULL ) == CONTENTS_WATER )
    {
        
step STEP_SLOSH;
        
vol 0.5;
        
pmove->flTimeStepSound 300;
    }
    else
    {
        
step PM_MapTextureTypeStepTypepmove->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_PlayStepSoundstepvol );



Thanks, that help me alot.
I get the random fine now, and the step speed is now not unknow.
Its almost same like cs. ( need to setting things and try always. )


Quote:

I remember seeing plugin hooking PM_PlayStepSound.
I think that was jump sound block what you are thinking.

Arkshine 12-08-2011 07:42

Re: Check if model sound is emit.
 
Quote:

Its almost same like cs
It's CS code. Decompiled from the binary.

Quote:

I think that was jump sound block what you are thinking
It doesn't change the fact you could hook such function (PM_PlaySound too) to change the sounds, because it seems you redo the whole code.

.Dare Devil. 12-08-2011 07:49

Re: Check if model sound is emit.
 
Quote:

Originally Posted by Arkshine (Post 1609626)
It's CS code. Decompiled from the binary.

I know that, its c++ code.
I was mean that my step sounds is almost same like cs.

Quote:

Originally Posted by Arkshine (Post 1609626)
It doesn't change the fact you could hook such function (PM_PlaySound too) to change the sounds, because it seems you redo the whole code.

I need use orpheu to hook it right?
The things is that i am very bad on orpheu.

Arkshine 12-08-2011 07:53

Re: Check if model sound is emit.
 
That's why a scripting section exists. Since such code is going to be called very often, it would be worth to try to use the efficient way by changing param on the fly, with orpheu.

EDIT: I've made a working version, will post later.

Arkshine 12-09-2011 09:24

Re: Check if model sound is emit.
 
2 Attachment(s)
Here a working test plugin. For a first version, it will be enough.
It includes a configuration file to customize more easily (custom_footsteps.ini).

Installation :

- Unzip the package in amxmodx/ directory. The package contains everything you need.
- Declare the plugin in plugins.ini.
- Configure & restart. (By default and for testing purpose, all the original sounds are replaced with the snow sounds).

That's all.
There are some comments inside the sma.


All times are GMT -4. The time now is 12:03.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.