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

166
Preguntas y respuestas / Re:Tiempo en Game Maker
Noviembre 24, 2017, 07:25:42 PM
Cita de: Loncha en Noviembre 24, 2017, 07:06:23 PM
¿va a coger la hora del dispositivo en el que se está ejecutando la aplicación?
Sí. Si quieres mantener una hora global tendrás que usar algún servidor o API de terceros.

Cita de: Loncha en Noviembre 24, 2017, 07:06:23 PM
¿Algún consejo para hacer que siga funcionando con la aplicación cerrada? Yo había pensado en por ejemplo, que cuando cojas la moneda se guarde en una variable la hora exacta a la que la has cogido, y que haya un script que compruebe con la hora actual si ya han pasado 24 horas desde la última vez o algo así.
Ése es un buen método. Cuando el contador inicie, guarda la hora actual en un archivo *.ini, y cada que abras la aplicación, compares la hora guardada con la actual para saber si ya han pasado o no las 24hrs.
167
[gml]
repeat(irandom_range(10,15))
    {
        instance_create(x+irandom_range(0,480/32)*32,y+irandom_range(0,256/32)*32,obj_muro)
    }
[/gml]
168
[gml]
var menor = min( dn, ds, dkt, dt, jg, dd );
var objetos;
objetos[dn] = obj_neto;
objetos[dt] = obj_swat;
objetos[dkt] = obj_kimtorreta;
//...
objetos[jg] = obj_juggernaut;


obj_v = objetos[menor];
[/gml]
170
Preguntas y respuestas / Re:Problema con Ini Online
Noviembre 12, 2017, 07:12:32 PM
Revisa si desde tu navegador puedes acceder normalmente al archivo en el servidor.

EDIT: Iba a escribir esto antes de tu último mensaje, pero igual lo publico :v.

Parece ser que GM no es capaz de obtener el contenido del archivo news.txt. ¿El archivo está en línea, la ruta está correcta, el servidor no está saturado?

Además, creo que puedes resumir todo ese código con una función, para evitar errores.
[gml]
///Evento create
download = http_get_file("https://xxxxxxx.com/news.txt", "news_files.txt");
[/gml]
[gml]
///Evento HTTP
if(async_load[? "id"] == download)
{
    if(async_load[? "status"] < 0) //Si ha ocurrido un error
    {
       show_message("Error descargando el archivo");
    }
}
[/gml]
171
EDIT: Ahora muestra el código de movimiento del enemigo, para poder buscar  una manera de predecir su movimiento.
172
Preguntas y respuestas / Re:Como usar !
Noviembre 11, 2017, 11:42:23 PM
El ! es la negación booleana, equivalente a not. Te explico:

Partamos de que para este operador, sólo existen dos posibles valores: verdadero y falso. Estos obviamente son las constantes true y false del lenguaje.

Sin embargo, los demás tipos de datos (enteros y cadenas) también son tomados en cuenta como booleanos, "transformándolos" un poquito: Para GM, cualquier número real mayor o igual a 0.5 es true, y cualquier menor a 0.5 es false. A su vez, las cadenas de texto no pueden negarse ni utilizarse como valor booleano; de intentar hacerse, se producirá un error.

Además, true y false equivalen respectivamente a 1 y 0.




Ahora sí, el operador. Es muy simple: cualquier valor que tome como true, lo convertirá en false, y viceversa.



[gml]
a = true;
b = !a; //b = false

a = 2; //a = true
b = !a; //b = false

c = !!7.5; //c=true
[/gml]

[gml]
a = true;
b = not a; //b = false

a = 2; //a = true
b = not a; //b = false

c = not not 7.5; //c=true
[/gml]
173
Preguntas y respuestas / Re:Objeto dentro de objeto
Noviembre 11, 2017, 03:47:01 PM
Hay varias cosas que puedes optimizar, a ver si el funcionamiento mejora.

Primero, puedes ahorrarte el uso de la variable fue; para eso Game Maker tiene las alarmas.
El evento Create está bien así como lo tienes, eliminando la variable mencionada.
[gml]
hspeed = -3;
velo = 0;
vidas = 8;
[/gml]

Ahora, en el evento Step no necesitas usar la variable lado; puedes comprobar directamente image_xscale.
Unos errores (estos sí errores) es que utilizas la identificación del objeto enemigo como tal, y no de la instancia que actúa. Por ejemplo, estableces la escala de la bala desde su evento Create, utilizando el objeto enemigo como tal. Esto revisará dentro de la primera instancia del enemigo en la sala, no dentro del enemigo que ha disparado. El otro problema es que dentro del step del mismo enemigo usas enemigo.x; sucede lo mismo que te dije antes.

Lo solucionas así:
[gml]
if(!alarm[0]) //Si la alarma está desactivada (como por defecto lo está)
{
   var pos = -70;
   if(image_xscale <> 1)
      pos = 43;

   var bala = instance_create(x + pos, y - 12, fuego); //Como estás en el step del enemigo,
                                          //sólo usa x e y.

   bala.image_xscale = image_xscale; //La escala de la bala será la del objeto que la creó.

   alarm[0] = 50; //Activas la alarma.
   //Las alarmas automáticamente van en cuenta regresiva.
}
[/gml]

Y por último, en el evento Alarm 0, pones un comentario, sólo para que la alarma se ejecute:
[gml]
///Evento alarm 0. Aquí no es necesario poner nada importante. Sólo
//se necesita texto en el código para que se ejecute la alarma.
[/gml]
174
Preguntas y respuestas / Re:Pregunta de animacion
Noviembre 10, 2017, 11:12:04 PM
Ah, que usas GM8. Lo siento.
[gml]
var near;
near = instance_nearest(x, y, objEnemigo); //Obtener la instancia más cercana
if(distance_to_object(near) < 223) //Si el  enemigo más cercano está a menos de 223px del jugador
    image_speed = 1; //Iniciar animación
else //Si no hay enemigos cerca
    image_speed = 0; //Detener animación
[/gml]
175
Preguntas y respuestas / Re:Pregunta de animacion
Noviembre 10, 2017, 11:03:13 PM
[gml]
var near = instance_nearest(x, y, objEnemigo); //Obtener la instancia más cercana
if(distance_to_object(near) < 223) //Si el  enemigo más cercano está a menos de 223px del jugador
    image_speed = 1; //Iniciar animación
else //Si no hay enemigos cerca
    image_speed = 0; //Detener animación
[/gml]
176
Preguntas y respuestas / Re:PROBLEMA DE PLANTEAMIENTO
Noviembre 06, 2017, 10:07:18 PM
Aún está incompleto, pero puedes leer esta información en el repositorio del manual en traducción:
https://github.com/Glioce/Documentacion_GMS/blob/master/Referencia/Estructuras_de_datos/index.html
177
Preguntas y respuestas / Re:PROBLEMA DE PLANTEAMIENTO
Noviembre 06, 2017, 08:12:25 PM
Primero, imaginemos que el juego está organizado así:
La caja es sólo un objeto, y en cada sala habrán varias instancias de dicho objeto. Además, la cantidad de cajas es fija (no cambia durante el juego).

Tomando en cuenta lo anterior, usa mapas y listas, así:
[gml]
/*
En algún evento o bloque de código que se ejecute
antes de todas las salas donde habrán cajas.

Es decir, este código debería ejecutarse una sola vez
en todo el juego, al menos mientras se desee mantener
las posiciones de las cajas
*/

global.pos_cajas = ds_map_create(); //Un solo mapa de ámbito global
[/gml]
[gml]
/*
El evento create de algún objeto que se ejecute
UNA SOLA vez por cada sala donde estarán las cajas.

Este objeto debe estár después de todas las cajas en el
instance order de la habitación actual.

================
Otra opción es usar directamente el Creation Code de la
habitación, que se ejecuta después de todas las instancias
*/

//Si aún no ha sido almacenada la posición de las cajas en la habitación actual
if(!ds_exists(global.pos_cajas[? room], ds_type_list))
{
    global.pos_cajas[? room] = ds_list_create(); //En la habitación actual, crear una lista

    var pos; //Una variable temporal para almacenar la posición de cada instancia
    with(obj_caja) //Recorrer todas las instancias de obj_caja
    {
        pos[0] = x; //Almacenar la posición horizontal de la caja
        pos[1] = y; //Almacenar la posición vertical de la caja
        ds_list_add(global.pos_cajas[? room], pos); //Guardar la posición en la lista
    }
}
//Si ya hay posiciones almacenadas,
else
{
    var ind = 0; //índice de la lista por iteración de instancia
    var pos; //Una variable temporal para almacenar la posición de cada instancia

    with(obj_caja)
    {
        pos = ds_list_find_value(global.pos_cajas[? room], ind++); //Obtener posición guardada
        x = pos[0]; //Establecer posición horizontal
        y = pos[1]; //Establecer posición vertical
    }
}
[/gml]
Haría falta pulir varias cosas, y puede tener errores (no he probado el código), pero te hace una idea.
178
Preguntas y respuestas / Re:Se ahorra espacio con scripts?
Noviembre 06, 2017, 07:53:29 PM
Con lo que dices, se ahorraría peso en el disco, pero aumentaría considerablemente el gasto de procesador y RAM.
179
Cita de: Naitsabes0 en Noviembre 04, 2017, 04:35:20 PM
Cuando dices "Del GM: Studio 1.4, no" me das a entender que esta no la tiene de forma oficial, pero que otras versiones tal vez la puedan tener ¿que sabes del tema?
Que yo sepa no, no hay ninguna versión pirata de GM:S1.4 en español.

Aún así, aunque la hubiera sería mejor utilizar una versión legal, por más de que estuviera en inglés.
180
Mientras en GM no des la orden de borrar o sobre-escribir dichos archivos, no deberían modificarse en absoluto.