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.


Mensajes - NiuWeb

Páginas: 1 2 3 ... 8
1
Preguntas y respuestas / Re:Como se pasa de json_decode a tener 2 arrays
« en: Septiembre 10, 2019, 04:31:28 am »
Según EL MANUAL, la función json_decode() devuelve un mapa con una única entrada: "default".

Dentro de dicha entrada se almacena toda la información. Si el JSON es un arreglo (lo sabes porque está escrito de la forma [a, b, c, ...]), entonces la función convierte los datos en una lista; y si el JSON es un objeto (lo sabes porque está escrito de la forma {a:b, c:d, ...}), entonces la fución convierte los datos en otro mapa.



En el caso de las consultas SQL, el JSON suele ser algo así:
Código: [Seleccionar]
[
    {
        "nick":"keponem",
        "sc":"255"
    },
    {
        "nick":"olakase",
        "sc":"78"
    },
    {
        "nick":"jejeje",
        "sc":"15"
    },
    {
        "nick":"jejejeee",
        "sc":"0"
    },
    {
        "nick":"tytyty",
        "sc":"0"
    },
    {
        "nick":"Sobako",
        "sc":"0"
    }
]

Como puedes apreciar, se trata de un arreglo "grandote" que contiene un objeto "chiquito" en cada índice, así que la función lo convertiría a algo así:



Por tanto, si quieres recorrer todos los mapas"chiquitos" que están en  la lista "grandota", entonces primero debes acceder al mapa "grandotote":
var res = json_decode(result); //obtener mapa grandotote
var dat = res[? "default"]; //Acceder a la llave "default"  del mapa grandotote

//En dat ahora se ha guardado la lista grandota, así que ahora vamos a recorrerla

var nicktable, sctable;
var obj;
for(var i = 0; i < ds_list_size(dat); i++) {
    obj = dat[| i]; //acceder al mapa chiquito de la lista grandota ubicado en la posición i
    //guardar cada propiedad en su respectivo arreglo
    nicktable[i] = obj[? 'nick'];
    sctable[i] = obj[? 'sc'];
}

Todo se resume en leer EL MANUAL, como te dije en Discord.

PD: Debes colocar en el post el ícono de la versión de GM que estás usando.
Los siguientes usuarios dieron las gracias a este tema: Johann

2
Preguntas y respuestas / Re:Salto de línea al usar file_text_write_string
« en: Septiembre 09, 2019, 12:05:19 am »
He encontrado una solución provisional.
Este es el código cuando cargue del fichero el nombre de las unidades:
nombre=string_replace_all(file_text_read_string(global.j)," ","")
Esto elimina de la cadena el espacio (" ") que aparece al principio.
Es una chapuza, pero he hecho unas pocas pruebas y ya no me aparece el error, por lo que con esto se ha solucionado mi problema.
También podrías hacer algo así:
nombre = string_delete( file_text_read_string(global.j), 1, 1 );
Para eliminar solamente el primer caracter de la cadena.
Los siguientes usuarios dieron las gracias a este tema: Marth

3
Preguntas y respuestas / Re:Salto de línea al usar file_text_write_string
« en: Septiembre 08, 2019, 09:50:13 pm »
¿Cómo cargas los datos? De primera mano se me ocurre que al momento de cargar la variable nombre estás trayendo también el espacio que está antes, y que es por eso que se van acumulando por cada guardado.
Los siguientes usuarios dieron las gracias a este tema: Marth

4
Preguntas y respuestas / Re:Multiples colores en una sola string
« en: Junio 27, 2019, 04:25:36 pm »
Puedes usar esta extensión:
https://marketplace.yoyogames.com/assets/6533/atex
Los siguientes usuarios dieron las gracias a este tema: FernandoNavarro

5
Preguntas y respuestas / Re:Limitacion en modo de movimiento diagonal
« en: Mayo 25, 2019, 08:10:00 pm »
Eso sucede porque cuando el movimiento es diagonal, las componentes de movimiento vertical y horizontal valen (ambas) 4, que al sumarse dan como resultado un número mayor (4√2).

Para corregir esto, deberías hacer lo siguiente:
///EVENTO STEP

//Primero, consigues las componentes del movimiento como lo haces normalmente:
var hmove = keyboard_check(vk_right) - keyboard_check(vk_left);
var vmove = keyboard_check(vk_down)  - keyboard_check(vk_up);

//Segundo, calculas el ángulo que forman ambas componentes entre sí
var angle = point_direction(0, 0, hmove, vmove);

//Tercero, multiplicas el valor de la velocidad por las componentes del ángulo.
var hvel = abs(hmove) * vel * dcos(angle);
var vvel = abs(vmove) * vel * dsin(angle);
//(se multiplica también por "abs(hmove)" para evitar que haya movimiento cuando no se está presionando la tecla)

//Cuarto, mueves el objeto
x += hvel;
y -= vvel;
Los siguientes usuarios dieron las gracias a este tema: Johann, Marcusmaniacus

6
Preguntas y respuestas / Re:Como se podría crear un valor aleatorio?
« en: Mayo 02, 2019, 02:28:34 am »
Usa las funciones de aleatoriedad de GM:
http://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/index.html
Sección "Random functions".

PD: Debes colocar en el post el ícono de la versión de GM que estás utilizando.
Los siguientes usuarios dieron las gracias a este tema: FourFox

7
if keyboard_check_pressed( ord('A') ) {
   //bla bla bla...
}
Los siguientes usuarios dieron las gracias a este tema: Cher3

8
Preguntas y respuestas / Re:Problema con las funciones random de gml
« en: Abril 13, 2019, 02:38:25 am »
Te hace falta utilizar la función maravilla del GM xd.

http://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/maths/real%20valued%20functions/randomise.html

Solo tienes que usarla una vez, al inicio del juego (antes de cualquier función de aleatoriedad, claramente).
Los siguientes usuarios dieron las gracias a este tema: visionjav

9
Como dice el título, la pregunta es como referirse a un grupo de instancias(de un objeto) que toman un determinado rango o numero en una determinada variable.
Gracias.
with objeto {
    if variable == 2 {
        //aquí haces cualquier cosa con todas las instancias de 'objeto' en las que la variable 'variable' valga 2.
    }
}
PD: Debes colocar en el post el ícono de la versión de GM que estás utilizando.
Los siguientes usuarios dieron las gracias a este tema: :StonerStanley:

10
¿Qué dispositivos estás utilizando para probar el juego?
También puedes ejecutar en el dispositivo antes de compilar, para poder ver la información del debugger.
Los siguientes usuarios dieron las gracias a este tema: nonoroman

11
Preguntas y respuestas / Re:¿como automatizar código?
« en: Diciembre 14, 2018, 03:14:54 am »
Una manera fácil sería utilizar mapas de datos.
///EN ALGÚN EVENTO QUE EJECUTES PRIMERO
globalvar datos;
datos = ds_map_create();
///DONDE QUIERAS ASIGNAR LOS DATOS
grupo[1] = 'simbolos';
grupo[2] = 'fracciones';
for(var i = 1; i <= 2; i += 1) {
    datos[? grupo[i]] = x;
}
Y para leer la información harías esto:
show_message(  datos[? 'simbolos']   );

Más información:
http://docs.yoyogames.com/source/dadiospice/002_reference/data%20structures/ds%20maps/index.html
Los siguientes usuarios dieron las gracias a este tema: dixon2010

12
Preguntas y respuestas / Re:Execute_program(). Para game Maker studio 1
« en: Diciembre 10, 2018, 11:25:59 pm »
De manera nativa es imposible hacerlo; debes utilizar un complemento externo.

Mira éste:
http://marketplace.yoyogames.com/assets/575/execute-shell
Los siguientes usuarios dieron las gracias a este tema: kostra

13
Preguntas y respuestas / Re:Script que funciona a veces
« en: Noviembre 30, 2018, 06:44:03 pm »
Intenta modificar el script utilizando colas de prioridad, a ver si hay alguna mejora.
///Algún evento que se ejecute una sola vez
globalvar sorted_list;
sorted_list = ds_priority_create();
///e_sort(list)
var N = ds_list_size(argument0);
var i, inst;

//Primer ciclo para añadir los elementos a la cola
for(i = 0; i < N; i++) {
    inst = argument0[| i];
    ds_priority_add( sorted_list, inst, inst.valor);
}
ds_list_clear(argument0);

//Segundo ciclo para obtenerlos organizados
for(i = 0; i < N; i++) {
    inst = ds_priority_delete_min(sorted_list);
    ds_list_add(argument0, inst);
}

Si sigue habiendo errores, sería bueno que imprimeras el contenido de las estructuras de datos (json_encode()) para ver si hay problemas con la información.

También ayudaría ver el contenido del script sintesis2().
Los siguientes usuarios dieron las gracias a este tema: Johann

14
Preguntas y respuestas / Re:error de sentencia While en Evento Step
« en: Noviembre 27, 2018, 09:29:17 pm »
Recuerda colocar en tu post el ícono de la versión de GM que estés utilizando.
Los siguientes usuarios dieron las gracias a este tema: Johann

15
Si el arreglo unidimensional no tiene la cantidad de elementos exacta para crear un arreglo bidimensional completo, es decir, que la ultima fila no quede completa, ¿Como haría para recorrerlos con doble ciclo for y que al final no muera pq no hay mas elementos?

Ej: Supongamos que entra un array de 32 elementos y lo quiero como una matriz de 6*6.
Si quieres convertir un arreglo unidimensional a uno bidimensional usarías el primer script, y realmente no tendrías ningún problema en el caso que mencionas, puesto que el ciclo solo recorre los elementos del 1d y les asigna coordenadas 2d, así que si quedan faltando espacios simplemente se omiten, quedan "vacíos".
Los siguientes usuarios dieron las gracias a este tema: dixon2010

Páginas: 1 2 3 ... 8