Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: yokaiworld en Enero 31, 2014, 03:50:36 AM

Título: ayuda a terminar codigo
Publicado por: yokaiworld en Enero 31, 2014, 03:50:36 AM
Hola
he logrado que el player 2 persiga al player 1 y cuando entre en contacto con el Obj_circulo que sigue al player1 tire un golpe, pero parece que lo hace infinitamente, incluso cuando me alejo y el player2 me persigue pero lanzando golpes ( se mueve pero no muertra la animacion walk)
alguien me puede ayudar para que solo lance un golpe?

if instance_exists(obj_player1)
{scr_drawattack2(ord(true), stand, jab,   jab_box,   5, 'normal')}

este script es una modificacion del player1:
{scr_drawattack(ord('Y'), stand, cross, cross_box, 7, 'normal') es para cuando presiones boton Y el player1 lance el golpe.
Título: Re:ayuda a terminar codigo
Publicado por: vampy09 en Enero 31, 2014, 04:41:19 AM
La funcion ord ( ) devuelve dos valores : false o true.
Ejemplo:
ord ( Z );
devulve true cuando la tecla "Z" es presionada y false cuando es soltada.

if instance_exists(obj_player1)
{scr_drawattack2(ord( true ), stand, jab, jab_box,   5, 'normal')

Lo que sucede es que aqui pones "ord ( true )", estonces a menos que vuelvas false este valor, el Game Maker va interpretar como que la "tecla" esta siendo presionada, provocando que jugador2 se mueva con la "tecla" se ataque como si estuviera presionada provocando que se quede "trabado" en el sprite que usas para el ataque.
Saludos !
Título: Re:ayuda a terminar codigo
Publicado por: yokaiworld en Febrero 02, 2014, 02:19:53 PM
desarrolle esto pero funciona a medias, se supone que cuando desaparezca obj_Aa se deveria detener, pero solamente cuando le doy un buen golpe al player2 respeta el codigo

var cas, ser, res, bis;
cas =  instance_exists(obj_Aa);

if ( instance_exists(obj_Aa) )
cas = true   
else           
cas = false

if instance_exists(obj_Bb)
cas = false
else
if instance_exists(obj_Cc)
cas = false
else
if instance_exists(obj_Dd)
cas = false

if (cas)
{scr_drawattack2(ord(cas), stand, jab,   jab_box,   5, 'normal')}

Exite algun codigo que me ayude a finalizar una accion osea la accion se realiza una vez y se destruye pasando a la siguiente gracias
Título: Re:ayuda a terminar codigo
Publicado por: vampy09 en Febrero 03, 2014, 06:27:19 AM
Primero:
La funcion instance_exist() devuelve dos valores:
true // si existe dentro del room al menos una instancia del objeto que hayas puesto dentro de los parentesis
false // si no existe al menos una ...
Ahora tu codigo:
Primero: no pones en que evento lo usas o si es un script.
Segundo: como consejo nada mas, es que trates de nombrar tus variables, objetos etc. con nombres un poco mas representivos ej:
posicion_x, obj_jugador, sprite_lado_der
Permite que tu codigo sea mas facil de leer, por ti y por otros.
Al codigo:
Declaras tres variables he inicialisas una
cas = instance_exist(obj_Aa) // cas va hacer true o false dependiendo si el obj_Aa existe

En la siguiente linea pones if (instance_exist(obj_Aa) entonces si esto es verdadero cas = true sino cas = false; osea lo  MISMO que la sentencia anterior!

Seguido pones una secuencia de IF que provoca que si al menos una instancia del obj_Bb O del obj_Cc O del obj_Dd existe, cas = false sino cas = true, osea:
if ( instance_exist(obj_Bb) or instance_exist(obj_Cc) or instance_exist(obj_Dd) )
{
  cas = false;
}
else
{
   cas = true;
}

La ultima linea provoca que si cas = true se ejecute el script.
Hago esta lectura de tu codigo para que me ayudes a entenderlo.
Te pregunto ¿ A que te refieres con que deseas que "la accion se realise una vez y se destruya"?
Por que las instancias (objetos) son las unicas que se destruyen y las ACCIONES se ejecutan segun el orden en que las pongas,dependiendo del EVENTO en que se hayen ubicadas.
Salidos!
Título: Re:ayuda a terminar codigo
Publicado por: yokaiworld en Febrero 04, 2014, 06:31:01 AM
Hola
este codigo
{scr_drawattack2(ord(true), stand, jab,   jab_box,   5, 'normal')}

Hace que cuando el player 2 entra en colision con el player 1 comience a dar golpes pero no se detiene yo necesito que funcione una vez y deje de funcionar. pero no se como pararlo Basicamente lo asocie con un objeto que se crea y desaparece aleatoriamente y aunque el objeto desaparece esta accion sigue indefinidamente hasta que player1 golpea al 2
Esto es para crear una IA muy simplona gracias
Título: Re:ayuda a terminar codigo
Publicado por: vampy09 en Febrero 04, 2014, 10:46:50 PM
Trata con poner este codigo en el evento STEP del objeto player2

Evento Step

if ( place_meeting(x,y,player1)
{scr_drawattack2(ord(true), stand, jab, jab_box, 5, 'normal')}
else
{scr_drawattack2(ord(false), stand, jab, jab_box, 5, 'normal')}