estoy creando mi 3 version de fronter combat, en este momento me gustaria solucionar un problema que considero es muy breve pero cuando uno no sabe pues no sabe, mire codigos en rojo:

depth=(self.y* -(100));
if ((instance_exists(player))and(distance_to_object(player)<200))
{
mp_potential_step(player.x,player.y,2,1);
sprite_index=(pistolerrr);
}
else
{
sprite_index=(pistolerq);
}
if (distance_to_object(player)<80)
{
direction=point_direction(player.x,player.y,x,y);
speed=0;
}

if (distance_to_object(player)<120)
{
instance_create(disparador.x,disparador.y,bala);
}


el personaje "disparador" le lanza una rafaga a personaje "player", necesito hacer que esos disparos sean por lo menos cada 20 milisegundos

Puedes utilizar una alrma

en create del objeto que dispara

listo=true//esta variable le dira que ya puede atacar
velocidad=(room_speed*(20))/100  // en los 20 pones cada cuantos milisegundos quieres

en el evento de la alarma 0

listo=true

en el evento step tu codigo rojo quedaria asi

if (distance_to_object(player)<120 && lsito=true)
{
instance_create(disparador.x,disparador.y,bala);
listo=false
alarm[0]=velocidad

}


cada 20 milisegundos?

eso es muy rapido, tendrias que tener por lo menos una room_speed de 50, y disparar a cada step