Creá una nueva "font" y asignale todos los caracteres haciendo click en "All" donde salen unos números y cuadro botones.
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.
92
Preguntas y respuestas / Re:global.?
Marzo 24, 2015, 09:12:40 PM
Para las armas podes usar un arreglo directamente:
[gml]
global.arma[0] = 1;
global.arma[1] = 0;
global.arma[2] = 0;
global.arma[3] = 0;
global.arma[4] = 0;
/*...
global.arma[n] = 0;*/
[/gml]
De esa forma el código te queda más ordenado y podes verlo ordenado mediante un for en el caso que tengas más de dos armas por escenario y quieras poner cuales son las que tenes:
[gml]
for (i=0;i<4;i+=1) {
if (global.arma == 1) {
show_message("Tiene el arma N°"+i+"!);
}
}
[/gml]
(Repito que el FOR es a mero ejemplo de una pequeña explicación de porque es mejor usar arreglos o array).
Con respecto al "==" es porque así se usa, usar dos signos igual significa comparar, usar uno solo significa asignar.
[gml]
global.arma[0] = 1;
global.arma[1] = 0;
global.arma[2] = 0;
global.arma[3] = 0;
global.arma[4] = 0;
/*...
global.arma[n] = 0;*/
[/gml]
De esa forma el código te queda más ordenado y podes verlo ordenado mediante un for en el caso que tengas más de dos armas por escenario y quieras poner cuales son las que tenes:
[gml]
for (i=0;i<4;i+=1) {
if (global.arma == 1) {
show_message("Tiene el arma N°"+i+"!);
}
}
[/gml]
(Repito que el FOR es a mero ejemplo de una pequeña explicación de porque es mejor usar arreglos o array).
Con respecto al "==" es porque así se usa, usar dos signos igual significa comparar, usar uno solo significa asignar.
93
Preguntas y respuestas / Re:global.?
Marzo 24, 2015, 08:57:21 PM
Se puede usar el Switch Case pero creo que para alguien que recién comienza con GML y programación es más fácil entender la estructura del IF. Por cierto Clamud, en el Switch Case, después de cada caso te falto el "break;".
pacne, yo puse el "==" en cada comparación porque esa es la estructura correcta del IF, no se puede poner como lo habías puesto vos ya que no estaría comparando correctamente y lanzaría error de sintaxis.
pacne, yo puse el "==" en cada comparación porque esa es la estructura correcta del IF, no se puede poner como lo habías puesto vos ya que no estaría comparando correctamente y lanzaría error de sintaxis.
94
Preguntas y respuestas / Re:global.?
Marzo 24, 2015, 08:48:00 PM
El if como lo estás usando está mal, ese código quedaría de la siguiente manera:
[gml]
if (global.room_existente == rm_nvl1 or global.room_existente == rm_nvl3 or global.room_existente == rm_nvl5 or global.room_existente == rm_nvl7 or global.room_existente == rm_nvl8 or global.room_existente == rm_nvl9 or global.room_existente == rm_nvl10) {
//Acción a realizar.
}
[/gml]
Es más, la variable global "global.room_existente" es realmente innecesaria ya que la variable "room" es accesible por todos los objetos como si fuera una variable global.
Después, con respecto a tu duda, lo mejor es como lo estás haciendo, es la única forma que veo sin que te compliques tanto por lo que recién estás aprendiendo.
Otra cosa, también podes usar "&&" en vez de "and" y "||" en vez de "or" para que no se te haga tanto lío a la hora de leer el IF.
[gml]
if (global.room_existente == rm_nvl1 or global.room_existente == rm_nvl3 or global.room_existente == rm_nvl5 or global.room_existente == rm_nvl7 or global.room_existente == rm_nvl8 or global.room_existente == rm_nvl9 or global.room_existente == rm_nvl10) {
//Acción a realizar.
}
[/gml]
Es más, la variable global "global.room_existente" es realmente innecesaria ya que la variable "room" es accesible por todos los objetos como si fuera una variable global.
Después, con respecto a tu duda, lo mejor es como lo estás haciendo, es la única forma que veo sin que te compliques tanto por lo que recién estás aprendiendo.
Otra cosa, también podes usar "&&" en vez de "and" y "||" en vez de "or" para que no se te haga tanto lío a la hora de leer el IF.
95
Preguntas y respuestas / Re:Como hago el movimiento como el del menu de hotline miami
Marzo 24, 2015, 05:50:45 AM
Entonces fijate en GMC a ver si encontrás algún ejemplo. Yo lo veo muy poco útil que sea algo 3D únicamente para un menú y shader no puede ser porque en :GM7: todavía no estaba implementado.
96
Preguntas y respuestas / Re:Como hago el movimiento como el del menu de hotline miami
Marzo 24, 2015, 02:06:51 AM
Eso más que 3D me suena a Sprites, es fácil de hacerlo, nada más hacé los sprites con la animación por cada acción que quieras que tenga tu menú y otro igual para cuando está seleccionado con alguna diferencia, en este caso se pone como en "3D" y rosado.
Después es cuestión de dibujar todos los sprites con su animación correspondiente y comprobar si se está sobre esa acción, que cambie de sprite.
Después es cuestión de dibujar todos los sprites con su animación correspondiente y comprobar si se está sobre esa acción, que cambie de sprite.
97
Preguntas y respuestas / Re:Problema al presionar dos teclas al mismo tiempo
Marzo 22, 2015, 09:17:30 PM
Probá ponerle solamente "keyboard_check" o cambia las dos a "keyboard_check_pressed", por ahí puede empezar a fallar al no ser del mismo tipo.
98
Preguntas y respuestas / Re:Aparición de enemigos aleatorios.
Marzo 22, 2015, 05:25:04 PM
Para crear un enemigo al azar en un objeto control poné esto:
Create:
[gml]
randomize(); //Con esto hacemos que realmente sea al azar.
instance_create(irandom_range(0,room_width),irandom_range(0,room_height),obj_enemy); //Con irandom_range obtenemos un valor entero de 0 al ancho de la room y de 0 al alto de la room.
[/gml]
Si queres crear más de un enemigo tendría que quedarte algo así:
Create:
[gml]
randomize();
alarm[0] = 15;
[/gml]
Alarm 0:
[gml]
var xx,yy; //Creamos variables locales
xx = irandom_range(0,room_width); //Asignamos un valor random para XX.
yy = irandom_range(0,room_height); //Asignamos un valor random para YY,
if (position_empty(xx,yy)) { //Si la posición en XX e YY está libre...
instance_create(xx,yy,obj_enemy);
}
alarm[0] = room_speed; //El código se va a repetir cada un segundo.
[/gml]
En cuanto a que el enemigo se acerque únicamente si estás cerca tendrías que poner algo así:
Evento STEP del enemigo:
[gml]
if (distance_to_object(obj_player) < 50) {
//Acá poné el código que tenías para que se acerque.
}
[/gml]
El 50 lo podes cambiar por la distancia que vos quieras, recordá que son 50 pixeles. También reemplazá los nombres "obj_enemy" y "obj_player" por el nombre de tu enemigo y de tu personaje.
Create:
[gml]
randomize(); //Con esto hacemos que realmente sea al azar.
instance_create(irandom_range(0,room_width),irandom_range(0,room_height),obj_enemy); //Con irandom_range obtenemos un valor entero de 0 al ancho de la room y de 0 al alto de la room.
[/gml]
Si queres crear más de un enemigo tendría que quedarte algo así:
Create:
[gml]
randomize();
alarm[0] = 15;
[/gml]
Alarm 0:
[gml]
var xx,yy; //Creamos variables locales
xx = irandom_range(0,room_width); //Asignamos un valor random para XX.
yy = irandom_range(0,room_height); //Asignamos un valor random para YY,
if (position_empty(xx,yy)) { //Si la posición en XX e YY está libre...
instance_create(xx,yy,obj_enemy);
}
alarm[0] = room_speed; //El código se va a repetir cada un segundo.
[/gml]
En cuanto a que el enemigo se acerque únicamente si estás cerca tendrías que poner algo así:
Evento STEP del enemigo:
[gml]
if (distance_to_object(obj_player) < 50) {
//Acá poné el código que tenías para que se acerque.
}
[/gml]
El 50 lo podes cambiar por la distancia que vos quieras, recordá que son 50 pixeles. También reemplazá los nombres "obj_enemy" y "obj_player" por el nombre de tu enemigo y de tu personaje.
99
Preguntas y respuestas / Re:Problema al presionar dos teclas al mismo tiempo
Marzo 22, 2015, 01:19:24 AM
Podrías probar creando una "variable bandera" que te serviría únicamente para testeo. En el evento Create poné algo como "compruebaDisparo = false;", después, en el evento donde pones el if ese, dentro del if poné algo como "compruebaDisparo = true;" y después para ver si se está seteando esa variable podes imprimirla en pantalla con "draw_text(0,0,string(compruebaDisparo"));", eso tendría que imprimir TRUE o FALSE en la posición 0-0 de la pantalla. Si tenes un objeto control que no tiene sprites podes poner ese código (como siempre y con todos los draw_) en el evento Draw y ponerlo de esta forma: "draw_text(0,0,string(obj_personaje.compruebaDisparo"));", donde "obj_personaje" tendría que ser reemplazado por el nombre de tu objeto personaje.
Probá poniendo eso así para comprobar si está funcionando bien el IF, si se pone en TRUE debe ser ya otro problema y no del IF.
Probá poniendo eso así para comprobar si está funcionando bien el IF, si se pone en TRUE debe ser ya otro problema y no del IF.
100
Preguntas y respuestas / Re:Efectos de boton
Marzo 21, 2015, 04:38:28 PM
Usá los eventos de mouse y "image_xscale" y "image_yscale" considerando que estas variables tienen valores que van del 0 al 1.
101
Preguntas y respuestas / Re:Algunas preguntas
Marzo 21, 2015, 03:54:38 PM
Usá el buscador del foro, tus dudas han sido contestadas antes. También tenes la sección de ejemplos que hay varios ejemplos sobre juegos tipo Pokemon, son versiones de GM anterior pero compatible, a lo sumo te saldrán algunos errores diciendo que X función. tiene menos argumentos y le falta llenar algún argumento.
102
Preguntas y respuestas / Re:Pausa
Marzo 21, 2015, 03:52:00 PM
Lo que siempre les digo a todos los que quieren hacer un menú de pausa te lo comento, te conviene crear un objeto que cuando se presione para poner pausa desactive todas las instancias menos la de dicho objeto, en caso de querer volver al juego simplemente desactivas esa instancia y activas el resto.
103
Preguntas y respuestas / Re:como hacer base de datos tipo ficha de empleados y poder guardarlos
Marzo 16, 2015, 11:17:53 PM
La verdad nunca he trabajado con tantos arrays en :GMS: pero en :GM8: lo que yo hacía era crear los arrays mediante un for en el evento Create, quizás en :GMS: ya es más como en el resto de los lenguajes que deja crear n arrays en una única línea colocando: global.empleado = [];, la verdad esa forma nunca la he probado, pero si GML está basado en C++ tendría que poderse.
104
Preguntas y respuestas / Re:como hacer base de datos tipo ficha de empleados y poder guardarlos
Marzo 16, 2015, 02:05:12 PM
¿Has considerado usar arrays del tipo variable[x,y,z] (por dar un ejemplo)?.
Te quedaría algo así:
[gml]global.empleado[0,0] = "Fulanito de Tal"; //Nombre y apellido.
global.empleado[0,1] = "Gerente General"; //Ocupación.
global.empleado[0,2] = "60.000"; //Sueldo.
...
global.empleado[0,n] = "Dato cualquiera";[/gml]
Te quedaría algo así:
[gml]global.empleado[0,0] = "Fulanito de Tal"; //Nombre y apellido.
global.empleado[0,1] = "Gerente General"; //Ocupación.
global.empleado[0,2] = "60.000"; //Sueldo.
...
global.empleado[0,n] = "Dato cualquiera";[/gml]
105
Preguntas y respuestas / Re:Como guardar el sprite que tiene un objeto?
Marzo 13, 2015, 02:17:37 AM
Tendrías que tener un archivo externo para las configuraciones, podrías probar con un *.ini.