Tengo este código que según mi entender debería funcionar

en create tengo
humo = 0
tiempo_humo = 0

if instance_create(x,y,obj_bala){humo = 1}  aquí se crearía el objeto bala y humo pasaría a ser 1
if humo = 1 {scr_humos(); tiempo_humo ++} aquí se crearía el script  humos y tiempo_humo pasaría a sumar
if tiempo_humo >= 2{humo = 0} una vez pasado o igualado el tiempo_humo deberia volver humo a 0 y no reproducirse el scr_humos


pero no se porque se sigue reproduciendo lo que hace que se lagee el juego hasta quedar parado ya que scr_humo es un script de particulas y siguen saliendo particulas hasta el infinito
Gracias de antemano a todos

En primera, tienes una alarma o alguna forma de controlar que esto no se reproduzca a la velocidad del room?

Segundo, el orden de tus instrucciones, primero, pones humo en 1 y la siguiente línea compara si en 1, por lo que siempre es verdadero y lo pone en 2, y al final comparas si es dos, por lo que vuelve a ser verdadero y se vuelve a poner en 0.

Sugiero que inviertas el orden solamente y una alarma en caso de que quieras que sea más lento.
Una persona puede equivocarse mil veces pero solo fracasa cuando le echa la culpa a otro por sus errores