ATTACKBOTH {players}
~Optional.
~An attack. Players use this if they hold attack and then press jump.
~This cannot be used if the player has a BLOCK animation. If MODELS.txt has 'ajspecial 1', this is replaced by the special attack.
jiam said:It is very complicated? :-\
void main()
{
int iPlIndex = getlocalvar("player"); //Get calling player
void vSelf = getplayerproperty(iPlIndex , "entity"); //Get calling entity
void vAniID = getentityproperty(vSelf,"animationID"); //Get current animation ID
void vAniPos = getentityproperty(vSelf, "animpos"); //Get current animation frame
int iDir = getentityproperty(vSelf, "direction"); //Get current facing direction
float A1 = getentityvar(vSelf, 1);
float A2 = getentityvar(vSelf, 2);
void iUp = playerkeys(iPlIndex, 1, "moveup"); // New key status of "Up"
void iDown = playerkeys(iPlIndex, 1, "movedown"); // New key status of "Down"
void iLeft = playerkeys(iPlIndex, 1, "moveleft"); // New key status of "Left"
void iRight = playerkeys(iPlIndex, 1, "moveright"); // New key status of "Right"
void iJump = playerkeys(iPlIndex, 1, "jump"); //New key status of "Jump"
void iSpecial = playerkeys(iPlIndex, 1, "Special"); //New key status of "Special"
void iAttack = playerkeys(iPlIndex, 1, "attack"); //New key status of "Attack"
void iAttack2 = playerkeys(iPlIndex, 1, "attack2"); // New key of "Attack 2"
if(iAttack){
if(A1 == NULL()){
A1 = openborvariant("elapsed_time");
setentityvar(vSelf, 1, A1); // Store current time in variable if Attack is pressed
}
}
if(A1 <= openborvariant("elapsed_time") - 10){
A1 = NULL();
setentityvar(vSelf, 1, NULL()); // Clear variable if "Attack" pressed time has expired
}
if(iAttack2){
if(A2 == NULL()){
A2 = openborvariant("elapsed_time");
setentityvar(vSelf, 2, A2); // Store current time in variable if Attack2 is pressed
}
}
if(A2 <= openborvariant("elapsed_time") - 10){
A2 = NULL();
setentityvar(vSelf, 2, NULL()); // Clear variable if "Attack2" pressed time has expired
}
if(A1 != NULL() && A2 != NULL()){ // Both Attack and Attack2 are pressed within 5 centiseconds time?
if(vAniID == openborconstant("ANI_ATTACK1") || vAniID == openborconstant("ANI_FREESPECIAL") ){
performattack(vSelf, openborconstant("ANI_FOLLOW1")); // Action
}
}
}
In each way it start first imput, then check for second one.
Something like that...
Now, how to apply it exactly?
I mean, in character file.
if(A1 <= openborvariant("elapsed_time") - 10){
A1 = NULL();
setentityvar(vSelf, 1, NULL()); // Clear variable if "Attack" pressed time has expired
}
if(A2 <= openborvariant("elapsed_time") - 10){
A2 = NULL();
setentityvar(vSelf, 2, NULL()); // Clear variable if "Attack2" pressed time has expired
}
if(A1 <= openborvariant("elapsed_time") - 20){
A1 = NULL();
setentityvar(vSelf, 1, NULL()); // Clear variable if "Attack" pressed time has expired
}
if(A2 <= openborvariant("elapsed_time") - 20){
A2 = NULL();
setentityvar(vSelf, 2, NULL()); // Clear variable if "Attack2" pressed time has expired
}
name billy
health 200
speed 8
type player
gfxshadow 1
grabdistance 19
falldie 2
nodieblink 2
weapons billy1 billy2 billy3 billy4 billy5 billy6 billy7 billy8 billy9 billy10 billy11 billy12 billy13 none
noquake 1
makeinv 1
playshotno sp
typeshot 1
running 20 3 2 0
jumpheight 3
risetime -2
antigrab 2
nolife 1
combostyle 2
atchain 1 2 3 0 0
grabfinish 1
icon data/chars/billy/icon.gif
candamage player enemy npc
keyscript data/scripts/dos_botones.c #two buttons
parrow data/chars/billy/1p.gif -10 -79
parrow2 data/chars/billy/2p.gif -11 -79
com u u freespecial # cabezazo "cambiarlo a f f cuando elimine correr"
com a2 freespecial2 # patada
com a3 freespecial3 # patada con salto hacia atras
com a4 freespecial4 # codazo
com s freespecial5 # hurricane_kick
#anim attackboth # patada con salto hacia alante
com a a2 freespecial6 # dos botones en pruebas (two buttons)
palette data/chars/billy/paleta.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter2.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter3.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter4.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter5.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter6.gif
remap data/chars/billy/wk1.gif data/chars/billy/alter7.gif
anim freespecial6
loop 0
delay 10
bbox 58 71 18 58
offset 64 131
jumpframe 1 2.5
flipframe 0
frame data/chars/billy/j1.gif
frame data/chars/billy/j2.gif
sound data/sounds/dragon.wav
delay 20
offset 64 131
frame data/chars/billy/j3.gif
attack6 76 85 18 21 18 1 0 0 0 0
offset 64 131
frame data/chars/billy/j4.gif
attack 0 0 0 0
delay 5
offset 64 131
frame data/chars/billy/j5.gif
#pulsando ataque y salto a la vez hace patada con salto hacia alante con "attackboth"
anim attackboth
loop 0
delay 12
bbox 59 78 17 38
offset 65 131
sound data/sounds/dragon.wav
bbox 59 78 17 38
frame data/chars/billy/rc1.gif
frame data/chars/billy/rc2.gif
jumpframe 2 -3
frame data/chars/billy/rc3.gif
delay 20
attack 73 84 29 25 18 1 0 0 0 0
frame data/chars/billy/rc4.gif
delay 10
attack 0 0 0 0
frame data/chars/billy/rc5.gif
frame data/chars/billy/rise.gif
anim freespecial
loop 0
delay 15
offset 65 131
bbox 58 71 18 58
sound data/sounds/dragon.wav
frame data/chars/billy/cabeza1.gif
attack 82 114 8 15 14 1 0 0 0 0
frame data/chars/billy/cabeza2.gif
anim attack1
loop 0
delay 8
bbox 58 72 18 60
offset 65 131
frame data/chars/billy/a101.gif
delay 14
attack 76 90 23 14 10 0 0 0 0 0
frame data/chars/billy/a102.gif
delay 8
attack 0 0 0 0 0
frame data/chars/billy/a103.gif
anim attack2
loop 0
delay 8
bbox 58 72 18 60
offset 65 131
frame data/chars/billy/a104.gif
delay 18
attack2 76 77 23 17 14 0 0 0 0 0
frame data/chars/billy/a105.gif
frame data/chars/billy/a106.gif
anim attack3
loop 0
delay 3
bbox 64 71 18 58
offset 65 131
frame data/chars/billy/upper0.gif
frame data/chars/billy/upper0.gif
frame data/chars/billy/upper0.gif
attack 76 79 18 21 18 1 0 0 0 0
frame data/chars/billy/upper1.gif
frame data/chars/billy/upper1.gif
frame data/chars/billy/upper1.gif
frame data/chars/billy/upper2.gif
frame data/chars/billy/upper2.gif
frame data/chars/billy/upper2.gif
delay 5
frame data/chars/billy/upper2.gif
anim death
loop 0
offset 65 131
delay 18
sound data/sounds/pladie.wav
frame data/chars/billy/rise.gif
offset 58 132
frame data/chars/billy/die0.gif
frame data/chars/billy/die1.gif
frame data/chars/billy/die2.gif
anim death18
loop 0
offset 57 90
delay 15
sound data/sounds/salpicadura.wav
frame data/chars/billy/salpicadura1.gif
frame data/chars/billy/salpicadura2.gif
frame data/chars/billy/salpicadura3.gif
frame data/chars/billy/salpicadura1.gif
anim fall
loop 0
offset 65 131
delay 60
frame data/chars/billy/fall1.gif
bbox 63 132 1 1
delay 20
offset 64 131
frame data/chars/billy/fall2.gif
frame data/chars/billy/fall3.gif
anim fall13
loop 0
offset 88 129
delay 60
frame data/chars/billy/fall1.gif
bbox 64 131 1 1
delay 20
frame data/chars/billy/fall2.gif
frame data/chars/billy/fall3.gif
anim fall16
loop 0
offset 96 142
delay 50
frame data/chars/billy/lan5.gif
bbox 85 130 1 1
delay 30
offset 84 129
frame data/chars/billy/lan6.gif
offset 77 129
frame data/chars/billy/lan7.gif
anim fall17
loop 0
offset 100 133
delay 50
frame data/chars/billy/throw3.gif
bbox 74 133 1 1
delay 30
offset 74 133
frame data/chars/billy/throw4.gif
offset 73 133
frame data/chars/billy/throw5.gif
anim fall18
bbox 57 90 1 1
loop 0
offset 57 90
delay 1
sound data/sounds/silencio.wav
frame data/chars/billy/salpicadura1.gif
anim fall6
loop 0
delay 4
offset 65 131
jumpframe 1 1
move 2
frame data/chars/billy/golpe2.gif
frame data/chars/billy/golpe2.gif
delay 5
frame data/chars/billy/golpe2.gif
frame data/chars/billy/golpe2.gif
frame data/chars/billy/golpe2.gif
frame data/chars/billy/golpe2.gif
frame data/chars/billy/golpe2.gif
bbox 68 131 1 1
frame data/chars/billy/golpe4.gif
move 0
delay 30
frame data/chars/billy/golpe3.gif
anim fall8
loop 0
offset 90 116
delay 60
frame data/chars/billy/fall1.gif
bbox 64 131 1 1
delay 20
offset 64 131
frame data/chars/billy/fall2.gif
frame data/chars/billy/fall3.gif
anim follow1
loop 0
delay 16
bbox 58 71 17 61
offset 65 131
attack2 0 0 0 0 0
frame data/chars/billy/a202.gif
frame data/chars/billy/a300.gif
sound data/sounds/dragon.wav
delay 16
attack 74 76 25 29 18 1 0 0 0 0
frame data/chars/billy/a301.gif
attack 0 0 0 0 0
delay 10
frame data/chars/billy/a302.gif
frame data/chars/billy/a303.gif
anim freespecial2
loop 0
delay 7
bbox 58 71 17 61
offset 65 131
followcond 3
followanim 1
frame data/chars/billy/a203.gif
frame data/chars/billy/a201.gif
delay 18
attack2 73 75 23 38 14 0 0 0 0 0
frame data/chars/billy/a202.gif
anim freespecial3
loop 0
delay 10
bbox 58 71 18 58
offset 64 131
jumpframe 1 2.5
flipframe 0
frame data/chars/billy/j1.gif
frame data/chars/billy/j2.gif
sound data/sounds/dragon.wav
delay 20
offset 64 131
frame data/chars/billy/j3.gif
attack6 76 85 18 21 18 1 0 0 0 0
offset 64 131
frame data/chars/billy/j4.gif
attack 0 0 0 0
delay 5
offset 64 131
frame data/chars/billy/j5.gif
anim freespecial4
loop 0
delay 8
bbox 58 71 18 58
offset 65 131
sound data/sounds/dragon.wav
frame data/chars/billy/elbow1.gif
delay 18
attack6 47 114 9 18 17 1 0 0 0 0
frame data/chars/billy/elbow2.gif
attack 0 0 0 0 0
delay 9
frame data/chars/billy/elbow1.gif
anim freespecial5
loop 0
delay 2
offset 65 131
frame data/chars/billy/sp1.gif
offset 65 137
frame data/chars/billy/sp2.gif
frame data/chars/billy/sp3.gif
frame data/chars/billy/sp4.gif
sound data/sounds/special.wav
delay 5
frame data/chars/billy/sp5.gif
attack 41 68 24 31 20 1 0 0 0 0
frame data/chars/billy/sp6.gif
frame data/chars/billy/sp7.gif
frame data/chars/billy/sp8.gif
attack 74 66 25 29 20 1 0 0 0 0
frame data/chars/billy/sp9.gif
frame data/chars/billy/sp5.gif
attack 41 68 24 31 20 1 0 0 0 0
frame data/chars/billy/sp6.gif
frame data/chars/billy/sp7.gif
frame data/chars/billy/sp8.gif
attack 74 66 25 29 20 1 0 0 0 0
frame data/chars/billy/sp9.gif
frame data/chars/billy/sp5.gif
attack 41 68 24 31 20 1 0 0 0 0
frame data/chars/billy/sp6.gif
frame data/chars/billy/sp7.gif
frame data/chars/billy/sp8.gif
attack 74 66 25 29 20 1 0 0 0 0
frame data/chars/billy/sp9.gif
attack 0 0 0 0 0
delay 4
frame data/chars/billy/sp4.gif
frame data/chars/billy/sp3.gif
frame data/chars/billy/sp2.gif
delay 20
offset 65 131
frame data/chars/billy/rise.gif
anim get
loop 0
delay 17
offset 65 131
frame data/chars/billy/rise.gif
anim grab
loop 0
delay 11
bbox 58 71 18 58
offset 60 131
frame data/chars/billy/hold01.gif
frame data/chars/billy/hold0.gif
frame data/chars/billy/grab.gif
anim grabattack
loop 0
delay 10
bbox 58 71 18 58
offset 60 131
shock 74 55 14 20 8 0 0 0 12
frame data/chars/billy/hold1.gif
delay 10
frame data/chars/billy/hold2.gif
anim grabattack2
loop 0
delay 7
bbox 58 71 18 58
offset 60 131
attack8 74 55 14 20 12 1 1 0 12
frame data/chars/billy/hold3.gif
anim grabbackward
loop 0
delay 15
offset 65 131
attackone 1
forcedirection 1
hitfx data/sounds/silencio.wav
attack7 74 55 14 20 0 0 0 0 12
sound data/sounds/dragon.wav
frame data/chars/billy/th1.gif
attack 0 0 0 0
frame data/chars/billy/th2.gif
attack17 1 -160 1 1 12 1 1 0 12 0
delay 25
frame data/chars/billy/th3.gif
#desconectados solo para cuando se cojen billy o jimmy
anim grabbed
bbox 45 36 22 56
loop 0
delay 11
offset 71 131
frame data/chars/billy/gp3.gif
#frame data/chars/billy/gp3.gif
#frame data/chars/billy/gp1.gif
anim idle
loop 0
delay 5
offset 65 131
bbox 58 71 18 58
frame data/chars/billy/wk1.gif
anim jump
loop 0
bbox 58 71 18 58
offset 65 131
delay 7
frame data/chars/billy/sp1.gif
delay 30
frame data/chars/billy/sp2.gif
anim jumpattack
loop 0
offset 65 131
delay 7
bbox 58 73 20 45
frame data/chars/billy/ak1.gif
delay 30
attack 64 89 34 16 10 1 0 0 0 0
frame data/chars/billy/ak2.gif
attack 0 0 0 0
frame data/chars/billy/sp2.gif
#anim jumpattack2
#anim jumpattack3
anim land
loop 0
offset 65 131
delay 17
frame data/chars/billy/rise.gif
anim pain19
loop 0
offset 65 131
bbox 47 0 7 1
delay 625
frame data/chars/billy/pose1.gif
delay 125
frame data/chars/billy/pose2.gif
frame data/chars/billy/pose2.gif
frame data/chars/billy/pose1.gif
anim pain
loop 0
offset 65 131
bbox 57 72 16 59
delay 30
frame data/chars/billy/pain2.gif
anim pain10
loop 0
delay 200
offset 65 131
frame data/chars/billy/wk1.gif
anim pain11
bbox 0 0 0 0
loop 0
delay 15
offset 78 132
forcedirection 1
frame data/chars/billy/lan1.gif
offset 78 132
frame data/chars/billy/lan2.gif
offset 78 132
frame data/chars/billy/lan3.gif
offset 78 132
bbox 47 0 7 1
delay 1
frame data/chars/billy/lan4.gif
anim pain12
loop 0
delay 20
offset 68 129
frame data/chars/billy/k0.gif
delay 50
offset 68 129
frame data/chars/billy/k1.gif
delay 15
offset 68 130
frame data/chars/billy/k2.gif
offset 68 129
frame data/chars/billy/k1.gif
offset 68 130
frame data/chars/billy/k2.gif
offset 68 129
frame data/chars/billy/k1.gif
offset 68 130
frame data/chars/billy/k2.gif
offset 68 129
frame data/chars/billy/k1.gif
offset 68 129
frame data/chars/billy/k3.gif
offset 68 129
bbox 67 -162 10 1
frame data/chars/billy/k4.gif
anim pain14
loop 0
offset 65 131
bbox 57 72 16 59
delay 30
frame data/chars/billy/pain1.gif
anim pain15
loop 0
offset 65 131
bbox 57 72 16 59
delay 22
frame data/chars/billy/pain2.gif
delay 50
frame data/chars/billy/pain3.gif
anim pain2
loop 0
offset 65 131
bbox 57 72 16 59
delay 22
frame data/chars/billy/pain1.gif
delay 50
frame data/chars/billy/pain3.gif
anim pain3
loop 0
offset 65 131
bbox 57 72 16 59
delay 52
frame data/chars/billy/pain3.gif
anim pain4
loop 0
offset 64 131
bbox 57 72 16 59
delay 5
frame data/chars/billy/pain4e.gif
delay 45
frame data/chars/billy/pain4.gif
anim pain5
loop 0
offset 65 131
bbox 57 72 16 59
delay 50
frame data/chars/billy/pain4.gif
anim pain7
loop 0
delay 15
offset 83 131
frame data/chars/billy/throw1.gif
offset 84 130
bbox 1 -160 1 1
frame data/chars/billy/throw2.gif
anim pain9
loop 0
delay 6
offset 65 131
frame data/chars/billy/pain5.gif
frame data/chars/billy/pain6.gif
frame data/chars/billy/pain7.gif
frame data/chars/billy/pain8.gif
frame data/chars/billy/pain7.gif
frame data/chars/billy/pain8.gif
frame data/chars/billy/pain7.gif
frame data/chars/billy/pain8.gif
frame data/chars/billy/pain7.gif
frame data/chars/billy/pain8.gif
anim respawn
loop 0
offset 65 131
delay 30
frame data/chars/billy/rise.gif
anim spawn
loop 0
delay 5
offset 65 131
bbox 58 71 18 58
frame data/chars/billy/wk1.gif
anim rise
loop 0
offset 65 131
delay 25
frame data/chars/billy/rise.gif
anim run
loop 1
delay 7
offset 65 126
bbox 58 67 18 58
sound data/sounds/run.wav
frame data/chars/billy/ca1.gif
frame data/chars/billy/ca2.gif
frame data/chars/billy/ca3.gif
frame data/chars/billy/ca4.gif
anim runattack
loop 0
delay 2
bbox 58 67 18 58
offset 65 131
sound data/sounds/dragon.wav
delay 2
move 3
frame data/chars/billy/upper0.gif
frame data/chars/billy/upper0.gif
frame data/chars/billy/upper0.gif
move 2
attack 76 79 18 21 18 1 0 0 0 0
frame data/chars/billy/upper1.gif
frame data/chars/billy/upper1.gif
frame data/chars/billy/upper1.gif
frame data/chars/billy/upper2.gif
frame data/chars/billy/upper2.gif
frame data/chars/billy/upper2.gif
delay 30
frame data/chars/billy/upper2.gif
move 0
attack 0 0 0 0 0
delay 14
frame data/chars/billy/upper0.gif
anim spain
loop 0
delay 10
offset 70 131
bbox 45 36 22 56
frame data/chars/billy/gp0.gif
delay 1
frame data/chars/billy/gp2.gif
anim up
loop 1
delay 13
offset 66 131
bbox 58 71 18 58
frame data/chars/billy/wku2.gif
frame data/chars/billy/wku3.gif
offset 65 131
frame data/chars/billy/wku4.gif
frame data/chars/billy/wku1.gif
anim waiting
loop 0
delay 2
offset -24 128
frame data/chars/billy/sel_billy.gif
anim walk
loop 1
delay 13
offset 66 131
bbox 58 71 18 58
frame data/chars/billy/wk2.gif
frame data/chars/billy/wk3.gif
offset 65 131
frame data/chars/billy/wk4.gif
frame data/chars/billy/wk1.gif
anim walkoff
loop 0
bbox 58 71 18 58
offset 65 131
delay 10
frame data/chars/billy/sp1.gif
offset 65 125
frame data/chars/billy/sp3.gif
if(A1 != NULL() && A2 != NULL()){ // Both Attack and Attack2 are pressed within 5 centiseconds time?
if(vAniID == openborconstant("ANI_ATTACK1") || vAniID == openborconstant("ANI_FREESPECIAL") ){
performattack(vSelf, openborconstant("ANI_FOLLOW1")); // Action
}
}
if(A1 != NULL() && A2 != NULL()){ // Both Attack and Attack2 are pressed within 5 centiseconds time?
if(vAniID == openborconstant("ANI_ATTACK1") || vAniID == openborconstant("ANI_FREESPECIAL2") ){
performattack(vSelf, openborconstant("ANI_FREESPECIAL6")); // Action
}
}