Octubre 10, 2018, 06:40:28 PM Ultima modificación: Octubre 13, 2018, 08:56:01 PM por jpsaenz
Hola!

tengo otro problema de la serie "cosas que deberían ser una soberana estupidez y que sin embargo no me funcionan"... (soy un feroz proncipiante, gracias por la paciencia)

Quiero simular una conversación muy básica de whatsapp, cuya mecánica consiste en que el jugador oprima la barra espaciadora y "envíe" una sentencia establecida y luego deba esperar unos segundos para recibir una respuesta. Esto se repite tres veces.

Para ello tengo un obj_whatsapp (con el sprite de un celular corriendo el programa de mensajería) con siete subimagenes, cada una de las cuales representa una línea del diálogo simulado.

En la variable "wpchat" guardo el numeral correspondiente a la acción de oprimir la barra espaciadora y con ello intento controlar el cambio de las subimágenes:

[EVENTO CREATE]

[gml]wpchat = 0;[/gml]

[EVENTO STEP]

[gml]/// Conversación de Whatsapp

if (keyboard_check_pressed(vk_space)){
wpchat++
}

//#1
if (wpchat = 1) {
image_index=1;
alarm[0] = room_speed*3;
}

//#3
if (wpchat = 2) {
image_index=3;
alarm[1] = room_speed*3;
}


//#5
if (wpchat = 3) {
image_index=5;
alarm[2] = room_speed*3;
}[/gml]

[ EVENTO ALARM[n] ]

[gml]image_index = n;[/gml]

Los cambios de sprite directos funcionan, pero las alarmas no (también puse "obj_whatsapp.image_index = x": tampoco funciona)

En qué me estoy equivocando?

Gracias!
--
@jupixweb

Hola jpsaenz

Eso te pasa porque estás asignando el tiempo a la alarma en cada step.
Como cumple la condición, seteas la alarma a 3 segundos. En el próximo step sigues cumpliendo la condición y vuelves a setear la alarma a 3 segundos, entonces jamás llegará a cero.

Puedes incluir todo el código en el evento keyboard_check_pressed o añadir una condición que evite la reiterada ejecución del codigo

if (wpchat = 1) && image_index != 1 {
image_index=1;
alarm[0] = room_speed*3;
}

Saludos

Cita de: BssString en Octubre 10, 2018, 06:50:50 PM
Hola jpsaenz

Eso te pasa porque estás asignando el tiempo a la alarma en cada step.
Como cumple la condición, seteas la alarma a 3 segundos. En el próximo step sigues cumpliendo la condición y vuelves a setear la alarma a 3 segundos, entonces jamás llegará a cero....

Ahora entiendo mejor el funcionamiento de las alarmas, muchas gracias por la explicación, ya arreglé el código y funciona perfecto!

Saludos y gracias de nuevo (me salvas la vida por segunda vez en menos de 24hs ;-))
--
@jupixweb