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

751
Preguntas y respuestas / Re:Teclado en Android
Febrero 24, 2015, 11:18:02 PM
No sé por qué medio adquiriste la licencia de YoYo. Yo usé paypal, y al momento de hacer la transacción, ahí en la página aparecía la licencia, como es de suponer, esta información es importante, por lo que conviene respaldar la licencia en algún archivo de texto o escribirla en un lugaar seguro.

En esta página te ayudan a recuperar la licencia si es que la extraviaste, tienes que introducir tu email que registraste al comprar la licencia y YoYo te la envia a esa dirección.

https://www.yoyogames.com/support
En donde dice "Licence Recovery"
753
Preguntas y respuestas / Re:Teclado en Android
Febrero 24, 2015, 10:21:19 PM
Tienes que hacer tu propio teclado (usando uno o varios objetos) con las funciones propias de GML. GMS no usa ni llama al teclado nativo de los dispositivos android en los juegos (hasta donde sé, no sé si recientemente esto haya cambiado).

http://gmc.yoyogames.com/index.php?showtopic=553495

Si usar el teclado nativo es tan imperativo, existe una extensión en el Marketplace:
https://marketplace.yoyogames.com/assets/299/android-keyboard
754
DRAW, al igual que STEP, es un evento que se ejecuta recurrentemente. La última línea
instance_create(127,60,segundos);
crea una instancia en cada paso, así que si tu juego tiene una velocidad de room de 30, en 5 segundos después de que el botón se destruye, se habrán creado 150 nuevas instancias del objeto "segundos", más lo que se acumule mientras el tiempo siga corriendo.
755
¿y cuál sería el criterio de búsqueda? Por que supongo que no quieres que "entre" a cualquiera, sino a uno en específico. Sería más fácil ayudarte si das mas detalles, como qué es lo que quieres hacer al entrar a determinado objeto.
756
Se pueden  usar funciones, como instance_position(), que devuelve el id de la instancia basándose en un punto. "Si en la posición xxx, yyy existe una instancia del tipo zzz, haz tal cosa"
[gml]
var inst = instance_position(x, y, obj_padre_instancias)
if (inst != noone)
{
     //Ejecutar accion
}[/gml]
Si es un tablero, lo mejor sería meter el código de arriba en un juego de ciclos for anidados para recorrer el tablero tanto horizontal como verticalmente. El recorrido es igual al ejemplo del tablero bingo.

Otra opción es que al momento de crear las instancias, su posición se guarde en listas o mapas y luego usar esas listas/mapas para consultar las posiciones, si un objeto se elimina, se borra su posición de la lista/mapa, o al reiniciar partidas, limpiar la lista/mapa

Si sólo te interesa la posición Y, entonces se puede hacer[gml]
with(ob_padre_objetos)
{
     if (y == algo) //      no sé que criterio tengas en mente para comparar los valores de Y
     {
            //ejecutar acción
     }   
}[/gml]
En el código que pones, no le veo sentido a que haya una instrucción doble "with (objects) with (objects)"

Lo que hace ese código es que a todas las instancias del tipo "objetos" les limpia la variable "marked" (la iguala a 0). Luego, las instancias del tipo objects cuyo valor de (y) sea igual al (y) del objeto que ejecuta el código, se cambian a marked= 1. Luego la variable row se hace cero, y por último, row se usa como contador de cuántas instancias se marcaron (marked = 1).
757
No sé a que se deba el fallo, no me parece que el ciclo sea el problema. Sólo atino a pensar que hay algo malo en las imágenes, como dice clamud, o en la carga. Pareciera como si una vez que la función sprite_add falla, las siguientes ocasiones también fallara irremediablemente. Se le puede imponer un límite al ciclo while, o caabiar de ciclo a un for o repeat, para que sólo lo intente pocas veces.

Hay alternativas, desde luego, más allá de usar ciclos,  pero lo más importante es saber por qué la carga falla, o cuáles son las condiciones que hacen fallar a GM. Si el archivo existe y la ruta es correcta, no debería fallar NUNCA. ¿Qué editor usas para crear los fondos PNG?Yo probaría a usar un editor distinto para guardar las imágenes en formato PNG. Quizás el editor esté guardando el PNG con una opción que provoca el fallo. ¿Te has fijado si falla con una imagen en particular o si falla con las tres? También probaría a cambiar de formato y ver si con otro hay o no falla.
758
Preguntas y respuestas / Re:Boton back android
Febrero 20, 2015, 02:27:16 AM
El código me genera dudas, ya sea que se use keyboard_key_press o keyboard_check_pressed. No lo he probado, pero así viéndolo me da la impresión que sería MUY DIFICIL (o quizás imposible) hacer que se cumpla la condición más interna, porque se necesitaría que AL MISMO TIEMPO (EN EL MISMO STEP) se oprimiera el botón trasero y que se presionara YES a la pregunta de si salir o no.

Quizás show_question("¿EXIT?"), una vez hecho click en YES, mantenga el estado "true", pero la pulsación del botón trasero sólo se va a registrar en un único STEP, al siguiente STEP keyboard_check_pressed vuelve a ser false.


759
Preguntas y respuestas / Re:Enemigos Respawn Plataforma
Febrero 20, 2015, 02:16:30 AM
Creo que es más conveniente que haya un objeto controlador que se encargue de generar los enemigos a que el objeto enemigo genere más enemigos y se destruya a si mismo. También, estas condiciones:

if ((xstart-player.x)<=-230 or (xstart-player.x)>=230) o if ((x-player.x)<=-230 or (x-player.x)>=230)

Lucen sospechosas, por ejemplo, la segunda hace que dead = true basándose en la posición del jugador y del mismo enemigo (no entiendo por qué). También, es posible reescribirla como (if abs(x - player.x) >= 230), ahorrándote un OR y una condición.


760
Se podrían idear unos cuantos métodos para cargar las imágenes en caso de error. Lo que me parece mejor es usar un ciclo. También se podría con alarmas, pero eso implica esperar más tiempo, aunque lo ideal sería conocer el motivo exacto por el cual a veces una imagen se carga y a veces no lo hace.

Cita de: ReloadedK en Febrero 19, 2015, 10:04:58 PM
PD: Acuérdense que estoy cargando fondos .png de 800*600. Esta es la razón por la que a veces no se carga y se queda en "global.spritee1=-1".
¿La razón es que son de 800X600? No entiendo a qué te refieres

en ROOM START
[gml]
x=0
y=0
global.spritee1 = -1
               
while (global.spritee1 == -1)    //Mientras no se cargue correctamente...
{
     //Story
     if (room)= rStory1{
         global.spritee1=sprite_add(working_directory+"/Backgrounds/InsideFront/01.png",1,false,false,0,0)}
     //Tutorial
     if (room)= tutorial1{
         global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/01.png",1,false,false,0,0)}
     if (room)= tutorial2{
         global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/02.png",1,false,false,0,0)}
     if (room)= tutorial3{
         global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/03.png",1,false,false,0,0)}
}
sprite_index=global.spritee1[/gml]

Eso haría que el ciclo se ejecutara recursivamente hasta que por fin se cargara la imagen en cuestión, creo.
761
Preguntas y respuestas / Re:Ayuda con Draw Gui y Sprite
Febrero 19, 2015, 09:51:57 PM
En lugar de usar 4 ifs, se puede usar un ciclo for para dibujar los corazones, según el valor de la energía. Yo también pienso que lo que puede estar pasando es que la resta de energía la estás haciendo en un evento de colisión, y mientras haya colisión, la variable energía va a disminuír una y otra vez en cada paso.
762
O usar persistencia de objetos
763
Preguntas y respuestas / Re:JOYSTICK VIRTUAL ANDROID
Febrero 19, 2015, 06:27:41 AM
GMS incluye no uno, sino 4 TUTORIALES explicando la funcionalidad touch: (Virtual Keys, Swipes, pads analógicos en pantalla y pinch and zoom).  La "lógica touch" es la misma, no importa el género, así que los conceptos sirven para cualquier proyecto.


764
Preguntas y respuestas / Re:¿LLuvia random?
Febrero 17, 2015, 10:59:42 PM
Acabo de probar la función. Mientras esté en CREATE, no va a funcionar como quieres, porque sólo se ejecuta una vez, al principio

CREATE[gml]
llover = 1
alarm[0] = room_speed * irandom_range(5, 15)[/gml]

ALARM[0]
[gml]
randomize()
var azar = irandom_range(1, 3)
if (azar == 2)
    llover = 1
else
    llover = 0
   
alarm[0] = room_speed * irandom_range(5, 15)
[/gml]

STEP
[gml]
if (llover)
    effect_create_below(ef_rain, x, y, 0, c_aqua);
[/gml]

Eso hace que por momentos llueva y por momentos no llueva. El ejemplo es sencillo, se puede modificar para controlar la duración de la lluvia y la duración de la "no lluvia" (espera entre lluvias)

Por cierto, no vuelvo a usar este efecto, a mi me mareó @_@ (quizás porque no había nada en la habitación, sólo el efecto)
765
Preguntas y respuestas / Re:¿LLuvia random?
Febrero 17, 2015, 10:03:39 PM
Creo que el error es que el código está en CREATE. Mueve el código a STEP, supongo que así se ejecutaría de vez en cuando (quizás también haya que modificar la probabilidad)