Enero 31, 2014, 03:50:36 AM Ultima modificación: Enero 31, 2014, 03:52:56 AM por yokaiworld
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.

#1 Enero 31, 2014, 04:41:19 AM Ultima modificación: Enero 31, 2014, 04:45:55 AM por vampy09
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 !
The next best thing to knowing something,
is knowing where to find it.

#2 Febrero 02, 2014, 02:19:53 PM Ultima modificación: Febrero 02, 2014, 02:21:58 PM por yokaiworld
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

#3 Febrero 03, 2014, 06:27:19 AM Ultima modificación: Febrero 03, 2014, 06:33:40 AM por vampy09
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!
The next best thing to knowing something,
is knowing where to find it.

#4 Febrero 04, 2014, 06:31:01 AM Ultima modificación: Febrero 04, 2014, 06:34:24 AM por yokaiworld
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

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')}
The next best thing to knowing something,
is knowing where to find it.