Buenas gente :D
Bueno al problema... tengo creado un dialogo al estilo "Undertale" o a los juegos de "Pokémon" aqui el codigo para que entiendan cual es...
Create
y=288;
x=0;
image_xscale=8;
image_yscale=6;
tm=2;
con=0;
post=1;
Dialogos() //Es el nombre de un Scripts que contiene varios dialgos.
maxi= 0;
alarm[0]=tm;
fin="";
esc=false;
frame=0;
Como ya sabran esto es lo que controla la gran parte del sistema, no obstante cuando llego hacer un dialogo y pasa del frame "0" osea el "maxi= 0;" debe destruirse...
Alarme[0]
var cop;
cop=string_char_at(text[con],post);
fin+=cop;
post+=1;
alarm[0]=tm;
if(cop="" or cop=" ")
{}
else{
frame=post mod 2;
}
if(cop=""){
esc=true;
frame=0;
}
Draw
draw_sprite(Spr_Dialogo,image_index,x,y)
draw_set_color(c_white);
draw_set_font(Font1);
draw_sprite_ext(Spr_Chara,frame,x+8,y-80,1,1,0,c_white,1);
draw_text(x+5,y+6,fin)
Keyboard Press
if (esc){
if(con<=maxi)
{
con+=1;
post=1;
cop="";
fin="";
alarm[0]=tm;
esc=false;
}
if(con>maxi)
{
instance_destroy();
}
}else
{
fin=text[con];
post=string_length(text[con])+1;
}
Todo bien hasta ahora el comando me va bien con todo eh imagenes, pero el dilema se de vuelve a la parte del maxi ya que me gustaria usar otros textos para mas NPc, pero no se como se utilizan Si tienen alguna recomendacion para mejorar el texto o algo, necesito su ayuda... "Quiero que cada NPc se identifique con un dialogo y un maxi distinto sin la necesidad de crear tantos Objetos de dialogos
Hola HKaichim
No me gustó tu script de dialogos, es confuso y usas muchas variables innecesarias.
Lamentablemente no nos mandaste tu script "Dialogos()", habría sido bastante útil para identificar el problema, pero lo que pude entender (y adivinar básicamente) es que tu Script "Dialogos()" te debería asignar las variables "text[]" y "maxi".
Pero justo después de usar el script (en el mismo CREATE EVENT) le dices que "maxi = 0", así que no importa lo que haga el script, tu código SIEMPRE asignará "maxi = 0" y eso causa que sólo se leerá el primer dialogo, sin importar cuantos dialogos pongas.
Para corregir este error, simplemente cambia el orden.
maxi= 0;
Dialogos() //Es el nombre de un Scripts que contiene varios dialgos.
Eso te resuelve el problema y ya tu código leerá tantos dialogos como pongas.
Saludos
Cita de: BssString en Septiembre 12, 2018, 02:08:57 AM
Hola HKaichim
No me gustó tu script de dialogos, es confuso y usas muchas variables innecesarias.
Lamentablemente no nos mandaste tu script "Dialogos()", habría sido bastante útil para identificar el problema, pero lo que pude entender (y adivinar básicamente) es que tu Script "Dialogos()" te debería asignar las variables "text[]" y "maxi".
Pero justo después de usar el script (en el mismo CREATE EVENT) le dices que "maxi = 0", así que no importa lo que haga el script, tu código SIEMPRE asignará "maxi = 0" y eso causa que sólo se leerá el primer dialogo, sin importar cuantos dialogos pongas.
Para corregir este error, simplemente cambia el orden.
maxi= 0;
Dialogos() //Es el nombre de un Scripts que contiene varios dialgos.
Eso te resuelve el problema y ya tu código leerá tantos dialogos como pongas.
Saludos
El Script "Dialogos()" solo contiene los text en vez de tenerlo el mismo objetivo, osea la idea era crear distintos Scripts y que el objetivo de mensaje mostrara cada uno durante una variable
Hola HKaichim
Entonces al final del script debes añadir la variable "maxi" según la cantidad de textos que creas.
Supongo que tu script tiene algo así como:
text[0] = "Buen día"
text[1] = "Espero que te encuentres bien"
text[2] = "La grasa es dañina para tu cuerpo"
text[3] = "Cuidatetequieromuchoadios"
maxi = 3 //El ID 3 es el último texto que debe leer
El último texto tiene ID 3, así que tu maxi también debe tener ID 3 para que puedas leerlos todos.
Así leerá el texto 0, 1, 2 y 3, cuando llegue al final del 3 y pulses una tecla, se cerrará el dialogo.
Recuerda eliminar (o cambiar de posición) el maxi=0 que declaraste en el Create Event, esa línea del create event sólo hará que el texto se cierre al leer la primera frase del dialogo, sin importar si hay más.
Respecto a eso que mencionas de "usar solo un objeto para los dialogos", ya que estás usando un script, puedes crearle argumentos con el ID interno del dialogo que quieres crear.
Luego lo llamas según el dialogo. Así: Dialogos(0), o Dialogos(1)
En el script haces:
var dialogo_id = argument0
switch (dialogo_id) {
case 0: //Te carga el primer dialogo del juego
text[0] = "frase1"
text[1] = "frase2"
text[2] = "frase3"
maxi = 2
break
case 1: //Te carga el segundo dialogo del juego
text[0] = "frase1"
text[1] = "frase2"
maxi = 1
break
...etc hasta el infinito
}
Así sólo con 1 script y 1 objeto puedes controlar TODOS los dialogos que ocurrirán en TODO el juego.
Es sólo una idea...
Saludos