Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Alemar5

31
Hola amigos, otra vez yo  :-[

Estaba tratando de buscar un shader gratis para hacer un efecto de reflejo para el agua o simplemente un espejo, es para un juego en 2D rpg, asi que no creo que sea mucho problema... o a lo mejor si :,3

en fin si encuentran uno se los agradeceria infinitamente :3
32
Hola amigo :D, quiero decirte que utilice tus codigos para comprobar las variables y todas parecian estar funcionando :c

entonces me las ingenie para crear este codigo con un nuevo objeto:

TEXTBOX_REFRIGERADOR
[step]

[gml]/// @description  preciona enter y cambia de dialogo
if keyboard_check_pressed(ord("X")) and indice <= referencia.final{
   if (mensaje == referencia.msg[indice]){
       indice += 1;
       global.mensaje += 1;
if (indice = 7) { instance_create(x,y,obj_controlador_stop); instance_destroy();  }

       mensaje = "";
       }else{
             mensaje = referencia.msg[indice];
       }
}

///coloca el cuadro de texto en la parte inferior de la pantalla
x = __view_get( e__VW.XView, 0 )+0;
y = __view_get( e__VW.YView, 0 )+176;
[/gml]

OBJ_CONTROLADOR_STOP

[gml]if !(instance_exists(obj_textbox_refrigerador)) {obj_prota.stop = false; instance_destroy();}[/gml]

Realmente te agradezco mucho por tu ayuda, me ayudo muchisimo a resolver este problema de las variables, enserio, mil gracias :3
33
Ya intente cambiar el codigo y me aparece que el indice es igual a 7, por tanto es correcto, cuando cierro el mensaje el juego continua naturalmente destruyendo la instancia hasta que sea llamada nuevamente.

por tanto podria decirse que el codigo falla al llegar a:

[gml]{obj_prota.stop = false; instance_destroy();}[/gml]

parece que se ejecuta antes el objeto prota.stop como true antes de destruir la instancia y se repite eternamente, sin embargo trate de cambiarlo a:

[gml]{ instance_destroy(); obj_prota.stop = false; }[/gml]

pero sigue fallando, la cosa es que si se ejecuta el prota.stop como true antes de destruir la instancia se repetirá infinitamente, pero como es posible que siendo exactamente codigos iguales, literalmente una copia esten fallando de esta manera?

Agradezco mucho tu ayuda :3
34
Un saludo, estuve tratando de resolver el problema con la informacion que me diste, sin embargo continua sin funcionar.

Respondiendo a las preguntas...

¿cuando debe destruirse la instancia? La instancia deberia destruirse cuando el indice sea mayor que la referencia final, el cual esta especificado en el objeto refrigerador como numero 6.

¿cuando falla? Falla justamente en el final del texto, cuando se supone que deberia destruirse este vuelve a empezar, creando un bucle infinito.

esto solo sucede si uso una copia IDENTICA del objeto textbox, lo cual me extraña suponiendo que es el mismo codigo, te adjuntare un video para que puedas apreciar el codigo con mas detalle.

(de antemano gracias por la ayuda :3)

Link: (revisa las marcas de tiempo)

https://www.youtube.com/watch?v=WqENSEZkSrE&feature=youtu.be
35
Hola amigo, gracias por la respuesta, ya tinente agregarle +1 a la referencia.final, sin embargo continúa dando el mismo problema...

Este es el codigo modificado:

[gml]/// @description  preciona enter y cambia de dialogo
if keyboard_check_pressed(ord("X")) and indice <= referencia.final+1{
   if (mensaje == referencia.msg[indice]){
       indice += 1;
       global.mensaje += 1;
       if (indice > referencia.final) { obj_prota.stop = false; instance_destroy(); }
       mensaje = "";
       }else{
             mensaje = referencia.msg[indice];
       }
}

///coloca el cuadro de texto en la parte inferior de la pantalla
x = __view_get( e__VW.XView, 0 )+0;
y = __view_get( e__VW.YView, 0 )+176;

[/gml]
36
Hola amigos, primero que nada buenas tardes xd y segundo...

Tengo un código que corresponde a la creación de un textbox rpg, lo que sucede es que esta instancia al terminar todos los textos se debería destruir y dejar que el personaje se mueva, el caso es que cree una copia del objeto textbox y ligue el objeto a esa copia, lo que sucede es que cuando uso la copia el objeto textbox(copia) no se destruye, si no que se reinicia, el objetivo de la copia del textbox es poder modificarlo, pero con este problema no puedo hacer nada, como puedo arreglar este problema?

[obj_textbox] (original)

[create]
[gml]indice = 0;

mensaje = "";

alarm[0] = 1;

///coloca el cuadro de texto en la parte inferior de la pantalla
x = __view_get( e__VW.XView, 0 )+0;
y = __view_get( e__VW.YView, 0 )+176;

[/gml]

[Step]

[gml]/// @description  preciona enter y cambia de dialogo
if keyboard_check_pressed(ord("X")) and indice <= referencia.final{
   if (mensaje == referencia.msg[indice]){
       indice += 1;
       global.mensaje += 1;
       if (indice > referencia.final) { obj_prota.stop = false; instance_destroy(); }
       mensaje = "";
       }else{
             mensaje = referencia.msg[indice];
       }
}

///coloca el cuadro de texto en la parte inferior de la pantalla
x = __view_get( e__VW.XView, 0 )+0;
y = __view_get( e__VW.YView, 0 )+176;

[/gml]

[Alarm_0]

[gml]if (string_length(mensaje) < string_length(referencia.msg[indice])){
    mensaje += string_char_at(referencia.msg[indice],string_length(mensaje)+1);
    audio_play_sound(snd_letras,1,false);
}

alarm[0] = 1;

[/gml]

[Draw]

[gml]/// @description dibujar textbox
draw_self(); //permitir ver el sprite del objeto
draw_set_font(fnt_textbox); //fuente del texto
draw_set_color(c_white); //color
draw_text_ext(x+20,y+7,string_hash_to_newline(mensaje),string_height(string_hash_to_newline("W")),310-60); //dibujar bucle de texto
draw_set_halign(fa_left); //alineacion del texto

[/gml]

[Objeto protagonista]

[Step]

[gml]///Refrigerador

var  bloque;
bloque = collision_circle(x,y,5,obj_refrigerador,true,false);

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

[objeto_refrigerador]

[create]

[gml]msg[0] = "Encima del refrigerador hay#un tarro de galletas.";
msg[1] = "Parece que solo queda una#galleta...";
msg[2] = "¿Tomas la ultima galleta?";
msg[3] = "Has tomado la ultima galleta!"
msg[4] = "Michael: Oye, por cierto#no vallas a tomar mi galleta que deje en el tarr...";
msg[5] = "...";
msg[6] = "Olvidalo...";

final = 6

global.mensaje = 0

depth = -y;[/gml]

[como quisiera modificar el textbox]

[step textxbox]

[gml]/// @description  preciona enter y cambia de dialogo
if keyboard_check_pressed(ord("X")) and indice <= referencia.final{
   if (mensaje == referencia.msg[indice]){
       indice += 1;
       global.mensaje += 1;
      
       if (indice = 3) { alarm[1] = 10 }
      
      if ((indice > 3) && (canskip = true) && (obj_arbol_de_navidad.Aregalo = 0) && (obj_arbol_de_navidad.Txtarb = 0)) { obj_prota.stop = false; instance_destroy(); canskip = false}
      
      if (indice > 6) { obj_prota.stop = false; instance_destroy(); canskip = false;  obj_arbol_de_navidad.Aregalo = 1}
      
      if ((indice > 0) && (obj_arbol_de_navidad.Aregalo = 1)) {obj_prota.stop = false; instance_destroy();}
      
       mensaje = "";
       }else{
             mensaje = referencia.msg[indice];
       }
}


///coloca el cuadro de texto en la parte inferior de la pantalla
x = __view_get( e__VW.XView, 0 )+0;
y = __view_get( e__VW.YView, 0 )+176;[/gml]

Necesito ayuda, es bastante extraño que suceda esto, ya probe cambiando el step por begin step o un end step, pero nada :/ si alguien tiene idea de lo que sucede se lo agradeceria mucho :3
37
Preguntas y respuestas / Re:Texto borroso
Octubre 28, 2020, 08:27:53 PM
hola amigo, tengo una posible solución para ti, has intentado quitar el "high quality" a tu font?
normalmente en juegos de pixel art suele confundir el texto con uno de mayor resolución, en caso de que no estés usando una font te recomiendo hacer una,
luego de crearla debes escribir "draw_set_font" para poder agregarla
este es un ejemplo:

en un evento draw:
[gml]draw_set_font(fnt_letras)
draw_text(x, y, "Bienvenido al juego")[/gml]

cualquier cosa estaré dispuesto a ayudarte :3
38
ah ok, gracias amigo.
39
gracias amigo, pero basicamente lo que queria saber es como registrar una salida cuando le das a la x en la ventana de windows, podria registrarse un cierre desde ahi?

40
Que tal amigos :D?

Hoy vengo con una nueva pregunta, cuando se incicia un juego en game maker, en la parte de abaja sale como un registro de las acciones que hace, por ejemplo se registra un evento de pausa o aparece "Compile finished: 9:45:18"
lo que me interesa saber es como tomar ese evento de registro para poder usarla en el juego, como por ejemeplo saber cuantas veces ha sido cerrado el juego y a partir de eso poder cambiar el juego, un ejemplo.
[gml]if (se cierra el juego) = 3 {
            draw_text(x,y, "has jugado" + global.(se cierra el juego) + " veces, por favor vuelve mañana")
}[/gml]

les agradezco por su ayuda amigos :3
41
No me funciona amigo... :'( :'( :'(
42
Ya probe de todo y corregi las cosas, incluso probe con un objeto de prueba que ocupa toda la room para ver si así hallaba la posición y ni aun así cambió su sprite, verifique los eventos del objeto y no hay ningún conflicto de sprite_index, tambien probe con los eventos de draw y nada, no me funciono muy bien este método, sin embargo enserio te agradezco por tu tiempo y por tratar de ayudarme.
43
Hola amigo, de nuevo yo  :-[
ya trate de cambiar el codigo, sin embargo sigue sin afectar el sprite de la madre, ya probe cambiando las cordenadas x, y pero sigue sin resultar, inclusive trate de tomar como referencia el obj_mama.x y obj_mama.y no se que podria hacer :c

[gml]if instance_exists(obj_textbox) {
   if place_meeting(x-5, y, obj_prota)
      sprite_index = spr_mama_derecha
   if place_meeting(x+5, y, obj_prota)
      sprite_index = spr_mama_izquierda
   if place_meeting(x, y-5, obj_prota)
      obj_prota.sprite_index = spr_mama_arriba
   if place_meeting(x, y+5, obj_prota)
      obj_prota.sprite_index = spr_mama_abajo
}[/gml]

tambien intente cambiando la mascara de colision, coloque preciso y donde dice obj_prota tambien probe colocando obj_mama. ayuda :(
44
Listo amigo, ya complete el código que me diste en el evento step de la madre, sin embargo continúa sin cambiar de sprite, que puedo hacer y cómo podría colocar la variable de "bloque.hijo = id"?

[gml]if instance_exists(obj_textbox) {
   if place_meeting(x-48, y, obj_prota)
      obj_prota.sprite_index = spr_mama_derecha
   if place_meeting(x+48, y, obj_prota)
      obj_prota.sprite_index = spr_mama_izquierda
   if place_meeting(x, y-48, obj_prota)
      obj_prota.sprite_index = spr_mama_arriba
   if place_meeting(x, y+48, obj_prota)
      obj_prota.sprite_index = spr_mama_abajo
}[/gml]
45
Hola amigos, qué tal todo? :D

Hoy vengo con una pregunta nueva, hace tiempo encontré un código para crear un textbox al acercarte a un personaje y presionar la tecla X, esto es posible gracias a un círculo de colisión con los objetos npc, el cual en ocasiones puede no ser tan preciso, me gustaria mejorar ese codigo para tener mas precision y lo mas importante, que el sprite del personaje npc cambie dependiendo de la posición que se le esté hablando, les dejare una imagen y los códigos para que puedan comprender mejor.

Código de la colisión antigua, (es la variable bloque):

[gml]///Mama

var  bloque;
bloque = collision_circle(x,y,5,obj_mama,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]

Evento create de la mama:

[gml]msg[0] = "Mamá: Hola cariño.";
msg[1] = "Mamá: Vine aqui para comprar#algunas cosas para el almuerzo.";
msg[2] = "Mamá: Pero bien parece que no#hay nadie.";
msg[3] = "Mamá: Supongo que todos estan#en sus hogares descansando#despues de las fiestas.";
msg[4] = "Mamá: ¿Ya desayunaste?.";
msg[5] = "Mamá: Porfavor perdoname por no#haberte dejado el desayuno.";
msg[6] = "Mamá: Estaba muy apresurada.";
msg[7] = "Mamá: Vamos a casa, te pedire#una pizza.";

final = 7;


global.mensaje = 0;

image_speed = 0.1;

depth = -y;[/gml]

Una imagen de ejemplo para mayor comprensión (adjunto):

Les agradeceria mucho su ayuda amigos y gracias por todo :3