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

76
Grafismo & Composición / Re:Eliminar un enemigo.
Enero 19, 2013, 01:39:11 AM
Se me ocurre que, podría desaparecer enterrándose como dijo penumbra, pero no como si la tierra se lo tragara, sino simplemente ir acortando y bajando el sprite rápidamente.

Si no podés usar el viejo y querido fade-out, que no es muy original pero nunca queda mal.
77
Propuestas y soporte / Re:Foro de diseño
Enero 19, 2013, 01:34:14 AM
Podés perfectamente usar el subforo de grafismo y composición para eso.
78
Bueno, el problema que citaba Texic puede ser ese, pero en este caso creo que no aplica porque según entendí, solo ocurre al mandar muchos datos en un paquete único...

Cita de: brunoxzx en Enero 17, 2013, 06:16:24 PM
Por cierto yo creo que la mejor forma de hacer balas es hacerlas instantáneas es decir que solo se vean como un destello o una linea y que apenas se crean ya se sepa a que le dieron.
Jaja bueno, eso no estaría mal, pero ya cambia el gameplay del juego :P.
79
OK, OTRA versión experimental potencialmente MÁS rápida todavía:
[gml]// file_is_savegame(file);
// Return whether the given file is a valid savegame of the current game.

var f, i, value;
f = file_bin_open(argument0, 0);

value = 0;
for (i = 0; i < 4; i += 1) {
    file_bin_seek(f, 4 + i);
    value += file_bin_read_byte(f) << (i << 3);
}

file_bin_close(f);
return (value == game_id);[/gml]
80
Preguntas y respuestas / Re:Teclado y cambio de room
Enero 16, 2013, 04:06:19 AM
Cita de: calio en Enero 15, 2013, 01:16:37 AM
Cita de: Wadk en Enero 13, 2013, 04:07:18 AM
Entonces podrías hacer:
[gml]global.dpad[1] = global.dpad[1] || keyboard_check(vk_right);[/gml]
antes de cambiar de room, y en step en algún lado:
[gml]global.dpad[1] = global.dpad[1] && !keyboard_check_released(vk_right);[/gml]
¿No?

Lamentablemente, eso resulta en el error que provoca que el jugador siga caminando si suelta la tecla justo entre cambio de rooms.
El error lo gatilla la primera línea de código, y sucede porque -oh, error mío el no haber comentado eso xD- antes de pasar a de room el juego activa una variable que se desactiva al llegar a la room siguiente, y la función de esa variable es suspender el control de las teclas a través del script aburrido de keyboard_check_pressed() y keyboard_check_released() para pasar al chequeo de las teclas directamente previo al cambio de room y mantenerlo hasta la siguiente room, donde la variable vuelve a su estado normal.
Dado que el valor de global.dpad[1] no puede ser actualizado durante éste proceso mediante el método habitual de chequeo, el valor de global.dpad[1] no va a cambiar nunca entre rooms hasta que la variable de control vuelva a su estado normal.

Lo dicho, suerte con tu sistema de un solo room :P.
81
Opaa, no la tenía esa. Debe ser muchísimo más rápido. A ver, versión experimental potencialmente mucho más rápida:
[gml]// file_is_savegame(file);
// Return whether the given file is a valid savegame of the current game.

var f, i, value;
f = file_bin_open(argument0, 0);

file_bin_seek(f, 4);
value = file_bin_read_byte(f);
for (i = 0; i < 3; i += 1) {
    file_bin_seek(f, 5 + i);
    value += file_bin_read_byte(f) * (256 << (i << 3));
}

file_bin_close(f);
return (value == game_id);[/gml]
¿Así sería? Los paréntesis los puse por las dudas porque ni idea de si << tiene prioridad o no sobre *.
82
Cita de: Ciberman en Enero 14, 2013, 08:18:24 PM
sabía que el Game_id se guardaba en alguna parte del savegame pero no sabía dónde... pero... lo más interesante que puedo extraer de este script es la linea de:
[gml]
value += file_bin_read_byte(f) * power(256, i);
[/gml]
Osea, no se me hubiera ocurrido que poniendole power a la i y sumandolo se podía convertir a decimal el valor... jaja... muy util...
Claro :P. Es porque esencialmente se lee en base 256. Si se leyera en binario (base 2), sería power(2, i), octal (base 8) sería power(8, i)... en fin, que es un cambio de base común y corriente.
83
[gml]files = 0;
file[files] = file_find_first("el\directorio\que\sea\*", 0);
while (file[files] != "") {
    files += 1;
    file[files] = file_find_next();
}[/gml]
Eso te deja con un array "file" con el nombre de cada archivo y directorio, y una variable "files" con la cantidad de items en el array. Si querés buscar también en los directorios dentro del directorio, tendrías que ponerlo en una función y hacer que se ejecute recursivamente...
84
Preguntas y respuestas / Re:Problema con .txt
Enero 13, 2013, 07:05:41 PM
Cita de: francordoba en Enero 13, 2013, 06:55:24 PM
La carpeta idiomas está depositada en la misma carpeta donde se encuentra el .gmx.


Acabo de poner el archivo en el directorio raiz, así pelado y mondado, sin carpeta que lo albergue y quitando de la ruta el directorio "idiomas". Tampoco lo abre.
¿gmx? Si estás usando GM Studio, colocaste el ícono incorrecto...

Probá con rutas absolutas, a ver si eso funciona. (working_directory + "\archivo1.txt").
Fijate que working_directory tenga el valor correcto con un show_message.
85
Preguntas y respuestas / Re:Problema con .txt
Enero 13, 2013, 06:51:56 PM
Ese error sale cuando el archivo no pudo ser abierto. Lo más seguro es que no hayas especificado la ruta correctamente.
La carpeta idiomas tiene que estár en la misma carpeta que el editable para que GM encuentre el archivo.
86
Preguntas y respuestas / Re:Teclado y cambio de room
Enero 13, 2013, 04:07:18 AM
Cita de: calio en Enero 13, 2013, 03:45:47 AM
Cita de: Wadk en Enero 13, 2013, 03:40:49 AM
Cita de: calio en Enero 13, 2013, 02:21:13 AM
No, si uno suelta la tecla y la vuelve a presionar, keyboard_check(vk_right) vuelve a ser true. Lo de la room subsiguiente es si el jugador mantiene presionada la tecla durante esas 3 rooms, caso bastante esperable a decir verdad ._.
Pregunté por keyboard_check_released...

Upa! Oh, qué error de mi parte ._.
Sí, keyboard_check_released() funciona.
Entonces podrías hacer:
[gml]global.dpad[1] = global.dpad[1] || keyboard_check(vk_right);[/gml]
antes de cambiar de room, y en step en algún lado:
[gml]global.dpad[1] = global.dpad[1] && !keyboard_check_released(vk_right);[/gml]
¿No?
87
Preguntas y respuestas / Re:Teclado y cambio de room
Enero 13, 2013, 03:40:49 AM
Cita de: calio en Enero 13, 2013, 02:21:13 AM
No, si uno suelta la tecla y la vuelve a presionar, keyboard_check(vk_right) vuelve a ser true. Lo de la room subsiguiente es si el jugador mantiene presionada la tecla durante esas 3 rooms, caso bastante esperable a decir verdad ._.
Pregunté por keyboard_check_released...

EDIT: Por otro lado, ¿alguna vez probaste ENIGMA? No creo que tenga ese problema, aunque te aviso que todavía le queda para ser del todo compatible con GM (y no sé si lograrás hacerlo andar, si te interesa y tenés problemas pasate por #enigma en Freenode).
88
Preguntas y respuestas / Re:Teclado y cambio de room
Enero 13, 2013, 02:10:11 AM
¿Y durante todo ese proceso la tecla no se suelta, y si se soltara después de salir del primer room, keyboard_check_released(vk_right) igual sería false?
Si es así, buena suerte con tu método de un solo room :P.
Y sobre eso: ¿Game Maker no tiene funciones para leer las instancias que se crearían al entrar a un room? Si tiene podrías implementar tu propio room_goto que las lea y las cree...
89
Preguntas y respuestas / Re:Como hacer un checkpoint
Enero 13, 2013, 01:56:22 AM
Cita de: calio en Enero 13, 2013, 01:23:41 AMHeh :D esa es una buena solución también, mucho más elegante y sencilla de entender a simple vista, pero por lo que le entendí a nano06, el principal problema viene "cuando el jugador se sale del room", lo que entiendo como que cuando el jugador está en otra room, no tiene cómo volver al checkpoint anterior, porque la instancia sencillamente ya no existe.
Vaya, sinceramente no leí el post inicial. Mal yo.

Por cierto, ¿por qué usás un switch para comprobar si una variable es verdadera? ¿por qué no un if?
90
Preguntas y respuestas / Re:Como hacer un checkpoint
Enero 13, 2013, 12:59:27 AM
Cita de: Creador de juegos GM en Enero 12, 2013, 05:21:34 PM
pero seria mas facil como digo y esto:
if checpoin2=true checpoin1=false
if checpoin3=true checpoin2=false
No lo creo... El método de calio lo podés programar una vez y después olvidarte. Simplmente posicionás las instancias del obj_checkpoint donde las quieras en el room y listo. Sin modificar el código, funciona para cualquier cantidad de checkpoints colocados de cualquier forma y en cualquier room.

Aunque también se podría hacer de forma más eficiente y con menos variables. El obj_checkpoint alcanza con que tenga un sprite con el que se pueda colisionar, y nada más. el objeto personaje debe tener la siguiente variable:
[gml]checkpoint = noone;[/gml]
También el siguiente código en el evento de colisión con obj_checkpoint:
[gml]checkpoint = other.id;[/gml]
Y el siguiente código que se ejecute cuando muera:
[gml]if (checkpoint == noone) {
    x = xstart;
    y = ystart;
} else {
    x = checkpoint.x;
    y = checkpoint.y;
}[/gml]