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 - Jangse

91
Cita de: penumbra en Febrero 01, 2014, 08:48:04 PM
En el objeto Héroe, en la colisión contra las serpientes, agregué una condición extra al IF mientras trasteaba con tu código, quita esa condición extra y listo

if (invencible == false) and (obj_Control.health > 1)

lo cambias a

if (invencible == false)

se me había olvidado   :-[ Lo acabo de probar y funciona, las serpientes me mataron por completo


¡¡¡ POR FIN !!!  :D Ahora esto si funciona al 100%. Muchas gracias de nuevo por tu ayuda.

Yo pensaba que dentro del step se podría poner el código en el orden que quisiéramos. Pero veo que no. Ahora me estudiare bien el código para encontrar su lógica.

Tampoco conocía que esta expresión !health era lo mismo a poner health == 0.

Y un apunte mas...en este código tuyo pones al obj_Control delante de la variable. Pero no es necesario ¿Verdad? Por que son variables del propio GM ¿No?

if (obj_Control.lives >= 1)
{
    if (obj_Control.health < 1)
    {
        obj_Control.lives -= 1;
        obj_Control.health = 100;
    }
}
else   
    obj_Control.health = 0;


Bueno, un saludo. Ya posteare el juego cuando lo tenga acabado. Aunque me queda un mundo para aprender...jejeje.
92
penumbra, muchas gracias por tomarte la molestia de mirar el código. En parte funciona. Pero si te fijas, la energía nunca llega a cero. Me refiero cuando te tocan esas serpientes verdes. Se queda en 1 y ya no descuenta mas vidas. De todas formas, ahora me mirare bien tus correcciones y voy a ver si puedo solucionar eso  :)
93
Cita de: penumbra en Enero 31, 2014, 10:08:11 PM
Lo que puedo decir, según mi insípida experiencia, estos errores son de lógica, no del GM. Digo, hay un 0.01% de Probabilidad de que sea un bug del GM y un 99.99% de que sea un error en el código que has escrito.

Sube tu archivo de GM y seguro damos con la solución

Sí, no hay ningún problema. Si no lo he subido antes, no ha sido por miedo a que alguien copie el juego. De hecho, no deja de ser un borrador o prueba para ir aprendiendo las funciones y programación con GML. Y creo que hacer un juego de laberintos es idóneo para eso.

Es solamente el primer nivel y al pasarlo te enfrentas al boss o jefe de turno. El gráfico del jefe si lo he quitado por que me lo ha dibujado otra persona. En su lugar he puesto un gif de un sprite sheet. Cuando eliminas al jefe, no pasa nada por que no esta hecho el otro nivel.

Seguro que tendrá muchos fallos, al margen del que estoy comentando en este post. Pero el que mas me interesa ahora, es lo de lives y health.

También podéis comprobar que si os quedáis tres veces sin energía, el juego se acaba y en cambio marca una vida.
Y si os quedáis con cero vidas, puede ser que aún marque que tenéis energía. Que es lo que me da rabia.

Quiero, que cuando salga el show_message con game over, abajo marque 0 vidas 0 energía.

TECLADO:

Teclas cursor: Movimientos del personaje.
Barra espaciadora: Disparo.


94
Nada. Voy probando todos los códigos pero ninguno hace lo que busco. Y creo, que se puede deber que el GM no refresca la variable con el nuevo dato que le damos. O que pasa tan rápido que no llega a actualizarla. De hecho, ya comente, que el debugger de GM no actualiza el health a cero cuando la vida llega a cero también.

Es tan sencillo que al mostrar cero vidas, la energía muestre también cero. Osea, si muestra cero vidas y tenemos, por ejemplo 63% de energía, que el juego antes de reiniciar, nos muestre cero vidas y cero energía. Y luego reinicie. Y no haga como hasta ahora, que muestra en pantalla cero vidas y 63% de energía y reinicia. Y lo he probado todo. Creo que hasta me a aumentado la cabeza de tanto pensar... >:( :D
95
Cita de: TLT96 en Enero 29, 2014, 08:45:26 PM
Oye..... En realidad no veo el problema o.O, veamos por ejemplo, este codigo que estaba unos mensajes atras

if healt=0 {if lives!=0 {lives-=1; healt=100}};

Despues viene, este?
show_message('Game Over. Puntos: ' + string(score));

Por que no quitas la energia?
Energia=0

Oseaaa...

if healt=0
{if lives!=0
{lives-=1; healt=100 Energia=0
show_message('Game Over. Puntos: ' + string(score));}
}

Yo lo veo perfecto o.O

Tu código no marcha. Ya que se da el caso que nos quedamos a cero de energía y con dos vidas y el juego se reinicia.

Créeme que estoy probando todos los códigos y no va ninguno. Tengo la duda si el código que pone el resultado en el HUD puede ser un problema:

draw_text(view_xview[0]+32,view_yview[0]+440,'Energia: ' + string(health));

Ya que convierte la variable health en string. No sé si hay algún método para reflejar el valor de health en valor entero y no string. Pero la función draw_text no me lo permite.
96
Creo que GM en los IFs le es igual que utilices el signo = o ==, ya que en ambos caso realiza la comparación. Es decir, un IF no asigna, solo compara.
97
Cita de: DEADOFALL en Enero 28, 2014, 11:37:56 PM
Entiendo y es muy sencillo, el código que te he dado está y funciona bien, el problema es tu código que yo desconocía:

if health=0 {health = 100; lives -= 1};

Pues ese código nunca permite llegar a tener healt=0, así que, cámbialo por éste:

if healt=0 {if lives!=0 {lives-=1; healt=100}};

Este cambio en el código, añadido al código que ya te he cedido, debería funcionar.

Saludos.

Me sabe mal dar tanto la lata con este tema. Pero hasta que no lo solucione no quiero seguir avanzando en el juego. Y eso que es un maze. De los mas sencillos y tal.

He probado tu código pero me pasa igual. Te pongo una captura de pantalla y puedes ver como con cero vidas, queda 88 de energía. Pero el juego se acaba. No me importa que quede 88 de energía. Pero de ser así, que el código lo ponga a cero.

98
Yo creo que escoger solo un genero es limitarse mucho. Es como la comida, la música, el cine, la literatura, etc...No podemos escoger un solo estilo de cine, de libros, de sabores...

Todos los juegos tienen su encanto. Un día me tengo que poner con los RPG. Nunca los he probado y la gente habla maravillas.

Los que no me gusta nada, son esos que hacen como churros estirando las sagas. Es decir, sin ton ni son. O esos, que ocupan un trillon de megas y no sabes si estas viendo una película o jugando un vídeojuego.

Me gusta mucho las mecánicas de los juegos de los años 80/90.
99
Yo soy mas de PC. Sobre todo por que puedes emular ordenadores y consolas de 8 y 16 bytes. Osea, tipo Spectrum, Amiga, NES, SNES, MASTER SYSTEM, MEGADRIVE y tal. Y va muy bien para inspirarse a como se hacían grandes vídeojuegos con maquinas mas limitadas. Consolas he tenido la PSX y la Playstation 2.

También le estoy echando al ojo, a un tipo de consola portátil que puede emular esos sistemas que he citado y jugar a los ANDROID.

Un tipo parecido a esto: http://www.androidblog.es/2013/09/jxd-s7800-una-gran-consola-portatil-con-android/

La Nintendo DS me gustaba mas cuando era de tipo concha. No me gusta ni la 3DS ni la 2DS. Y la PSP, también me gusta. La VITA no la he probado.
100
Primero de todo gracias por el interés DEADOFALL. Pero no me ha funcionado el código.

Mira...en el evento step del personaje (aparte de los movimientos del mismo), tengo dos bloques de código:

if health = 0 {
    health = 100;
    lives -= 1;
    }


De inicio partimos con tres vidas (lives). Y energía (health) con 100 unidades. Cuando la energía llega a cero, nos restan una vida. Este código, entonces, funciona bien.

Pero lo que quería yo, es que al llegar a cero vidas el juego termine. Y si en ese momento, tenemos aún energía, que esta tome el valor de cero y se reinicie el juego. Entonces cree este código a continuación del otro:

if lives = 0 {
    health = 0;
    show_message('Game Over. Puntos: ' + string(score));
    game_restart();
    }


Y ahí tengo el problema...

Que la pantalla muestra (Por ejemplo):

Energía: 45
Vidas: 0

Y el juego se reinicia. Quiero que si tengo aún energía y cero vidas, que la energía se disminuya a cero. Y el juego comience.

El código en el step lo tengo así:

if health = 0 {
    health = 100;
    lives -= 1;
    }

   
if lives = 0 {
    health = 0; // ESTE VALOR DE CERO NUNCA SE LLEGA A MOSTRAR AUN CON CERO VIDAS. AHÍ ESTA EL PROBLEMA...
    show_message('Game Over. Puntos: ' + string(score));
    game_restart();
    }
101
Muchas gracias a los dos. Tomo buena nota  ;)
102
Ok. Ya queda mas claro. Soy consciente que para aprender uno debe errar primero. Y ese me pasará muchas veces con el código. El problema surge, que se puede dar el caso, que nuestro código este bien. Pero que al aplicarlo en un evento que no corresponda, igual tiene un resultado que no es el deseado. De esa forma nos vemos a veces chequeando dos cosas, el código y los eventos. Saludos!
103
Hola de nuevo!

Tanto leyendo el manual o post del foro, recomiendan no sobrecargar el evento Step. Por el tema que satura la velocidad del juego. Pero yo, por mas que miro los otros eventos, solo veo este sitio para poner el grueso de nuestro código GML.

Por que claro, en el evento Create se ponen cuatro cosas (Creación de variables o algún movimiento mecánico del enemigo) . Por que es un evento que solo se repite una vez. El Alarm, es eso alarmas y tal. Es decir, no podemos liarnos a meterles Whiles, ifs y demás. Y el Draw, pues eso para dibujar cosas en pantalla y tal. Los otros eventos ya son de tipo teclas, ratón algunos modificadores de rooms.

Y claro, normalmente, un vídeo juego lleva mucho código. Esta claro que este lo repartimos en distintos Eventos. Pero el grueso de ese código solo veo una ubicación y es el Step.

Igual estoy diciendo un sacrilegio y debo ordenar conceptos. Pero cuando veo listados enormes de GML esta claro que no van a ir en un evento Alarm o Draw, digo yo ¿No...?

Alguien me comentó en el foro, que no recomendaban usar nuestros patrones de movimiento en el Step. Pero he podido ver a gente que domina bastante el tema (Por ejemplo Jucarave) que normalmente los pone en el Step.

Por que si no, sería interesante hacer una lista de que poner y no poner en Step. Si no, queda todo muy ambiguo. Y más para los que aprendemos y pensamos que no hacemos algo correcto.
104
Cita de: Daz en Enero 19, 2014, 03:16:20 PM
Preguntas y respuestas: qué es y cómo funciona - Leer antes de postear

Jangse, recuerda colocar el icono de la versión de GM que usas.

Oops! Se me había olvidado. Ya esta...
105
Pues eso...

Tengo realizado el típico código para esto. Es decir, tenemos 3 vidas y 100% de energía. Dependiendo el tipo de enemigo, uno resta energía y otro nos quita una vida por colisión.

Cuando la energía llega a cero nos restan una vida. Hasta que tenemos cero vidas y cero energía. Entonces mi código funciona bien. Pero el problema es este:

- Se da el caso que colisionamos con el enemigo que nos resta una vida con solo tocarnos. Entonces, se muestra cero vidas y en muchos casos 100% de energía o menos. Y claro, me gustaría que al llegar a cero vidas nos mostrara como un contador que fuera descendiendo la energía de golpe y acabara el juego.

No tiene mucho sentido tener cero vidas y con la barra de energía a tope ¿No?

Tengo este código en event Step:

if  lives := 0 then
    begin
        health := 0;
        show_message('Game Over. Puntos: ' + string(score));
        game_restart();
    end;



En el event Draw, esta el código que muestra los valores de Vida, Energía, Puntos, etc...

draw_text(view_xview[0]+32,view_yview[0]+440,'Energia: ' + string(health));
draw_text(view_xview[0]+32,view_yview[0]+460,'Vidas: ' + string(lives));



Tampoco entiendo por que la función draw_text tiene como argumento final string ¿No debería ser una variable numérica?