Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Kirlian en Julio 23, 2012, 10:27:50 AM

Título: arrays
Publicado por: Kirlian en Julio 23, 2012, 10:27:50 AM
hola que tal la madrugada bueno me podria ayudar con un array se que hay ejemplos pero estan muy abansados para entenderles soy novato en los arrays

mi pregunta es como puedo hacer que aparescan las letras de una por una, mi codigo es


[b]evento create[/b]

i=1
dialogo[1]= hola
dialogo[2] = a ver si funciona
dialogo[3] = funciono

[b]evento draw[/b]

draw_text(x,y,dialogo[i])

evento keypress
i+=1
if i>3{i=3}


pero sin modificar el codigo que tengo de esta forma solo puedo hacer que aparescan los dialogos pero no letra por letra que me falta y me lo pueden explicar gracias

---hola bueno modifique el post porque ya pude hacerlo pero me surgio una duda-----
el codigo es

-Evento create-

i=0
i2=0
alarm[0] = 1

dialogo[0] = "hola gracias por comunidad gm"
dialogo[1] = "Estoy aprendiendo mucho"
dialogo[2] = "Ya se crear dialogos"
dialogo[3] = "Me a servido la ayuda de la comunidad"
dialogo[4] = "Fin del dialogo"

-Evento alarm[0]-
i2+=1
alarm[0]=1

-Evento draw-
draw_text(x,y,string_copy(dialogo),0,i2))  // con este codigo puedo hacer que las letras salgan de una por una en donde puse i2 es una variable que al aumentar aumenta el numero de letras del dialogo

-Evento keypress-
i+=1;

if dialogo = "fin"
{instance_destroy();}

if dialogo != "fin" // si el dialogo es diferente a los demas el valor de i2 vuelve a ser 0 y comiensa a crear las letras del siguiente dialogo
{
i2 =0;
alarm[0]= 2;
}

mi duda es para que sirve esto

if(i2<=string_length(Dialogo))
{alarm[0]=10}
se supone que estaba en evento alarm pero no me sirve de nada, entonces de que sirve este codigo
string_length() ni con el manual entendi de esto  me pueden ayudar



Título: Re:arrays
Publicado por: Silver_light en Julio 23, 2012, 04:59:30 PM
Hello's, mira te explico:

[GML]
if (i2 <= string_length(Dialogo))
{
alarm[0]=10
}
[/GML]

Lo que hace esta porción de código, es ejecutar la alarma 0, mientras i2 sea menor igual a la cantidad de letras que tiene la cadena.
Por ejemplo, dialogo[1] = "hola"... tiene 4 caracteres, entonces la alarma se ejecutará hasta que i2 tenga el mismo valor que caracteres de la cadena, en este caso: 4. En definitiva se ejecutará hasta que i2 sea igual a 4.

Según como yo lo veo debería quedar:
[GML]
i2+=1
// alarm[0]=1 Esta linea se debería quitar.

if (i2 <= string_length(Dialogo))
{
alarm[0]=10
}
[/GML]
Esa linea debería quitarse porque ejecutaría la alarma 0 sin importar si es que faltan o no caracteres de la cadena que debieran ser dibujados.
Saludos!
Título: Re:arrays
Publicado por: Kirlian en Julio 23, 2012, 09:52:24 PM
eso significa que si quito la linea string_leagth(dialogo) funciona de la misma manera que al tenerla esto nomas me sirve para verificar si ya llego al numero de caracteres maximos y dejar de ejecutarse

si es asi   gracias esta resuelta mi duda en tonces si no la pongo no me afecta en nada cierto porque si fuera asi tendria error mas adelante en los dialogos o no