Bug, no funciona el efecto de maquina de escribir la segunda vez [RESUELTO]

Publicado por Alemar5, Febrero 23, 2021, 11:40:53 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Alemar5

Hola a todos :D

Hace tiempo hice mi sistema de diálogos rpg, era bastante sencillo, pero funcionaba, la cosa es que hace un par de dias encontre un nuevo renderizado de texto llamado scribble, trate de implementarlo en el sistema de diálogos que tenia, en un principio me parti la cabeza en pensar como adaptarlo, pero finalmente lo logre, todo parecía ir en orden y los textos se reproducen correctamente, pero la segunda vez que abría el texto comenzaba con problemas, ya que el efecto de la máquina de escribir (se escribe el texto letra por letra), trate de ver las variables una por una y parece que esta fallando la función de scribble de .typewriter_in(0.5, 1)
ok, encontre el problema pero lo complicado es como solucionarlo, si alguien sabe de algo que pueda funcionar o si ven algo raro a parte de la función del .typewriter_in, se lo agradeceria mucho, a continuación les dejo los codigos que uso:

[OBJ_TEXTBOX]

_Create_:

[gml]indice = 0;

mensaje = "";

msage = scribble(mensaje)
   .typewriter_in(0.5, 1)
      .typewriter_sound(snd_letras, 999, 1.0, 1.0)


paus = false;[/gml]

_step_
[gml]if (string_length(mensaje) < string_length(referencia.msg[indice])){
    mensaje += referencia.msg[indice]
}

msage = scribble(mensaje)
   .typewriter_in(0.5, 1)
      .typewriter_sound(snd_letras, 999, 1.0, 1.0)
      
      
if msage.get_typewriter_state() = 1 && (indice <= referencia.final)
{

   if keyboard_check_pressed(ord("X")) && (mensaje == referencia.msg[indice])
   {
      indice +=1;
      global.mensaje +=1
      if (indice > referencia.final) {obj_prota.stop = false; global.mensaje = 0; instance_destroy(); }
      mensaje = "";
   }   else
   {
      mensaje = referencia.msg[indice];      
   }

}


if (msage.get_typewriter_state() < 1) && paus = false
{

   if keyboard_check_pressed(ord("X"))
   {
      msage.typewriter_skip();
   }
   
}

if (msage.get_typewriter_paused()){
   
   paus = true
   if keyboard_check_pressed(ord("X"))
   {
      msage.typewriter_unpause();   
   }

}[/gml]

_Draw_
[gml]draw_self(); //permitir ver el sprite del objeto

msage.draw(x + 20, y + 7)

draw_text(x + 20, y - 50, msage.get_typewriter_state())[/gml]


[OBJ_PROTA]

_Step_

[gml]//cama

if (stop == true) { exit; }

var  bloque;
bloque = collision_circle(x,y,32,obj_cama,false,false);

if (keyboard_check_pressed(ord("X")) and bloque){
    var msg;
    msg = instance_create(0,0,obj_textbox);
    msg.referencia = bloque;
    stop = true;
   
}[/gml]

[OBJ_CAMA] (ejemplo)

_Create_

[gml]msg[0] = "Es tu cama suave y comoda.";
msg[1] = "Te encantaria quedarte a dormir un rato mas.";
msg[2] = "...";
msg[3] = "Mejor no.";

final = 3;

global.mensaje = 0;

[/gml]

[SCRIBBLE]

https://github.com/JujuAdams/Scribble

[FUNCIONES DE SCRIBBLE]

https://github.com/JujuAdams/scribble/wiki/scribble()-Methods

[VIDEO ILUSTRANDO MI PROBLEMA]

https://www.youtube.com/watch?v=wUExs6NVL84&feature=youtu.be

Si encuentran algo se los agradeceria muchisimo :,c

Alemar5

gracias por la respuesta, ya trate de reiniciar el efecto de varias formas, con una alarma, al crearse, cuando se destruye y nada de eso parece funcionar :/

Alemar5

Amigo!!!

Use el codigo que me enviaste y ahora funciona a la perfección, de verdad te agradezco mucho :D

249 Visitantes, 0 Usuarios