To reproduce shinku hadoken (stop) effect

White Dragon

New member
Is it possible to riproduce shinku hadoken stop effect?
That is when a character does a shinku hadoken can I stop/freeze all entities in the screen?
Maybe with textbox in openborvariant?

Ps. How can I use textbox? =)
 
A text entity will work for most cases. All you have to do is create the text with whatever animation you want, spawn it when you want the pause and you're done. Everything on screen but the text itself will pause when it spawns and un-pause when it "dies". From there it's just tweaking for visual flavor. Couldn't be simpler.

Only thing to keep in mind is the text stops everything until it plays out. This is perfect for most super flashes and most other pause effects. However, there are special cases like Andy Bogard's Zan'ei Ryuusei Ken where the main entity (or anything else besides the text) still needs to animate.

In those cases, you can enumerate the entity collection and conditionally stop what what you need to. I wrote a simple pause function eons ago to do this. The animations I've attached show it in action in my Fatal Fury module (note how Andy finishes his arm movement while everything but the background is stopped). It's out of date (you don't need to use the "freeze" flag any more) but works none the less. With a few adjustments it should be just what you need.

ff_chronicals_0016.gif


ff_chronicals_0017.gif


Code:
void paus0001(int iToggle, int iTime){

    /*
    paus0001
    Damon Vaughn Caskey
    11022009
    Pause or unpause action for all entities except self.
    */

    void vSelf      = getlocalvar("self");                  //Caller    
    int  iETime     = openborvariant("elapsed_time");       //Current time.
    int  iMax       = openborvariant("ent_max");            //Entity count.
    int  iEntity;                                           //Loop counter.
    void vEntity;                                           //Target entity.

    for(iEntity=0; iEntity<iMax; iEntity++)
    {    
        vEntity = getentity(iEntity);                                       //Get target entity from current loop.        
        
        if (vEntity != vSelf)                                               //Not Self?
        {
            changeentityproperty(vEntity, "frozen", iToggle);               //Toggle frozen.
            changeentityproperty(vEntity, "freezetime", iETime + iTime);    //Toggle frozen time.
        }
    }    
}
 
Damon Caskey said:
A text entity will work for most cases. All you have to do is create the text with whatever animation you want, spawn it when you want the pause and you're done. Everything on screen but the text itself will pause when it spawns and un-pause when it "dies". From there it's just tweaking for visual flavor. Couldn't be simpler.

Only thing to keep in mind is the text stops everything until it plays out. This is perfect for most super flashes and most other pause effects. However, there are special cases like Andy Bogard's Zan'ei Ryuusei Ken where the main entity (or anything else besides the text) still needs to animate.

In those cases, you can enumerate the entity collection and conditionally stop what what you need to. I wrote a simple pause function eons ago to do this. The animations I've attached show it in action in my Fatal Fury module (note how Andy finishes his arm movement while everything but the background is stopped). It's out of date (you don't need to use the "freeze" flag any more) but works none the less. With a few adjustments it should be just what you need.

ff_chronicals_0016.gif


ff_chronicals_0017.gif


Code:
void paus0001(int iToggle, int iTime){

    /*
    paus0001
    Damon Vaughn Caskey
    11022009
    Pause or unpause action for all entities except self.
    */

    void vSelf      = getlocalvar("self");                  //Caller    
    int  iETime     = openborvariant("elapsed_time");       //Current time.
    int  iMax       = openborvariant("ent_max");            //Entity count.
    int  iEntity;                                           //Loop counter.
    void vEntity;                                           //Target entity.

    for(iEntity=0; iEntity<iMax; iEntity++)
    {    
        vEntity = getentity(iEntity);                                       //Get target entity from current loop.        
        
        if (vEntity != vSelf)                                               //Not Self?
        {
            changeentityproperty(vEntity, "frozen", iToggle);               //Toggle frozen.
            changeentityproperty(vEntity, "freezetime", iETime + iTime);    //Toggle frozen time.
        }
    }    
}

Someone can teach me how use this script and how set the time and the entities exceptions?

I wanna use with some modifications.

I need the script pause all action for all entities except self and others specific.
 
I think is:

@cmd paus0001 1 120

1 should turn it on, 0 should turn it off. 120 is how much time you want it.

The code will freeze everyone except for the called (self).


@DC, about this image:
ff_chronicals_0016.gif


You set a trigger on the fall anim (or its a special fall) and check if the entity is outside the min_z and spawn the water splash, right?



 
O Ilusionista said:
You set a trigger on the fall anim (or its a special fall) and check if the entity is outside the min_z and spawn the water splash, right?

No special fall. It's a combination of scripted checks specifically so I don't have to use a special fall. Pretty complex actually, but once set up saves a lot of time since I don't have to go around adding universal fatalities to every model piecemeal. Here's another example, I like to call it the "Mr. T" fatality. It's entirely scripted.

Ff_chronicals_0004.gif


DC
 
dantedevil said:
Damon Caskey said:
A text entity will work for most cases. All you have to do is create the text with whatever animation you want, spawn it when you want the pause and you're done. Everything on screen but the text itself will pause when it spawns and un-pause when it "dies". From there it's just tweaking for visual flavor. Couldn't be simpler.

Only thing to keep in mind is the text stops everything until it plays out. This is perfect for most super flashes and most other pause effects. However, there are special cases like Andy Bogard's Zan'ei Ryuusei Ken where the main entity (or anything else besides the text) still needs to animate.

In those cases, you can enumerate the entity collection and conditionally stop what what you need to. I wrote a simple pause function eons ago to do this. The animations I've attached show it in action in my Fatal Fury module (note how Andy finishes his arm movement while everything but the background is stopped). It's out of date (you don't need to use the "freeze" flag any more) but works none the less. With a few adjustments it should be just what you need.

ff_chronicals_0016.gif


ff_chronicals_0017.gif


Code:
void paus0001(int iToggle, int iTime){

    /*
    paus0001
    Damon Vaughn Caskey
    11022009
    Pause or unpause action for all entities except self.
    */

    void vSelf      = getlocalvar("self");                  //Caller    
    int  iETime     = openborvariant("elapsed_time");       //Current time.
    int  iMax       = openborvariant("ent_max");            //Entity count.
    int  iEntity;                                           //Loop counter.
    void vEntity;                                           //Target entity.

    for(iEntity=0; iEntity<iMax; iEntity++)
    {    
        vEntity = getentity(iEntity);                                       //Get target entity from current loop.        
        
        if (vEntity != vSelf)                                               //Not Self?
        {
            changeentityproperty(vEntity, "frozen", iToggle);               //Toggle frozen.
            changeentityproperty(vEntity, "freezetime", iETime + iTime);    //Toggle frozen time.
        }
    }    
}

Someone can teach me how use this script and how set the time and the entities exceptions?

I wanna use with some modifications.

I need the script pause all action for all entities except self and others specific.

save it in a file called animscript.c

load the file with animationscript data/scripts/animscript.c  in your chara.txt

then in your animation for example in the 1st frame use:
@cmd paus0001 1 120
to freeze all entities for 120 frames.

to modify id:
Code:
 for(iEntity=0; iEntity<iMax; iEntity++)
    {    
        vEntity = getentity(iEntity);                                       //Get target entity from current loop.        
        
        if (vEntity != vSelf)                                               //Not Self?
        {
            char defaultmodel = getentityproperty(vEntity,"defaultmodel");

            if (defaultmodel == "RYU"  ||  defaultmodel == "KEN") continue;
            changeentityproperty(vEntity, "frozen", iToggle);               //Toggle frozen.
            changeentityproperty(vEntity, "freezetime", iETime + iTime);    //Toggle frozen time.
        }
    }   
in this case the script will work for all entities except RYU and KEN!! ;)
 
O Ilusionista said:
"defaultmodel"? I never heard about it, what it means?

It's the model name without any aliases.

Like, the model "Ray" spawned into a level and given the alias "John". Defaultmodel returns "Ray".

DC
 
Back
Top Bottom