Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

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


Temas - Cher3

Páginas: 1
1
Preguntas y respuestas / Guardar coordenadas
« en: Octubre 14, 2019, 05:53:48 pm »
Holi¡Buenas! Vengo con otro problema xd.
Quiero hacer que si pulsas A cuando tocas un objeto te lleve a otra sala, eso lo se hacer, pero cuandoquieras irte a la sala anterior se guarden las coordenadas, alguna idea de como hacer eso?

2
Preguntas y respuestas / Problema con movimiento
« en: Octubre 07, 2019, 04:10:07 pm »
¡Buenas!Mi problema consiste en lo siguiente:

He creado 2 objetos, el objeto jugador que se mueve "perfectamente" en 8 direcciones y se para cuando colisiona con x objetos, ademas tambien se para si levanto las teclas de direcciones.
Cuando colisiona con otro objeto el cual sería como un NPC y pulsas la letra "A" el personaje debería quedarse quieto y mostrar un mensaje, cuando vuelves a pulsar "A" vuelve a desaparecer.

Sin embargo el problema reside en que para comenzar cuando levanto la tecla "A" Mi personaje sale corriendo en la dirección que mire y además no se desbloquea hasta que pulso arriba,abajo,izquierda y derecha haciendo que pueda volver a caminar con normalidad.
Ademas el mensaje de texto se quita muy rapidamente.¿Alguien sabe como podría arreglarse?

Dejaré aquí abajo todo el codigo gracias de antemano.

PERSONAJE QUE SE MUEVE:
-EVENTO STEP-
global.objeto = 0 { //Si global objeto es 0 significa que puedo andar
if keyboard_check(vk_left)//SI PRESIONO IZQUIERDA
{
    if keyboard_check(vk_up) //Y ARRIBA
        {hspeed=-2.5 vspeed=-2.5}
    else if keyboard_check(vk_down)//Y ABAJO
        {hspeed=-2.5 vspeed=2.5}
    else if keyboard_check(vk_right) {hspeed=0} //Y DERECHA
    else {hspeed=-4} //SOLO IZQUIERDA
   
}
else if keyboard_check(vk_right)//SI PRESIONO DERECHA
{
    if keyboard_check(vk_up) //Y ARRIBA
        {hspeed=2.5 vspeed=-2.5}
    else if keyboard_check(vk_down) //Y ABAJO
        {hspeed=2.5 vspeed=2.5}
    else if keyboard_check(vk_left) {hspeed=0} ////E IZQUIERDA
    else {hspeed=4} //SOLO DERECHA
}

else if keyboard_check(vk_up) and !keyboard_check(vk_right) and !keyboard_check(vk_left) //SI PRESIONO ARRIBA
{
    if keyboard_check(vk_down) vspeed=0;//Y ABAJO
    else vspeed=-4;//SOLO ARRIBA
}

else if keyboard_check(vk_down) and !keyboard_check(vk_right) and !keyboard_check(vk_left) //SI PRESIONO ABAJO
{
    if keyboard_check(vk_up) vspeed=0;//Y ARRIBA
    else vspeed=4;//SOLO ABAJO
}


if !keyboard_check(vk_left) and !(keyboard_check(vk_right))//SI NO PRESIONO IZQUIERDA NI DERECHA
hspeed=0;
if !keyboard_check(vk_up) and !(keyboard_check(vk_down))//SI NO PRESIONO ARRIBA NI ABAJO
vspeed=0;
}
//AQUI ACABA EL OBJETO.0
//Cambiar sprite
if vspeed > 0 and global.objeto = 0
repeat(6)
{
    contador+= 1
    if contador > 50 { contador = 0 subim+=1}
    if subim < 0  subim= 0
    if subim > 3 subim = 0
}
else if vspeed < 0  and  global.objeto = 0
repeat(6)
{
    contador+= 1
    if contador > 50 { contador = 0 subim+=1}
    if subim < 4  subim= 4
    if subim > 7 subim = 4
}
else if vspeed = 0  and  global.objeto = 0
{
    if hspeed < 0
    repeat(6)
    {
    contador+= 1
    if contador > 50 { contador = 0 subim+=1}
    if subim < 8  subim= 8
    if subim > 11 subim= 8
    }
   
    else if hspeed > 0  and  global.objeto = 0
    repeat(6)
    {
    contador+= 1
    if contador > 50 { contador = 0 subim+=1}
    if subim < 12  subim= 12
    if subim > 15 subim= 12
    }
//Colisión muro
}
if keyboard_check_released(vk_down) and vspeed = 0 and hspeed = 0{
subim = 0}
if keyboard_check_released(vk_up) and vspeed = 0 and hspeed = 0{
subim = 4}
if keyboard_check_released(vk_left) and vspeed = 0 and hspeed = 0{
subim = 8}
if keyboard_check_released(vk_right) and vspeed = 0 and hspeed = 0{
subim = 12}

if instance_place(x + hspeed, y,Colision){hspeed = 0;}
if instance_place(x,y + vspeed ,Colision){vspeed = 0;}

//PARARSE AL HABLAR CON UN OBJETO

if instance_place(x + hspeed, y + vspeed,Colision_2) and keyboard_check_pressed(ord("A")) and global.objeto = 0 {global.objeto = 1;}
if global.objeto = 1 {
    hspeed = 0;
    vspeed = 0;
      if keyboard_check_pressed(ord("A")){
              global.objeto = 0;}
}


//no tocar arriba esta todo bien crea el mensaje

if global.objeto = 1 and subim = 0{
    keyboard_key_press(vk_down);
}
if global.objeto = 1 and subim = 4{
    keyboard_key_press(vk_up);
}
if global.objeto = 1 and subim = 8{
    keyboard_key_press(vk_left);
}
if global.objeto = 1 and subim = 12{
    keyboard_key_press(vk_right);
}

OBJETO QUE REALIZA EL TEXTO:

-EVENTO CREATE
///variables de texto
numero= 0 ;
texto[0] = "EASTEREGG,Este mensaje no debería aparecer en la pantalla.";
texto[1] = "Esta frio, parece que ha nevado hace poco." ;

-EVENTO DRAW
if global.objeto = 1 {

draw_self();
draw_set_color(c_white);
draw_set_halign(fa_left);
draw_set_font(Dialogo);
draw_text(x+100, y+100, texto[numero]);


}
-EVENTO PULSACIÓN DE TECLA A
if ( numero < 1)
{
 numero += 1;

}
else
{
instance_deactivate_object(obj_dialogo);
}




Muchas gracias de antemano <3

3
Preguntas y respuestas / Desactivar temporalmente el evento draw
« en: Septiembre 14, 2019, 05:08:37 pm »
¡Buenas!Me ocurre el siguiente problema, tengo un objeto el cual es una pequeña montaña de nieve, mi objetivo es que cuando presione "A" aparezca un mensaje, el personaje se pare sin poder moverse y cuando vuelva a pulsar "A"Pueda moverme y no aparezca el mensaje.

He logrado hacer que el personaje se pare y que aparezca todo el mensaje, sin embargo no consigo desactivar el mensaje del evento draw, dejo por aquí el codigo.
(estoy usando varios objetos).

(EVENTO PRINCIPAL DEL OBJETO DE LA MONTAÑA DE NIEVE)

-Create:
Mensaje = "Es un montón de nieve,parece que aún no se esta derritiendo."
if keyboard_check_pressed(ord("A")) and global.objeto = 2 {global.objeto = 0};

-Draw:

if global.objeto = 2 {
draw_sprite(Cuadro_texto_objeto,0,0,400)
//Caja de texto
draw_set_font(Dialogo);
draw_set_color(c_white);

//Contenido del texto
draw_set_halign(fa_left)
draw_text_ext(50, 480 ,Mensaje,30,700);

}
-Press_keyboard
global.objeto = 2
alarm[0] = 60

En resumen lo único que hace arriba es que cuando global.objeto es igual a 2 puedo ver el mensaje y el personaje se para.

(OBJETO ACTIVADOR DESACTIVADOR)
-create
if keyboard_check_pressed(ord("A")) and global.objeto = 2 {instance_deactivate_object(Evento_nieve)};
if keyboard_check_pressed(ord("A")) and global.objeto = 0 {instance_activate_object(Evento_nieve)};


No necesito ayuda ahora mismo con el movimiento del personaje así que solo necesito saber como desactivar unicamente el evento draw, muchas gracias de antemano por la ayuda <3

4
Preguntas y respuestas / Dejar totalmente parado el personaje.
« en: Mayo 27, 2019, 06:54:57 pm »
¡Buenas!Llevo varios días rallado con esto y quería ver si alguien podría ayudarme, tengo el codigo del movimiento del personaje y de las colisiones, he programado
que cuando se encuentre con x objeto que será como un NPC se pare, hasta ahí todo bien, no se reproduce la animación de andar ni nada, pero sigue reproduciendose la animación de mirar arriba,izquierda,abajo,derecha.
¿Alguna idea para dejarlo completamente quieto?
Dejo por aquí el codigo:

CREATE

image_speed = 0;
contador=0;
subim=0;
 if global.ojos = 2 {
    visible = true}

STEP
if keyboard_check(vk_left)//SI PRESIONO IZQUIERDA
{
    if keyboard_check(vk_up) //Y ARRIBA
        {hspeed=-2.5 vspeed=-2.5}
    else if keyboard_check(vk_down)//Y ABAJO
        {hspeed=-2.5 vspeed=2.5}
    else if keyboard_check(vk_right) {hspeed=0} //Y DERECHA
    else {hspeed=-4} //SOLO IZQUIERDA
}
else if keyboard_check(vk_right)//SI PRESIONO DERECHA
{
    if keyboard_check(vk_up) //Y ARRIBA
        {hspeed=2.5 vspeed=-2.5}
    else if keyboard_check(vk_down) //Y ABAJO
        {hspeed=2.5 vspeed=2.5}
    else if keyboard_check(vk_left) {hspeed=0} ////E IZQUIERDA
    else {hspeed=4} //SOLO DERECHA
}

else if keyboard_check(vk_up) and !keyboard_check(vk_right) and !keyboard_check(vk_left) //SI PRESIONO ARRIBA
{
    if keyboard_check(vk_down) vspeed=0//Y ABAJO
    else vspeed=-4//SOLO ARRIBA
}
else if keyboard_check(vk_down) and !keyboard_check(vk_right) and !keyboard_check(vk_left) //SI PRESIONO ABAJO
{
    if keyboard_check(vk_up) vspeed=0//Y ARRIBA
    else vspeed=4//SOLO ABAJO
}

if !keyboard_check(vk_left) and !(keyboard_check(vk_right))//SI NO PRESIONO IZQUIERDA NI DERECHA
hspeed=0
if !keyboard_check(vk_up) and !(keyboard_check(vk_down))//SI NO PRESIONO ARRIBA NI ABAJO
vspeed=0

//Cambiar sprite
if vspeed > 0 and global.objeto = 0
repeat(6)
{
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 0  subim= 0
   if subim > 3 subim = 0
}
else if vspeed < 0  and  global.objeto = 0
repeat(6)
{
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 4  subim= 4
   if subim > 7 subim = 4
}
else if vspeed = 0  and  global.objeto = 0
{
   if hspeed < 0
   repeat(6)
   {
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 8  subim= 8
   if subim > 11 subim= 8
   }
   
   else if hspeed > 0  and  global.objeto = 0
   repeat(6)
   {
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 12  subim= 12
   if subim > 15 subim= 12
   }
//Colisión muro
}
if keyboard_check_released(vk_down) and vspeed = 0 and hspeed = 0{
subim = 0}
if keyboard_check_released(vk_up) and vspeed = 0 and hspeed = 0{
subim = 4}
if keyboard_check_released(vk_left) and vspeed = 0 and hspeed = 0{
subim = 8}
if keyboard_check_released(vk_right) and vspeed = 0 and hspeed = 0{
subim = 12}

if instance_place(x + hspeed, y,Colision){hspeed = 0;}
if instance_place(x,y + vspeed ,Colision){vspeed = 0;}

//PARARSE AL HABLAR CON UN OBJETO

if instance_place(x + hspeed, y,Colision_2) and keyboard_check(ord("A")) {global.objeto = 1;}
if instance_place(x,y + vspeed ,Colision_2) and keyboard_check(ord("A")) {global.objeto = 1;}

if global.objeto = 1 {
   hspeed = 0 ;
}
if global.objeto = 1 {
   vspeed = 0 ;
}



DRAW

draw_sprite(sprite_index,subim,x,y)


Gracias de antemano por ayudarme, si tenéis algún consejo sobre como podría realizarlo también me sirve ^^


5
Preguntas y respuestas / Como dejar quieto al personaje.
« en: Mayo 12, 2019, 03:23:25 pm »
Buenas!Me ocurre lo siguiente.Tengo las colisiones programadas en un item (realmente sería un sprite y en el objeto que se mueve tengo puesto que si se choca la velocidad es = 0)
Vale hasta hay bien, todo perfecto.
Sin embargo ahora me ocurre lo siguiente.

Tengo 8 sprites seleccionables, no puedo estar programandoles a los 8 todo el rato cuando se choca con x objeto se para y sale un mensaje.
Quiero programar que x objeto que lo vamos a llamar Nieve cuando nos choquemos con el y pulsemos A no se mueva y aparezca un texto

6
Buenas, quería exponeros un problema que llevo teniendo toda la tarde con Game Maker y me esta comenzando a tocar la moral.
Sucede lo siguiente,tengo un evento que según el nombre que habías elegido te da un mensaje, hasta aquí todo funciona perfectamente y no tengo problemas.
Sin embargo cuando le ordeno que cuando pulse "A" vaya a otra room se queda congelado en el mensaje y todos los sprites dejan de moverse.
He probado si el fallo era que por alguna razón la orden no llegaba.
Sin embargo probé a ordenarle que en vez de mandarme a otra room me diera un mensaje y funcionaba sin congelarse.
Además solo se congela la pantalla en este caso, en las otras salas cuando les ordeno ir a otro lado funciona.

¿Alguna idea de que puede ser?

---------------------------Evento Create.-----------------------
[/b]
//reloj

alarm[0] = 2
object_set_visible (obj_mensaje_NOBORRAR, false);
//mensaje base

NPC = "???";
Nombre = global.nombre
Icono = Icon_Mickael;
Especial = 0;
Numero = 0;


///NOMBRES Y MENSAJES

if global.nombre = "FLAIN" {
   Especial = 1;
}
if global.nombre = "VODKA" {
   Especial = 2;
}
if global.nombre = "MARTIN" {
   Especial = 3;
}
if global.nombre = "MILA H" {
   Especial = 4;
}
if global.nombre = "LILA" {
   Especial = 5;
}
if global.nombre = "RAMBAM" {
   Especial = 6;
}
if global.nombre = "EIBLEC" {
   Especial = 6;
}
if global.nombre = "CORNELIUS" {
   Especial = 6;
}
if global.nombre = "ANGELA" {
   Especial = 6;
}
if global.nombre = "MIR" {
   Especial = 7;
}
if global.nombre = "CHER" {
   Especial = 8;
}
if global.nombre = "HELP" {
   Especial = 9;
}
if global.nombre = "SOCORRO" {
   Especial = 9;
}
if global.nombre = "SOS" {
   Especial = 9;
}
if global.nombre = "AYUDA" {
   Especial = 9;
}
if global.nombre = "MICKAEL" {
   Especial = 10;
}

///Error
if (Especial = 9) {
   show_message("ERROR:NjkgODIgODIgNzkgODIgMzIgNTEgNDggNTAgNTcgNTEgNDggMzIgNzcgNjkgODMgODMgNjUgNzEgNjkgMzIgNzYgNzkgNjcgNzUgNjkgNjggMzIgNDUgMTAxIDEwNiAxMDEgOTkgMTE2IDEwNSAxMTAgMTAzIDMyIDEwMiAxMTQgMTExIDEwOSAzMiAxMTYgMTA0IDEwMSAzMiAxMTUgMTIxIDExNSAxMTYgMTAxIDEwOSA0NQ==)")
   game_end()
}
if (Especial = 10) {
   show_message("Error:cGJlZWhjZyBzdnlyIEhnYmN2biBhYmcgc2JoYXE=")
   game_end()
}
if global.nombre = "HAMILTON" {
   Especial = 11;
}


------------------Alarma0--------------------------
visible = true

----------------------------------Evento Draw----------------------------------
[/b]

//Caja de texto
draw_sprite(C_de_texto_VACIO,0,3,220);
draw_set_font(Dialogo);
draw_set_color(c_black);

//NO TOCAR LO DE ARRIBA
//NOMBRE:
draw_text_ext(room_width div 2 -280,264,NPC, 10,1000);

//Imagen Animada
draw_sprite(Icono,all,73,345);


///NOMBRES
if (Especial < 1) {
   draw_text_ext(420, 300 ,"¡Que bonito nombre!",30,550);
}
if (Especial = 1) {
   draw_text_ext(420, 300 ,"Sin lugar a dudas es tu nombre real.",30,550);
}
if (Especial = 2) {
   draw_text_ext(420, 300 ,"Interesante nombre,¡Me recuerda a alguien!",30,550);
}
if (Especial = 3) {
   draw_text_ext(420, 300 ,"Ey,¿Ese nombre no es de alguien muy depresivo?",30,550);
}
if (Especial = 4) {
   draw_text_ext(420, 300 ,"¿Tu conoces a Mila Hasuna?Teneís el mismo nombre.",30,550);
}
if (Especial = 5) {
   draw_text_ext(460, 300 ,"¿Es una moda eso de ponerle a tus descendientes tu propio nombre?.",30,450);
}
if (Especial = 6) {
   draw_text_ext(460, 300 ,"Hum...Me suena muchísimo ese nombre.¿Donde lo habré escuchado antes?",30,550);
}
if (Especial = 7) {
   draw_text_ext(400, 300 ,"Conozco a un loco con ese nombre...",30,550);
}
if (Especial = 8) {
   draw_text_ext(470, 300 ,"Oh...Que nombre tan dulce.Encantado de conocerte Cher.",30,550);
}
if (Especial = 11) {
   draw_text_ext(460, 300 ,"Tu nombre me llena de esperanza,¡Levantemos una copa por la libertad!",30,550);
}



---------------------------Evento Tecla Bajada (A)---------------------
room_goto(Vacio6)


Si alguien me ayudara a encontrar el problema se lo agradecería mucho ya que todo funciona bien menos el room_goto T-T

7
 :GM2:Tengo el siguiente problema, quiero programar algo dentro de un evento step donde me detecte el keyboard_check_pressed la letra A
Las unicas opciones que tengo para elegir teclas son las vk_(la tecla) Sin embargo no hay ninguna para pulsar Teclas como AWSD sin necesidad de hacer un evento de tecla pulsada.

Gracias de antemano por ayudar ^^

8
Buenas, llevo dos semanas atascada intentando programar lo siguiente:
Quiero tener una base en la que esta escrita el nombre del personaje en x coordenada, la imagen del personaje en x coordenada y su texto.
Hasta hay todo bien.
Cuando este haga una pregunta no se como hacer que se modifique lo que diga en el evento draw.
Para que me entendáis mejor:
Quiero hacer un árbol de Preguntas y respuestas que se van dividiendo en caminos.

Esto es lo que tengo:

EVENT CREATE

///MENSAJE

alarm[1] = 140
object_set_visible (obj_mensaje, false);
//mensaje base
Mensaje[0] = "Ey, ¿ Que hace alguien como tú por aquí ?";
Mensaje2[0] = "Pregunta 2";
NPC = "???";
Icono = Icon_Mickael;




///ELECCIONES
alarm[0] = 340
menu_x = x;
menu_y = y;
button_h = 21;

// buttons
button[2] = "-...-";
button[1] = "-¿No deberías saberlo?-";
button[0] = "-No tengo ni idea-";

P_pregunta[0] ="Ey, ¿Que hace alguien como tú por aquí?";

buttons = array_length_1d(button);

menu_index = 0;
last_selected = 0;


------------------------------------------------------------------
PASO


menu_move = keyboard_check_pressed(vk_down) - keyboard_check_pressed(vk_up);

menu_index += menu_move;

if (menu_index < 1) menu_index = buttons - 0;
if (menu_index > buttons - 1) menu_index = 0;

last_selected = menu_index;

----------------------------------------------------
Alarm 0

visible = true

--------------------------------------------
Alarm 1

visible = true

----------------------------------------
DRAW

//Caja de texto

draw_sprite(C_de_texto_VACIO,0,3,395);
draw_set_font(Dialogo);
draw_set_color(c_black);

//Contenido del texto

draw_text_ext(room_width div 2 + 60, 480 ,Mensaje,30,580);

//NO TOCAR LO DE ARRIBA

//NOMBRE:
draw_text_ext(room_width div 7 ,437,NPC, 10,1000);


//Imagen Animada
draw_sprite(Icono,all,73,520);





///ELECCIONES

var i = 0;
draw_set_font(Dialogo);
draw_set_halign(fa_center);
draw_set_color(c_black);

repeat(buttons) {
   draw_set_color(c_black);
   if (menu_index == i) draw_set_color(c_blue);
   draw_text(menu_x, menu_y + button_h * i, button)
   i++;
}


-------------------------------------------------------
PULSACIÓN TECLA A


switch(menu_index) {

   case 2:
      instance_destroy();
      break;
      
   case 1:
   instance_destroy();
      break;
      
   case 0:
   instance_destroy();
      break;
}





Muchas gracias de antemano ^^

Páginas: 1