Estoy haciendo un juego y estoy haciendo asi

// Player Shoots
if keyboard_check(ord("Z")){
    instance_create(x,y,obj_bala)
}


si hago eso creara muchas instancias y no me sirve eso por que el juego es estilo space invaders y quiero hacer como un tiempo de espera, por favor expliquenme bien lo que se esta haciendo en el script si pueden.

Puedes añadir una variable que al principio vale 1:

Evento <Create>:
disparar=1

Tu nave sólo podrá disparar si la variable vale 1, y así lo implementas en el código que tenías:

// Player Shoots
if keyboard_check(ord("Z")) and disparar=1 {
    instance_create(x,y,obj_bala)
    disparar=0
    alarm[0]=10
}


Como ves, una vez has disparado la variable cambia a 0 para no dejarte disparar una segunda vez.
Luego gracias a alarm[0]=10, al cabo de 10 steps se ejecutará el evento <Alarm 0>.

En ese evento pondremos:
disparar=1

De tal forma que cada vez que dispares te impida volver a disparar inmediatamente pero al cabo de 10 steps puedas volver a hacerlo.

Ajusta tú mismo el tiempo de la alarma para poder disparar más o menos balas seguidas.

¡Saludos y espero que te haya servido!

Gracias habia echo algo con el alarm pero no me habia servido y este no lo he probado.