You can avoid that the step_sound ist played immediately again and again although it has been already started, when you check whether the sound is still playing:
http://www.conitec.net/beta/asnd_playing.htm

SOUND* step = step.wav;

...
var step_handle = ent_playsound(my,step,100); //set a handle to the playing sound
if(snd_playing(step_handle) == 0) // check whether the sound is still playing, if it is not playing, play it
{
snd_play(step_handle,100,0);
}