Pues haber,voy a dar unos pasos importantes y algunos consejos . Yo he empezado a hacer AIs hace una semana solo jaj pero ya le voy pillando. Se trata de que el char se encuentre todo el rato haciendo cosas cuando esta cerca o lejos del oponente.
No es nada dificil, de verdad.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Por ejemplo tenemos esto.
[State -1, AI]
type = changestate ; Cambia de estado (Statedef), sin mas.
triggerall = RoundState = 2 && var(59) . VAr 59 activa la AI.
triggerall = StateType = S .Si el char esta de pie.
triggerall = (p2statetype = S) || (p2statetype = C). Lo hace si el oponente es ta S de pie, o C agachado.
triggerall = Ctrl . Si tiene el control o sea que no esta haciendo nada. esto siempre.
triggerall = P2BodyDist X <= 70. solo lo hara si esta cerca del p2.
trigger1 = Random <= 50 . Probabilidad del 5% para que se active el punetazo. si es 500 pues el 50%. Mejor dejarlos entre 50 y 300 puntos como mucho.
value = 240. Cambia al statedef 240 que en mi caso es un punetazo. Osea que realiza un puñetazo.
< ---------- menor que....
> ---------- mayor que.....
<= ----------menos o igual que...
>=----------mayor o igual que...
|| ---------- esto es ,o,
&&---------- esto es y.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
triggerall = P2BodyDist X <= 70 || p2statetype = A
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Se activa si hay menos de 70 pixels al oponente o si el oponente esta en el aire.
Si se cumple cualquiera de las dos, la AI se activa.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
triggerall = P2BodyDist X <= 70 && p2statetype = A
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Se activa si hay menos de 70 pixels al oponente y el oponente esta en el aire.
Se tienen que cumplir las dos para que la AI se active.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Ok.
Triggerall son disparadores generales y luego tiene
subdisparadores, tantos como quieras. Triger1,trigger2,3,4,5,6,7.... etc.
Tiene que haber al menos un Triggerall y un Trigger1 en la cadena.
------->
Para que se active cualquiera de los subdisparadores se tienen que cumplir siempre todos los triggerall. <--------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Para que nuestro personaje haga un
combo de puñetazo patada, añades esto.
[State -1, AI]
type = changestate
triggerall = RoundState = 2 && var(59) . VAr 59 activa la AI.
triggerall = StateType = S .Si el char esta de pie.
triggerall = (p2statetype = S) || (p2statetype = C). Lo hace si el oponente esta S de pie, o C agachado.
trigger1 = movehit && stateno = 240,el puñetazo de antes.
trigger1 = Random <= 300
trigger2= P2BodyDist X <= 70
trigger2 = Random <= 50
trigger2= Ctrl .
trigger3= P2movetype = A, atacando.
trigger3 = Random <=100
trigger3= Ctrl .
value = 230 ,patada
Hara una patada si...
(trigger1) Movehit, si enchufa el puñetazo con exito al oponente (p2, player2) hay una probabilidad de un 30% que haga un combo con la patada.
o
(trigger2) si esta cerca del oponente y a menos de 70 pixels hace una patada con una probabilidad de un 5%.
o
(trigger3) si el oponente esta atacando hay una probabilidad de un 10%.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
[State -1, AI]
type = changestate
triggerall = RoundState = 2 && var(59) . VAr 59 activa la AI.
triggerall = StateType = S .Si el char esta de pie.
triggerall = p2statetype != A; Si el oponente NO se encuentra en el aire.
trigger1= P2BodyDist X > 140
trigger1 = Random <= 400
value = 1000 , proyectil
Por ejemplo aki, siempre que este lejos del oponente, exactamente a mas de 140 piXelzZ se pondra a lanzar proyectiles como loco si esta de pie y el oponente no se encuentra en el aire.
Pero si el oponente esta en el aire o nuestro personaje esta en el aire o agachado no ejecutara proyectiles.
p2statetype = A ; Si el oponente SI se encuentra en el aire.
p2statetype != A; Si el oponente NO se encuentra en el aire.
(=) y
(!=) - Significan SI o NO. Sirven para statetype p2statetype,movetype,p2movetype entre otros.
Que facil no?
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
[State -1, AI]
type = changestate
triggerall = RoundState = 2 && var(59) .
triggerall = StateType = S .
triggerall = (p2statetype = S) || (p2statetype = C).
trigger1= Movehit
trigger1 = Random <= 100
value = 240. es un punetazo.
SIEMPRE que el char conecte un golpe exitoso, cualquiera que sea y que el oponente no se guarde y lo pare, oZea que se lo enchufe bien lOl.... hay una probabilidad de un 10% de que haga un combo con este puñetazo.
Si se lo pones a la patada, al puñetazo, a la patada baja, algun especial etc... Sera un char que hace muchos y variados combos.
-
trigger= Ctrl -
Aki no necesita tener el control porke cuando el puñetazo se ha conectado se activa sin mas. No necesita estar sin hacer nada.
Este parametro se utiliza para prevenir de que por ejemplo nuestro personaje no haga una patada en medio de un movimiento de puñetazo, o de cualquier otro movimiento.
Pero si quieres que la patada
SOLO haga combos especificos entonces sigues el ejemplo de arriba, puñetazo patada.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
En el Random puedes poner valores que oscilan de 0 y 1000.
Random <= 50 De vez en cuando
Random <= 100 Un poco mas de habitual
Random <= 150 Un poco mas
Random <= 200 Bastantes veces
Random <= 300 Bastante habitual
Random <= 400 Casi siempre.
Random <= 1000 Probabilidad del 100%.
Mejor dejarlos entre 50 y 300 puntos como mucho para que haya variedad de golpes.
Por ejemplo golpes basicos en 50 o 70, especiales 150,.. Todo es probar.
< menor que....
> mayor que.....
<= menor o igual que..
>= mayor o igual que..
|| esto es ,o,
&& esto es y.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Statetype= S , C, A o L. ( P2Statetype para el oponente)
S= De pie ;
C= agachado;
A= en el aire;
L= cayendo
Movetype= H, A, I ( P2Movetype para el oponente)
H= golpeado;
A= atacando;
I= inactivo, sin hacer nada
Movehit = si el golpe es encajado con exito
Moveguarded = si el golpe es parado, guardado
Movecontact = si hay contacto con el oponente
P2bodysist = distancia entre yo y el oponente
*P2bodysist Y => Posicion vertical. -40 por ejemplo es que esta encima tuyo. 40 que se encuentra debajo tuyo.
*P2bodysist X => Posicion horizontal.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------
EjemploX:
trigger1= Moveguarded
trigger1= P2BodyDist X <= 50
trigger1 = Random <= 100
value = 260, patada baja
1.-El oponente me para un golpe y estoy al lado de el, mi personaje lanzara una patada baja dificil de parar.
trigger1= HItcount > 8
trigger1 = Random <= 100
value = 1550, Especial
2.-Si mi personaje ha golpeado a su oponente con un combo de mas de 8 golpes hace un Especial.
Life o p2Life = Barra de energia. De 0 a 1000.
trigger1= Life <= 250
trigge1 = Random <= 100
value = 1550, Especial
3.-Si mi personaje le quedan menos de 250 puntos de vida hace un Especial.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Hay muchas posibilidades.
Para mas inFO descargar CASMUGEN 3.1 que tambien posteE en este foro.
Si teneis dudas preguntar y eZo.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
-Salu2-
---------------------------------------------------------------------------------------------------------------------------------------------------------------