In Progress The King of Fighters EX

The project is currently under development.
How to detect obstacles and walls and then convert actions?
Code:
anim freespecial34
    energycost 100
    mponly 1
    forcedirection    -1
    fastattack    1
    followanim    34
    followcond    1
    hitfx    data/sounds/h_sp.wav
    delay    10
    offset    400 400
    @cmd shadow 6 6 24 6 0 0 0 0
    frame    data/chars/player/zayra/f7_0.png
    delay    12
    sound   data/chars/player/zayra/sounds/200_18.wav
    frame    data/chars/player/zayra/f7_1.png
    delay    6
    sound   data/chars/player/zayra/sounds/sp4_1.wav
    frame    data/chars/player/zayra/sp4_2.png
    @cmd dasher 10 0 0
    attack4    366 246 110 118 1 0 1 0 20
    dropv 5 0
    frame    data/chars/player/zayra/sp4_12.png
    frame    data/chars/player/zayra/sp4_10.png
    frame    data/chars/player/zayra/sp4_11.png
    frame    data/chars/player/zayra/sp4_12.png
    frame    data/chars/player/zayra/sp4_10.png
    frame    data/chars/player/zayra/sp4_11.png
    frame    data/chars/player/zayra/sp4_12.png
    frame    data/chars/player/zayra/sp4_10.png
    frame    data/chars/player/zayra/sp4_11.png
    delay    6
    @cmd dasher 4 0 0
    attack    0
    frame    data/chars/player/zayra/sp4_20.png
    delay    12
    @cmd dasher 0 0 0
    frame    data/chars/player/zayra/sp2_13.png
    frame    data/chars/player/zayra/sp2_14.png
    delay    6
    frame    data/chars/player/zayra/get_0.png

anim follow34
    offset    400 400
    delay    6
    @cmd shadow 6 6 24 6 0 0 0 0
    @cmd grabStart2
    @cmd position 4 -28 34 -1 -1
    @cmd dasher 10 0 0
    frame    data/chars/player/zayra/sp4_10.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_11.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_12.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_10.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_11.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_12.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_10.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_11.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_12.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_10.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_11.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_12.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_10.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_11.png
    @cmd position 5 -48 42 -1 0
    frame    data/chars/player/zayra/sp4_12.png
    @cmd aniChange 0 "ANI_FOLLOW35"
    frame    data/chars/player/zayra/sp4_12.png
    
anim follow35
    offset    400 400
    delay    6
    @cmd shadow 6 6 24 6 0 0 0 0
    @cmd position 3 32 8 -1 0
    @cmd dasher 0 0 0
    frame    data/chars/player/zayra/sp4_20.png
    delay    16
    @cmd position 5 102 8 -1 0
    @cmd spawn01 "flash" 120 112 1
    quakeframe this 6 12
    sound   data/sounds/h_sp.wav
    attack4 416 264 100 60 15 1 0 0 20
    frame    data/chars/player/zayra/sp4_21.png
    delay    16
    @cmd slam 15 2 -3 8 0 0
    @cmd clearL
    attack 0
    frame    data/chars/player/zayra/sp4_21.png
    delay    12
    frame    data/chars/player/zayra/jumpdelay_0.png
    delay    2
    frame    data/chars/player/zayra/jumpland_4.png
    delay    12
    jumpframe this 7.2 -2.6
    frame    data/chars/player/zayra/sp2_0.png
    delay    8
    frame    data/chars/player/zayra/sp2_1.png
    delay    6
    frame    data/chars/player/zayra/sp2_2.png
    frame    data/chars/player/zayra/sp2_3.png
    frame    data/chars/player/zayra/sp2_4.png
    frame    data/chars/player/zayra/sp4_35.png
    frame    data/chars/player/zayra/sp2_5.png
    frame    data/chars/player/zayra/jump_1.png
    delay    -1000
    frame    data/chars/player/zayra/jump_4.png
    delay    6
    landframe this
    sound    data/sounds/land.wav
    frame    data/chars/player/zayra/jumpland_1.png
    frame    data/chars/player/zayra/jumpland_2.png
    delay    18
    frame    data/chars/player/zayra/jumpland_3.png
    delay    6
    frame    data/chars/player/zayra/jumpland_4.png
    delay    4
    frame    data/chars/player/zayra/get_0.png
    frame    data/chars/player/zayra/a_0.png
 
Last edited:
How to detect obstacles and walls and then convert actions?
There's some script events that detect certain situations.

1731016809895.png

Example:
Code:
name              Axel
type              player
health            100
onblockpscript    data/scripts/onblockp.c
onblockwscript    data/scripts/onblockw.c
onblocksscript    data/scripts/onblocks.c

Then, using any of these events as an example, inside the onblockw.c file you can take some actions like changing animations:
Code:
void main()
{
    void self = getlocalvar("self");
    changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
}
 
How to detect obstacles and walls and then convert actions?

You can detect obstacle, wall, platform and screen edge BEFORE you are blocked by any of them and AFTER you are blocked. If you want the latter, you'd need to use onblock scripts as posted by Kratus above. If you want the former, you'd need to use different script, onmovexscript might work in this case.
 
There's some script events that detect certain situations.

View attachment 9563

Example:
Code:
name              Axel
type              player
health            100
onblockpscript    data/scripts/onblockp.c
onblockwscript    data/scripts/onblockw.c
onblocksscript    data/scripts/onblocks.c

Then, using any of these events as an example, inside the onblockw.c file you can take some actions like changing animations:
Code:
void main()
{
    void self = getlocalvar("self");
    changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
}
Thanks for the help, I'm not very good at editing scripts, but my friend helped me complete this script
C:
void main()
{
    void self   = getlocalvar("self");
    void Dir    = getentityproperty(self, "direction");
    void vAniID = getentityproperty(self,"animationID");
    int b       = getentityproperty(self, "base");

    if(vAniID == openborconstant("ANI_FOLLOW34")){
        if(b+1 && Dir == 1){
            changeentityproperty(self, "direction", 1);
            changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW35"));
        }else if(b+1 && Dir == 0){
            changeentityproperty(self, "direction", 0);
            changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW35"));
        }
    }
}
 
I think you don't need facing direction check since Zayra doesn't change facing direction when she is blocked by anything. I think you don't need base check either.
That being said, this should work as onblockpscript and other onblock scripts.
 
I think you don't need facing direction check since Zayra doesn't change facing direction when she is blocked by anything. I think you don't need base check either.
That being said, this should work as onblockpscript and other onblock scripts.
Thanks for reminding me. I have modified it and this function works normally in the game.
C:
void main()
{
    void self   = getlocalvar("self");
    void vAniID = getentityproperty(self,"animationID");
    int b       = getentityproperty(self, "base");

    if(vAniID == openborconstant("ANI_FOLLOW34")){
        if(b+1){
            changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW35"));
        }
    }
}
 
Ni hao! It seems this character is also an employee at the moving company, I hope your project progresses steadily.😊
 
Back
Top Bottom