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

571
Preguntas y respuestas / Re: que es un objeto parent
Julio 13, 2010, 03:31:11 AM
No copi? y pegu? nada XD.

event_inherited s?lo hereda el evento en el que es llamada (si la llam?s en create, ejecuta el c?digo create del parent, etc). No hay m?s funciones que conozca, pero no creo que sean necesarias.
No creo que se puedan heredar m?s cosas, pero tampoco lo veo muy necesario...
572
Preguntas y respuestas / Re: que es un objeto parent
Julio 13, 2010, 02:53:23 AM
Sirven para muchas cosas m?s. En el ejemplo de Herni, tambi?n pod?s crear un objeto objBala y hacer que sea parent de todas las balas, y as? s?lo tendr?as que crear 1 evento de colisi?n.

Pero hay m?s que decir.
Por ejemplo, si ten?s un objeto A con evento create y un objeto B con evento step y lo hac?s hijo de el objeto A (es decir, hac?s al objeto A parent del B), va a ser como si el objeto B tuviera un evento create igual al del objeto A.
Pero si despu?s cre?s un evento create en el objeto B, el evento create del objeto A no se ejecutar? en el objeto B. Para que se ejecute, ten?s que usar la funcion event_inherited().
Si en el c?digo o en el GM te refer?s en alg?n momento a un objeto que es parent de uno o m?s objetos, los objetos hijos tambi?n se ver?n afectados.



Un ejemplo de algo interesante que se puede hacer con parents...
Supongamos que quer?s tener muchos enemigos en tu juego. Quer?s que cada uno se mueva de una forma distinta, tenga vida y ataque distintos, etc. Tambi?n quer?s que hayan otros objetos que da?en al jugador pero que no se consideren enemigos como pinchos, fuego, trampas, lo que sea.
Entonces, para los enemigos cre?s el objeto objEnemigo y en create pon?s:
Código (Create) [Seleccionar]
life=100;
damage=10;
speed=3;

Despu?s cre?s a un enemigo y le pon?s a objEnemigo como su parent. En step del enemigo hac?s que se mueva y eso. El enemigo por defecto va a tener los stats del objeto objEnemigo, es decir 100 de vida, 10 de ataque y 3 de velocidad. Si quer?s cambiar alguno, pod?s ponerle esto en el evento create:
Código (Create) [Seleccionar]
event_inherited(); //Para que primero se asignen los valores por defecto
life=200;

As? el enemigo va a quedar con 10 de ataque y 3 de velocidad pero con 200 de vida.
Haciendo eso termin?s a todos los enemigos. Despu?s en el objeto personaje agreg?s un evento de colisi?n con objEnemigo y pon?s algo as?:
Código (Colisi?n con objEnemigo) [Seleccionar]
life-=other.damage;
Y as?, cuando el personaje choque con un enemigo, sea cual sea, le bajar? la vida seg?n el ataque de dicho enemigo :).
Continuando, ahora con los obst?culos. Primero creamos un objeto objObstaculo y le ponemos en create:
Código (Create) [Seleccionar]
damage=10;
Despu?s creamos el objeto objPinchos y hacemos a objObstaculo su parent. Por defecto objPinchos tendr? una variable damage que vale 10.
Despu?s creamos el objeto objFuego. Supongamos que queremos que el fuego mate de un golpe al jugador... podemos poner lo siguiente en create:
Código (Create) [Seleccionar]
damage=-1;
Y despu?s indicaremos que un damage de -1 significa matar de un golpe.
Ahora en vez de agregar un nuevo evento de colisi?n al personaje, podemos crear un nuevo objeto objPeligro (se me est?n acabando los nombres buenos) y poner a objObstaculos y objEnemigos como hijos de objPeligro.
Despu?s cambiamos el evento de colision con objEnemigos por colision con objPeligro y as?, al chocar el personaje con un enemigo u obst?culo, perder? la cantidad de vida seg?n el da?o que hayamos indicado que el enemigo u obst?culo debe inflijir.
Tambi?n hay que editar el c?digo de colisi?n con objPeligro para que si el da?o es -1 el personaje muera instant?neamente:
Código (Colisi?n objPeligro) [Seleccionar]
if(other.damage<0){life=0;}else{life-=other.damage;}

Despu?s se pueden agregar muchas cosas m?s. Por ejemplo, si algunos enemigos disparan, se puede hacer que las balas tengan un parent objBala que a su vez sea parent de objPeligro, y que en objBala se declaren las propiedades por defecto de las balas y en cada objeto de bala estas se modifiquen...
Las posibilidades son infinitas :)



Bueno ya escrib? mucho, me voy.
573
Yo pondr?a tal vez una m?xima de 999 y m?nima de 10 o por ah?, s?lo porque s?, y por si alguien juega tu juego en diez mil a?os. Tambi?n dejar?a al jugador elejir cualquier valor que se le quiera.
Y deber?as poner una forma de cambiarlo desde fuera del juego (editando un ini por ejemplo) por si a alguien se le ocurre poner un valor que dejara el juego injugable.
574
Tambi?n pod?s ponerlo como opci?n. Pero si hac?s eso vas a tener que trabajar un poco m?s con las velocidades de los objetos... algo as?:
speed=5*30/room_speed;
As? cuando el jugador elija un room speed de 30, la velocidad del objeto ser? 5, y si este elije 60, la velocidad ser? 2,5. El resultado es que el objeto siempre se va a mover igual de r?pido, sin importar la room speed.
575
Yo no asignar?a variables locales en un script. Se me ocurre que el script podr?a recibir un segundo argumento que contenga el id de una surface creada anteriormente fuera del script.
Fuera de eso, est? bueno, queda bien el efecto.
576
Para el primer cambio est? bien usar alarmas, ser?a lo m?s indicado, pero como los siguientes deben ocurrir cuando acabe la animaci?n actual, ser?a mejor usar animation end.
Prob? as?:
Código (Step) [Seleccionar]
if(sprite_index==sprite1)&&!(alarm[0]){
    alarm[0]=room_speed*5; //5 segundos.
}

Código (Alarm 0) [Seleccionar]
sprite_index=sprite2;
image_index=0;

Código (Animation End) [Seleccionar]
if(sprite_index==sprite2){
    sprite_index=sprite3;
    image_index=0;
}else if(sprite_index==sprite3){
    sprite_index=sprite1;
}
577
Seguramente porque est? en step, en ese caso al alarma se pone en 10, baja a 9 y se vuelve a ejecutar el c?digo por lo que se vuelve a poner en 10 y nunca se ejecuta porque nunca llega a 0.
Prob? as?:
if vida_pokemon1.ps>0{
global.seleccionar=1
if!(battle_spr.alarm[2]){battle_spr.alarm[2]=10}
instance_destroy()
}

Y por favor, intent? no poner muchas preguntas en el mismo tema.
578
Preguntas y respuestas / Re: gamemaker 6 windows 7
Junio 12, 2010, 01:54:48 AM
Tengo entendido que en 7 funcionan todos, s?lo el 6 no funciona en Vista a menos que se use un parche. Supongo que si no funcionara en 7 hubieran sacado un parche similar.
579
Bienvenido, abiles. Ten?s que leer las reglas antes de postear.
http://www.comunidadgm.org/index.php?topic=18.0
Volv? a postear el mensaje cuando lo hayas hecho.
580
Preguntas y respuestas / Re: vectores
Junio 08, 2010, 05:24:53 PM
Volv? a postear el tema despu?s de leer esto: http://www.comunidadgm.org/index.php?topic=18.0
Texic, NO respondas temas que incumplan las reglas y NO hagas pseudomoderaci?n, no est? permitido.
Gracias.
581
Esos problemas los ten?s que plantear a los creadores de esos juegos.
Le? las reglas: http://www.comunidadgm.org/index.php?topic=18.0
juan pablo, no respondas temas que incumplan el reglamento.
582
Esto no es una pregunta general, pon? el ?cono correspondiente.
583
No, no son lo mismo (aunque s? similares).
584
Preguntas y respuestas / Re: Parar Musica
Mayo 27, 2010, 03:44:18 AM
El ?conoooo...
585
Las IDs de las monedas en una ventana y otra no necesariamente son iguales. Tal vez deber?as hacer que el servidor cree las monedas manualmente y les asigne un ID y despu?s env?e al cliente la ID y la posici?n de cada moneda para que este las vaya creando.
Despu?s cuando uno tome una moneda, envi?s la ID y la borr?s as?:
msg=readshort();
with(all){
   if(variable_local_exists("ID")){
       if(ID==other.msg){
           instance_destroy();
       }
   }
}


La verdad no estoy seguro de que esto sea correcto, tal vez haya una soluci?n m?s simple, pero pod?s intentar a ver si sale.