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 ... 7
1
¿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

2
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

3
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

4
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

5
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

6
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

7
Preguntas y respuestas / Re:Activar una alarma
« en: Noviembre 25, 2018, 08:23:22 pm »
///ASÍ
alarm[0] = room_speed * 1; //Activar la alarma 0 en un segundo
Recuerda colocar el ícono correspondiente a la versión de Game Maker que estés usando.
Los siguientes usuarios dieron las gracias a este tema: GGrayonar

8
Tienes que utilizar la plantilla de juegos correspondiente en esta sección.
http://www.comunidadgm.org/index.php?topic=17.0
Los siguientes usuarios dieron las gracias a este tema: LavendreTreeGame

9
Listo. Supongo que que lo que quieres hacer es aumentar el dinero cada segundo y no cada que se presione la tecla. Siendo así, puedes en efecto utilizar alarmas:
///EVENTO CREATE
dinero = 0;
alarm[0] = room_speed * 1; //Activar la alarma en un segundo
///EVENTO ALARMA 0
alarm[0] = room_speed * 1; //Reactivar la alarma en un segundo
dinero = dinero + 1; //Sumarle 1 a dinero.
Los siguientes usuarios dieron las gracias a este tema: Jnpc15

10
Preguntas y respuestas / Re:Instancias se superponen entre si.
« en: Noviembre 22, 2018, 05:06:57 am »
(nadie ha visto nada xd)
EDIT:
A ver, puedes intentar de esta forma:

1. Crea al objeto aleatoriamente en cualquier lugar, no va a haber una comprobación de disponibilidad inicial.
///En el timeline
var _x, _y;
_x = irandom(room_width);
_y = irandom(room_height);

instance_create(_x, _y, objeto);

2. Será dentro del código del mismo objeto en donde comprobaremos si el lugar está disponible
///Evento create del objeto
var n = 0; //Un contador para limitar la cantidad de "intentos" por ponerse en una zona libre.
while not place_empty(x, y) {
    x = irandom(room_width);
    y = irandom(room_height);
    n ++;
 
    if n > 20 { //Así evitamos que se bloquee el juego si el objeto no encuentra espacio disponible
        instance_destroy();
        exit;
    }
}
Los siguientes usuarios dieron las gracias a este tema: Alfacoy

11
Preguntas y respuestas / Re:Instancias se superponen entre si.
« en: Noviembre 22, 2018, 04:18:26 am »
Las funciones place_*() comprueban la disponibilidad de un lugar basándose en comprobar si la máscara de colisión del objeto que las ejecuta choca con la máscara de alguna instancia. En tu caso, utilizas una timeline que no tiene máscara de colisión y, por tanto, dichas funciones no van a trabajar correctamente.

Una solución simple podría ser utilizar position_empty() o position_meeting() que no utilizan la máscara de colisión del objeto que las ejecuta, sino que comprueban un choque entre un punto concreto (dado por coordenadas) y la máscara de las otras instancias.
Los siguientes usuarios dieron las gracias a este tema: Alfacoy

12
Preguntas y respuestas / Re:Alguien me explica el sistema de archivos?
« en: Noviembre 21, 2018, 04:46:53 am »
No sé cómo es en GMS2, pero me imagino que no ha de ser muy diferente al Studio 1.

Resulta que GM guarda todos los archivos en un directorio "confinado" (sandbox) para proteger a los usuarios de nuestros juegos. Ese directorio es la ruta almacenada en working_directory, que normalmente es %appdata%»tuJuego. Básicamente, todos los archivos que guardes y leas están ahí, y de ahí raramente pueden salir.

Cuando dicen que se usa en raras ocasiones, es porque no es necesario utilizar la variable working_directory para guardar, puesto que dicha ruta siempre será el directorio principal.

Otra cosa, el manual hace referencia a un tal Game Bundle, que es la ruta del ejecutable de tu juego. Puedes leer archivos en esa ubicación, pero no modificarlos, cualquier intento por hacerlo sólo creará una copia del archivo con los cambios en working_directory.
Los siguientes usuarios dieron las gracias a este tema: kostra

13
Preguntas y respuestas / Re:Concatenacion de Textos y Variables (GMS2)
« en: Noviembre 19, 2018, 12:14:14 am »
El error se debe a que en GM no puedes concatenar un número con una cadena de texto. Tienes que convertir los números a cadena antes de poderlos operar con texto.

No estoy en PC así que no te puedo dejar enlace, pero puedes solucionar el problema utilizando la función string().
Los siguientes usuarios dieron las gracias a este tema: Alfacoy

14
Preguntas y respuestas / Re:Boton en Draw_GUI
« en: Noviembre 18, 2018, 02:29:14 am »
Solución fácil:
///COORDENADAS EN PANTALLA (NO EN HABITACIÓN) DEL MAUS
var mouse_display_x = mouse_x - view_xview[0];
var mouse_display_y = mouse_y - view_yview[0];

Solución menos fácil: Usa teclas virtuales.
http://docs.yoyogames.com/source/dadiospice/002_reference/mouse,%20keyboard%20and%20other%20controls/virtual%20keys/index.html
Los siguientes usuarios dieron las gracias a este tema: Goganpis

15
Preguntas y respuestas / Re:determinar cuadrante segun posicion del mouse
« en: Noviembre 18, 2018, 02:26:01 am »
No necesitas utilizar ciclos anidados. Basta con un cálculo sencillo para saber en qué celda está el mouse:
///EVENTO MOUSE PRESSED O ALGO ASÍ XD

//Las coordenadas en la habitación en las que se dibuja el inventario
//(ezquina superior izquieda del inventario)
var xinit, yinit; //Asígnales el valor que sea necesario

//Tamaño de las celdas
var cellw, cellh; //Asígnales el valor que sea necesario

//Cantidad de celdas (horizontal y verticalmente)
var cellwnum, cellhnum;  //Asígnales el valor que sea necesario

//Tamaño total del inventario
var gridw = cellwnum * cellw;
var gridh = cellhnum * cellh;

//Posición del mouse con respecto al inventario
var mousedx = mouse_x - xinit;
var mousedy = mouse_y - yinit;

//Comprobar que el mouse esté dentro del inventario
if point_in_rectangle(mousedx, mousedy, 0, 0, gridw, gridh) {
    //Convertir las coordenadas en la pantalla a coordenadas dentro el inventario
    //(coordenadas de celda)
    mousedx = floor( mousedx / cellw );
    mousedy = floor( mousedy / cellh );

    //Esas dos variables ahora indican la celda en la que se hizo clic
}
Los siguientes usuarios dieron las gracias a este tema: Johann, Ashe de Freljord, Goganpis

Páginas: 1 2 3 ... 7