Buenas, hace tiempo que no pasaba por aqu?.

El caso es que tengo un juego en mente y he pensado en game maker para desarrollarlo, quiero centrarme completamente en el GML y dejar a un lado lo de programar al juego desde la GUI del programa (drag and drop). Pero he estado pensando, y no recuerdo que se puedan definir funciones para usarlas luego en otros puntos de un script o de otro script. Es eso posible?, es decir, yo puedo por ejemplo definir la funcion Jump(), la cual comprueba si el personaje esta en el suelo y si esta comprobaci?n es afirmativa realizar las operaciones para que salte, y entonces poder llamar este bloque de codigo desde cualquier lugar como una funcion cualquiera? o tengo que copiar cada vez todo el c?digo?

S? que es una duda un poco tonta, porque supongo que tiene que existir algo as?, pero me lo estaba preguntando y buscando no he encontrado nada.

Saludos

PD: Pongo el icono de pregunta general porque no se que version de game maker voy a utilizar.

Claro que s?, lo agregas como un script. El nombre del script es la manera de llamarlo, por ej si se llama script1 para llamarlo desde un c?digo pones [gml]script1()[/gml]
Puedes introducir variables en la funci?n para utilizarlas con los argumentX (de 0 a 15)
Si quieres que adem?s devuelva un valor para poder usarlo en comprobaciones usas el return, te doy un ejemplo del jump
[gml]if place_free(x,y+1) {vspeed=-abs(argument0) return 1}
else {return 0}[/gml]
argument0 ser?a la velocidad vertical del salto




Muchas gracias ^^
me ha surgido otra pregunta, ?Puedo crear varios scripts dentro de un mismo archivo de script? ?o tengo que crear un archivo de script para cada uno? Me refiero a crearlos con el boton de "Create a script" en el men? superior. Pongamos que estoy en el script movimiento y quiero definir jump, tengo que crear un archivo nuevo para hacer jump o hay alguna maneda de defnir "Jump" dentro de "Movimiento"?

S? hay una manera, solo escribes jump() como si de cualquier funci?n se tratase dentro del script movimiento. No te olvides de agregar los argumentos a jump() si es que has definido alguno.

?Saludos!
       

Cita de: Hackware en Noviembre 19, 2010, 07:54:26 PM
S? hay una manera, solo escribes jump() como si de cualquier funci?n se tratase dentro del script movimiento. No te olvides de agregar los argumentos a jump() si es que has definido alguno.

?Saludos!

No termino de entender como tengo que hacerlo :S Si yo escribo Jump() asecas no estoy llamando al scrpit jump? a mi lo que me interesa es definir qu? va dentro de dicho script, pero sin tener que crear dos scripts distintos.

Primero que todo deber?as olvidarte de todos tus preconceptos de lenguajes anteriores porque est?s intentando hacer las cosas como se har?an en lenguajes m?s "avanzados" mientras que el GML es menos complicado de lo que parece.

Quiz? yo no est? comprendiendo bien a que te refieres con "definir", pero supongo que te refieres usar un script dentro de otro, as? que te lo explicar? de la siguiente forma.

Supongamos que tienes tres scripts: jump(), walk() y duck(), y deseas definir las acciones del protagonista en un nuevo script llamado move(). Haciendo uso de rapic?digo no depurado el script move() podr?a contener algo como esto:

[gml]switch (keyboard_lastkey)
{
case vk_up: jump(); break;
case vk_right: walk(1); break; //siendo 1 derecha
case vk_left: walk(-1); break; //siendo -1 izquierda
case vk_down: duck(); break;
}[/gml]

Es as? de f?cil.
       

Cita de: Hackware en Noviembre 19, 2010, 10:29:53 PM
Primero que todo deber?as olvidarte de todos tus preconceptos de lenguajes anteriores porque est?s intentando hacer las cosas como se har?an en lenguajes m?s "avanzados" mientras que el GML es menos complicado de lo que parece.

Quiz? yo no est? comprendiendo bien a que te refieres con "definir", pero supongo que te refieres usar un script dentro de otro, as? que te lo explicar? de la siguiente forma.

Supongamos que tienes tres scripts: jump(), walk() y duck(), y deseas definir las acciones del protagonista en un nuevo script llamado move(). Haciendo uso de rapic?digo no depurado el script move() podr?a contener algo como esto:

[gml]switch (keyboard_lastkey)
{
case vk_up: jump(); break;
case vk_right: walk(1); break; //siendo 1 derecha
case vk_left: walk(-1); break; //siendo -1 izquierda
case vk_down: duck(); break;
}[/gml]

Es as? de f?cil.

Vale, ya entiendo, muchas gracias.
Bueno, parece sencillo, ya buscare algunos manuales de GML para iniciarme y eso.

Pues nada, duda resuelta ^^