Buenas gente, luego que [user]3dgeminis[/user] en su buen corazón me ayudará a terminarlo
Por fin tengo un código muy bueno para que en la caja de texto el párrafo aparezca letra por letra
Como siempre lo que yo pueda aportar va mas dirigido a los novatos porque los que ya llevan tiempo habrán desarrollado sus propios métodos pero igual a quien le sirva y espero si haya alguien es suyo
Antes que nada diré que para los texto es con un arreglo que se coloca en el creation code del objeto que tenga el código, además el texto esta enfocado a un evento llamado obj_Prota que seria el protagonista, y que en el evento draw GUI tiene un sprite llamado spr_HUD_Texto, que seria la caja de texto, todo esto lo digo para que lo ajusten a su conveniencia, como dije esto va enfocado mas a novatos que profesionales
PD: si lees esto [user]kostra[/user] recuerda darme un gracias así nolo copies
Evento Create
pagina = 0 //Contador de pagina actual
paginas[0] = "" //arreglo de paginas
mostrar = false //mostrar cartel por defecto
pagina = -1 //pagina actual, -1 = inactivo
i = 0
En el Evento Alarm[0]
if(distance_to_object(obj_Prota)<3){
if i < string_length(paginas[pagina]){
i++
alarm[0] = 4
}
}
En el evento Step
Step Codigo 1
///Controlar si el jugador abre el cartel
if (keyboard_check_pressed(ord("Z")) and distance_to_object(obj_Prota)<3){
mostrar = true}
//Si se aleja cerramos el cartel y reiniciamos
if(distance_to_object(obj_Prota)>3){mostrar = false; pagina = -1}
Step Codigo 2
///Comprobar si el jugador pasa la pagina
if(keyboard_check_pressed(ord("Z"))and mostrar){
//Pasar pagina
if(pagina+1 < array_length_1d(paginas)){ pagina++;alarm[0]=4
for(i=0;i>=string_length(paginas[pagina]);i=0){}
if(paginas[pagina] >= string_length(paginas[pagina])){}
}
else{
//Si nos pasamos el maximo reiniciamos el cartel
mostrar = false
pagina = -1
}
}
Evento Draw GUI
///Comprobar si el jugador esta cerca
if(mostrar){
draw_sprite(spr_HUD_Texto,0,0,31)
draw_set_font(f_Texto)
draw_set_halign(fa_left)
copia = string_copy(paginas[pagina],1,i)
draw_set_color(c_black)
draw_text(34,37,copia)
draw_set_color(c_white)
draw_text(33,36,copia)
}
Yo lo modificaría un poco.
Evento Create
[gml]
pagina = -1 //Contador de pagina actual, -1 = inactivo
paginas[0] = "" //arreglo de paginas
mostrar = false //mostrar cartel por defecto
i = 0
[/gml]
En el Evento Alarm[0]
[gml]
if(mostrar){
if i < string_length(paginas[pagina]){
i++
alarm[0] = 4
}
}
[/gml]
En el evento Step
Step Codigo 1
[gml]
///Controlar si el jugador abre el cartel
if (mostrar){
//Si se aleja cerramos el cartel y reiniciamos
if(distance_to_object(obj_Prota)>3){mostrar = false; pagina = -1}
}
else {
if (keyboard_check_pressed(ord("Z")) and distance_to_object(obj_Prota)<3){
mostrar = true}
}
[/gml]
Step Codigo 2
[gml]
///Comprobar si el jugador pasa la pagina
if(keyboard_check_pressed(ord("Z"))and mostrar){
//Pasar pagina
if(pagina+1 < array_length_1d(paginas)){ pagina++;alarm[0]=4
else{
//Si nos pasamos el maximo reiniciamos el cartel
mostrar = false
pagina = -1
}
}
[/gml]
Evento Draw GUI
[gml]
///Comprobar si el jugador esta cerca
if(mostrar){
draw_sprite(spr_HUD_Texto,0,0,31)
draw_set_font(f_Texto)
draw_set_halign(fa_left)
copia = string_copy(paginas[pagina],1,i)
draw_set_color(c_black)
draw_text(34,37,copia)
draw_set_color(c_white)
draw_text(33,36,copia)
}
[/gml]
se que es tarde pero no habia visto este script, podrias ponerlo con la plantilla que debe, se me hace un poco raro verlo asi.