Octubre 26, 2017, 03:59:05 PM Ultima modificación: Diciembre 29, 2018, 07:14:10 AM por rpgamer97
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)   
}
"El objetivo claro de los videojuegos es entretener"


Shigeru Miyamoto

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]
Vota nuestro proyecto en Steam Greenlight:

Estudios Naicura Ltda

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.
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala