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.
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.
}
}
}