• All, I am currently in the process of migrating domain registrations. During this time there may be some intermittent outages or slowdowns. Please contact staff if you have any questions.

Damage all enemies SOUND

dantedevil

Well-known member
Hello!

Using this script courtesy of Lagarto:
Code:
void damage_all_enemies(int damage, int drop, void atk_type)
{

 	int  iEntity; 
        void vEntity;
        void self        = getlocalvar("self");
        int  iMax        = openborvariant("ent_max");   
       
        


        for(iEntity=0; iEntity<iMax; iEntity++)
        {

        
        vEntity = getentity(iEntity);
		if(getentityproperty(vEntity, "type")==openborconstant("TYPE_enemy"))
		{
		
		damageentity(vEntity,self,damage,drop,openborconstant(atk_type));

	
		}

	}
		




}

I make this special:
Code:
anim special
	loop	0
	delay	5
         landframe 15
	 offset     82 177
	bbox	0 0 0 0
	delay   12
	sound   data/chars/batman/p2.wav
 	frame	data/chars/batman/grabsp03.png
	delay   6
 	frame	data/chars/batman/grabsp02.png
        @cmd    spawn01 "fmagic" 0 0 0
	sound	data/sounds/magic.wav
 	frame	data/chars/batman/breaker00.png
	delay   8
 	frame	data/chars/batman/grabsp02.png
 	frame	data/chars/batman/grabsp03.png
	delay   15
	frame	data/chars/batman/at06.png
        jumpframe 7 4 0
	delay   6
	frame	data/chars/batman/j1.png
	delay   10
	frame	data/chars/batman/j1.png

	frame	data/chars/batman/j2.png
@script
if (frame == 9){
changeopenborvariant("slowmotion", 1);
}
if (frame == 11){
changeopenborvariant("slowmotion", 0);
}
	@end_script
	delay	9
	frame	data/chars/batman/j2.png
	delay	12
	offset	82 197
	frame	data/chars/batman/shot05.png
	frame	data/chars/batman/shot05.png
        @cmd    shooter2 "batfog" 35 55 -1 0.5 -20 0
        @cmd    leaper 0 1 0
	frame	data/chars/batman/shot06.png
	delay	35
	frame	data/chars/batman/shot06.png
	delay	999
	offset	84 157
	frame	data/chars/batman/jkb1.png
	delay	4
	offset  82 177
	frame	data/chars/batman/bthrow03.png
	delay	20
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
        hitfx   data/sounds/empty.wav
        @cmd    damage_all_enemies 100 1 500 "ATK_NORMAL35"
	sound	data/sounds/slam.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/slam.wav
	delay	32
	frame	data/chars/batman/grabsp03.png
        @cmd    spawn01 "quake" 1 1 0
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	delay	9
	frame	data/chars/batman/at01.png

The character throw a smoke bomb to cover all the screen, then hit all the enemies with an attack like the demon's rage of Akuma.
Here the problem: if the character make the special with any enemy in the screen, he throw the smoke bomb and after all the sounds of the hits play anyway.
How can make the sounds of the hits only play if at least one enemy is present
 
How can make the sounds of the hits only play if at least one enemy is present

You mean these sounds?

Code:
...
	sound	data/sounds/slam.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/slam.wav
	delay	32
	frame	data/chars/batman/grabsp03.png

How can make the sounds of the hits only play if at least one enemy is present

Let me confirm this: do you want sound to be played when enemy is present (regardless of number) OR once for each enemy?
 
Bloodbane said:
How can make the sounds of the hits only play if at least one enemy is present

You mean these sounds?

Code:
...
	sound	data/sounds/slam.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/slam.wav
	delay	32
	frame	data/chars/batman/grabsp03.png


How can make the sounds of the hits only play if at least one enemy is present

Let me confirm this: do you want sound to be played when enemy is present (regardless of number) OR once for each enemy?


1- I mean all this sounds, yes
Code:
	delay	20
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
        hitfx   data/sounds/empty.wav
        @cmd    damage_all_enemies 100 1 500 "ATK_NORMAL35"
	sound	data/sounds/slam.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/slam.wav

2- Yes, i want all the sounds be played when enemy is present (regardless of number).



I found this solution for now:

Code:
anim special
	loop	0
	delay	5
         landframe 15
	 offset     82 177
	bbox	0 0 0 0
	delay   12
	sound   data/chars/batman/p2.wav
 	frame	data/chars/batman/grabsp03.png
	delay   6
 	frame	data/chars/batman/grabsp02.png
        @cmd    spawn01 "fmagic" 0 0 0
	sound	data/sounds/magic.wav
 	frame	data/chars/batman/breaker00.png
	delay   8
 	frame	data/chars/batman/grabsp02.png
 	frame	data/chars/batman/grabsp03.png
	delay   15
	frame	data/chars/batman/at06.png
        jumpframe 7 4 0
	delay   6
	frame	data/chars/batman/j1.png
	delay   10
	frame	data/chars/batman/j1.png

	frame	data/chars/batman/j2.png
@script
if (frame == 9){
changeopenborvariant("slowmotion", 1);
}
if (frame == 11){
changeopenborvariant("slowmotion", 0);
}
	@end_script
	delay	9
	frame	data/chars/batman/j2.png
	delay	12
	offset	82 197
	frame	data/chars/batman/shot05.png
	frame	data/chars/batman/shot05.png
        @cmd    shooter2 "batfog" 35 55 -1 0.5 -20 0
        @cmd    leaper 0 1 0
	frame	data/chars/batman/shot06.png
	delay	35
	frame	data/chars/batman/shot06.png
	delay	999
	offset	84 157
	frame	data/chars/batman/jkb1.png
	delay	4
	offset  82 177
        hitfx   data/sounds/empty.wav
        @cmd    damage_all_enemies 0 1 500 "ATK_NORMAL35"
	frame	data/chars/batman/bthrow03.png
	delay	4
        @cmd ani0020 openborconstant("ANI_FOLLOW8") openborconstant

("ANI_FALL35")
	frame	data/chars/batman/bthrow03.png
	delay	20
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	delay	32
	frame	data/chars/batman/grabsp03.png
        @cmd    spawn01 "quake" 1 1 0
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	delay	9
	frame	data/chars/batman/at01.png


anim follow8
        range -1000 1000
        rangez -1000 1000
        rangea -1000 1000
	delay	4
	offset  82 177
	bbox	0 0 0 0
	frame	data/chars/batman/bthrow03.png
	delay	20
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/breaker.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat1.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat3.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/indirect.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/beat2.wav
	frame	data/chars/batman/grabsp03.png
        hitfx   data/sounds/empty.wav
        @cmd    damage_all_enemies 100 1 500 "ATK_NORMAL35"
	sound	data/sounds/slam.wav
	frame	data/chars/batman/grabsp03.png
	sound	data/sounds/slam.wav
	delay	32
	frame	data/chars/batman/grabsp03.png
        @cmd    spawn01 "quake" 1 1 0
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	frame	data/chars/batman/grabsp03.png
	delay	9
	frame	data/chars/batman/at01.png

Is there any way to modify this scripts to make only perform alternate animation if target is within range and don't check specified animation. That's be the best solution to avoid use a specific animation for each character.
Code:
int ani0020(int iAni, int iTAni){
    
	/*
	ani0020
	Damon Vaughn Caskey
	Perform alternate animation if target is within range and in specified animation.

	iAni:	Alternate attack.
	iTAni:	Target animation.
	*/

    void vSelf      = getlocalvar("self");					//Caller.                                                         
    void vOpp       = findtarget(vSelf, iAni);				//Nearest target in range of alternate attack.
	
	if (vOpp)												//Found a target?
	{
		if(getentityproperty(vOpp, "animationID") == iTAni)	//Animation match?
		{
			ani0009(vSelf, iAni, 0);						//Perform alternate attack.
			return 1;										//Return 1.
		}
	}

	return 0;												//Return 0.
}
Code:
int ani0009(void vTarget, int iAni, int iType)
{
    //Set animation and return 1 if valid.

	if (!vTarget) vTarget = getlocalvar("self");

    if (getentityproperty(vTarget, "animvalid", iAni))          //Animation valid?
    {
        if (iType == -1)                                        //Type -1?
        {
            changeentityproperty(vTarget, "animation", iAni);   //Set animation with entity property.
        }
        else
        {
            performattack(vTarget, iAni, iType);                //Set animation with perform attack command.
        }
        return 1;                                               //Return 1.        
    }
    return 0;
}
 
Is there any way to modify this scripts to make only perform alternate animation if target is within range and don't check specified animation.
Just remove the animation check. The code is commented, you need to make some effort...people doesn't like to simply give the full code.
And, trust me: this is bad TO YOU. You need to understand HOW a script works, not just a script which works.
 
Thanks!

I try to solve this along, but i can't.
I remove the part of animation check (i think), but don't work.
Believe me, i try to do my best, but i cant.
Recently i create a method via script to make a doble grab like batman returns, and works perfect.
Soon i post the method after check all.

So, for this don't know exactly what remove to eliminate animation check, sorry.
I try many times without success.

Thanks anyway.
 
int ani0020(int iAni, int iTAni){
   
/*
ani0020
Damon Vaughn Caskey
Perform alternate animation if target is within range and in specified animation.

iAni: Alternate attack.
iTAni: Target animation.
*/

    void vSelf      = getlocalvar("self"); //Caller.                                                       
    void vOpp      = findtarget(vSelf, iAni); //Nearest target in range of alternate attack.

if (vOpp) //Found a target?
{
ani0009(vSelf, iAni, 0); //Perform alternate attack.
return 1; //Return 1.
}

return 0; //Return 0.
}
 
Thanks, i know the modification is in int ani0020.
But i dont wath lines remove,
I try with a few ways but OpenBor Crash.
 
Thanks to all, but i can't remove the animation check with success.
I have my solution for now, this make me do more work but runs ok.
 
dantedevil said:
Thanks, i know the modification is in int ani0020.
But i dont wath lines remove,
I try with a few ways but OpenBor Crash.

have you tried what I've posted? Do you have the ani0009 function?
 
Yes, i try with the script you posted, and have the ani0009 function.

Now the animcheck not checking and not check if enemy is present, because the animation ANI_FOLLOW8 plays ever, with or without enemies.
 
O Ilusionista said:
Post your ani0009 here, let me try to help you

Here there
Code:
int ani0009(void vTarget, int iAni, int iType)
{
    //Set animation and return 1 if valid.

	if (!vTarget) vTarget = getlocalvar("self");

    if (getentityproperty(vTarget, "animvalid", iAni))          //Animation valid?
    {
        if (iType == -1)                                        //Type -1?
        {
            changeentityproperty(vTarget, "animation", iAni);   //Set animation with entity property.
        }
        else
        {
            performattack(vTarget, iAni, iType);                //Set animation with perform attack command.
        }
        return 1;                                               //Return 1.        
    }
    return 0;
}
 
Back
Top Bottom