Making Punch.wav with Silence in Script, in Action with Attack Button

maxman

Well-known member
I have one specific character who's in his weapon mode. But the problem is that there's punch.wav that's heard when he's summoning helpers to attack with attack button. I tried to volume down the default punch.wav from being heard, but you can hear it since punch.wav has a sound. What I want is to have only one specific character to have no sound heard with punch.wav while others can do anim attack1 with punch.wav being heard.

C:
anim    attack1
@script
void punch = loadsample("data/sounds/punch.wav");

if(frame == 0){
    playsample(punch, 0, 0, 0, 100, 0);
    setlocalvar("noSound", 1);
}

if(frame >= 1){
    setlocalvar("noSound", NULL());
}
@end_script
    energycost    20 1 0
    @cmd    mpcost 20
       @cmd aniLimit "ANI_CANT" 0 20
    custentity    bom
    spawnframe    2 10 0 1 0
    delay    2
    offset    66 114
    bbox    48 52 41 58
    frame    data/chars/beast/w1.png
    delay    10
    sound    data/chars/beast/selected.wav
    @cmd    invincibleentity getlocalvar("self") 1000
    frame    data/chars/beast/w1.png
    delay    20
    frame    data/chars/beast/w1.png

How can I make punch.wav not to be heard with anim attack for one specific character while I have it heard for others? I'm not going to make no sound in punch.wav like empty.wav because it's gonna put me a lot more work to add punch.wav like sounds for every character's anim attack.
 
I have one specific character who's in his weapon mode. But the problem is that there's punch.wav that's heard when he's summoning helpers to attack with attack button. I tried to volume down the default punch.wav from being heard, but you can hear it since punch.wav has a sound. What I want is to have only one specific character to have no sound heard with punch.wav while others can do anim attack1 with punch.wav being heard.

C:
anim    attack1
@script
void punch = loadsample("data/sounds/punch.wav");

if(frame == 0){
    playsample(punch, 0, 0, 0, 100, 0);
    setlocalvar("noSound", 1);
}

if(frame >= 1){
    setlocalvar("noSound", NULL());
}
@end_script
    energycost    20 1 0
    @cmd    mpcost 20
       @cmd aniLimit "ANI_CANT" 0 20
    custentity    bom
    spawnframe    2 10 0 1 0
    delay    2
    offset    66 114
    bbox    48 52 41 58
    frame    data/chars/beast/w1.png
    delay    10
    sound    data/chars/beast/selected.wav
    @cmd    invincibleentity getlocalvar("self") 1000
    frame    data/chars/beast/w1.png
    delay    20
    frame    data/chars/beast/w1.png

How can I make punch.wav not to be heard with anim attack for one specific character while I have it heard for others? I'm not going to make no sound in punch.wav like empty.wav because it's gonna put me a lot more work to add punch.wav like sounds for every character's anim attack.
You could try to change the default sample names to others not used natively by the engine, otherwise it will always be played.
Then, you can play the sample with scripts easily without interference from the native ones.
 
You could try to change the default sample names to others not used natively by the engine, otherwise it will always be played.
How do I do this? Do I need to rename punch.wav, which has sound, into something else, and have one empty sound file to be renamed to punch.wav?

As in this
- punch.wav with sound to be renamed to puncht.wav or whatever
- Rename an empty file sound like null.wav or empty.wav into punch.wav
 
Last edited:
How do I do this? Do I need to rename punch.wav, which has sound, into something else, and have one empty sound file to be renamed to punch.wav?
Just rename the punch.wav to any other name, then the engine will not detect it. But in your scripts you must put the correct sample name.
 
Maybe I could use an update script for certain player entities that will use it. The only one that's not gonna use it is one certain player character with one specific weapon mode.

I could try this temporarily. If this works, I'll create a new .c file for this.

Code:
script @script
void main(){
  void self = getlocalvar("self");
   void ani = getentityproperty(self, "animationid");
   void punch = loadsample("data/sounds/puncht.wav");
   int vol = openborvariant("effectvol");

   if(ani == openborconstant("ANI_ATTACK")){
      playsample(punch, 0, vol, vol, 100, 0);
   }
}
@end_script
 
Maybe I could use an update script for certain player entities that will use it. The only one that's not gonna use it is one certain player character with one specific weapon mode.

I could try this temporarily. If this works, I'll create a new .c file for this.

Code:
script @script
void main(){
  void self = getlocalvar("self");
   void ani = getentityproperty(self, "animationid");
   void punch = loadsample("data/sounds/puncht.wav");
   int vol = openborvariant("effectvol");

   if(ani == openborconstant("ANI_ATTACK")){
      playsample(punch, 0, vol, vol, 100, 0);
   }
}
@end_script
I didn't understand the logic, do you want to cancel the native sample with scripts or do you want to play it only in some situations?
 
It worked, but when I use it, this sound of my given name starts to sound like it's got an echo. Maybe it's because it's using update entity script like I put there? Also, when I switch to weapon mode, I hear this little "distort" sound.

I didn't understand the logic, do you want to cancel the native sample with scripts or do you want to play it only in some situations?
Play it only in some situations as in...? Like others perform anim attack1 with sound, but only one player character does the same, but without sound?

OK. Here's what I'm trying to explain, using some examples this time. Let's say, for example, Axel and other playable characters have sound and they perform anim attack1 like they have punch.wav sound. Skate does the same attack animation with sound as player type. But whenever it comes to his weapon mode, you don't hear a sound from him every time he does it. I'm not talking about using sound. It's like Kula as she performs attack1 anim.

Code:
anim attack1
    loop    0
    delay    4
    bbox    15 0 19 99
    offset    23 101
    frame    data/chars/kula/a1-000.gif
    bbox    24 5 19 94
    move    10
    offset    33 101
    frame    data/chars/kula/a1-001.gif
    attack    59 19 39 16 5
    bbox    41 7 16 92
    move    10
    offset    43 101
    frame    data/chars/kula/a1-002.gif
    move    0
    frame    data/chars/kula/a1-003.gif
    attack    0 0 0 0 0
    bbox    35 5 19 94
    offset    33 101
    move    -10
    delay    2
    frame    data/chars/kula/a1-004.gif
    offset    23 101
    move    -10
    frame    data/chars/kula/a1-005.gif

I'm trying not to let that sound be heard every time he does anim attack1 in weapon mode, while allowing it to play its sound as player type.
 
It worked, but when I use it, this sound of my given name starts to sound like it's got an echo. Maybe it's because it's using update entity script like I put there? Also, when I switch to weapon mode, I hear this little "distort" sound.


Play it only in some situations as in...? Like others perform anim attack1 with sound, but only one player character does the same, but without sound?

OK. Here's what I'm trying to explain, using some examples this time. Let's say, for example, Axel and other playable characters have sound and they perform anim attack1 like they have punch.wav sound. Skate does the same attack animation with sound as player type. But whenever it comes to his weapon mode, you don't hear a sound from him every time he does it. I'm not talking about using sound. It's like Kula as she performs attack1 anim.

Code:
anim attack1
    loop    0
    delay    4
    bbox    15 0 19 99
    offset    23 101
    frame    data/chars/kula/a1-000.gif
    bbox    24 5 19 94
    move    10
    offset    33 101
    frame    data/chars/kula/a1-001.gif
    attack    59 19 39 16 5
    bbox    41 7 16 92
    move    10
    offset    43 101
    frame    data/chars/kula/a1-002.gif
    move    0
    frame    data/chars/kula/a1-003.gif
    attack    0 0 0 0 0
    bbox    35 5 19 94
    offset    33 101
    move    -10
    delay    2
    frame    data/chars/kula/a1-004.gif
    offset    23 101
    move    -10
    frame    data/chars/kula/a1-005.gif

I'm trying not to let that sound be heard every time he does anim attack1 in weapon mode, while allowing it to play its sound as player type.
According to what I understood, the level of customization you want to achieve can't be reached using native sample system like the punch.wav. Instead, you need to declare (or not) the "sound" function in every attack1 animation, or you can use a fully scripted sound system too.
Even if you use the stopchannel to stop undesired samples in defined situations, would it still be possible to hear the beginning of the sound playing.
 
I'm using this script in player's header for having the sound to play in anim attack1. There's still an echo sound from it, even though I use a different name other than punch.wav, which is now an empty sound.

C:
script @script
void main(){
  void self = getlocalvar("self");
   void ani = getentityproperty(self, "animationid");
   void punch = loadsample("data/sounds/puncht.wav");
   int vol = openborvariant("effectvol");


   if(ani == openborconstant("ANI_ATTACK1")){
      playsample(punch, 0, 120, 120, 100, 0);
   }
}
@end_script


anim    attack1
    delay    5
    offset    66 114
    hitflash    flash3
    bbox    34 79 63 36
    frame    data/chars/beast/a6-1.png
    bbox    56 50 41 67
    frame    data/chars/beast/a6-2.png
    bbox    76 43 52 75
    sound    data/chars/beast/a3.wav
    delay    10
    attack    77 35 57 62 6 0 0 0 0 0
    frame    data/chars/beast/a6-3.png
    attack    0 0 0 0 0 0 0 0 0 0
    delay    5
    bbox    56 50 41 67
    frame    data/chars/beast/a6-2.png
    bbox    34 79 63 36
    delay    7
    frame    data/chars/beast/a6-2.png

This is what I'm using now for weapon mode.

C:
anim    attack1
@script
if(frame == 0)
{
    stopchannel(querychannel(openborvariant("sample_play_id")));
}
@end_script
    energycost    20 1 0
    @cmd    mpcost 20
       @cmd aniLimit "ANI_CANT" 0 20
    custentity    bom
    spawnframe    2 10 0 1 0
    delay    2
    offset    66 114
    bbox    48 52 41 58
    frame    data/chars/beast/w1.png
    delay    10
    sound    data/chars/beast/selected.wav
    @cmd    invincibleentity getlocalvar("self") 1000
    frame    data/chars/beast/w1.png
    delay    20
    frame    data/chars/beast/w1.png

I put this script in the player's header, but not the weapon mode. There's still an echo sound in this script, even though I have punch.wav as an empty sound.

The log says something about querychannel, which causes an error, and I'm using this particular v3 build.

My apologies, Kratus. I made somewhat a bit of a lengthy post, explaining about this issue, but I accidentally deleted everything from what I was going to post/explain (after deleting the log in this comment box after post limit).
 

Attachments

Last edited:
I'm using this script in player's header
So far I know this method will not work, inline scripts must be placed in an animation, like after the "anim attack1" declaration. I did a quick test here to confirm and didn't work.
And I didn't understand why are you detecting animations if you are using inline scripts, which already works inside animations.
To use samples inside update scripts, you need to use variables as flags in order to play samples once, I already posted something in this aspect in other of your posts (if I'm not wrong was related to a sound during a full mp).

I put this script in the player's header, but not the weapon mode. There's still an echo sound in this script, even though I have punch.wav as an empty sound.
The log says something about querychannel, which causes an error, and I'm using this particular v3 build.
The stopchannel() in conjunction with querychannel()+sample_play_id will work "after" a sample is played, and can't be used to prevent sounds from being played and this is why you will usually hear the beginning of the sound.

1716872646385.png
 
So far I know this method will not work, inline scripts must be placed in an animation, like after the "anim attack1" declaration. I did a quick test here to confirm and didn't work.
And I didn't understand why are you detecting animations if you are using inline scripts, which already works inside animations.
To use samples inside update scripts, you need to use variables as flags in order to play samples once, I already posted something in this aspect in other of your posts (if I'm not wrong was related to a sound during a full mp).
Thank you, Kratus. You are right. I got both of them working successfully using variables as flags. However, for the player's side, I use it to play it only once for it to be heard. It's a good step, and now I'm on to the next step. How can I allow the sound to play every time players perform anim attack1 right after doing it once?
 
Is there some nice way to preload all script samples so theres no stalling when its loading them to memory when script runs in the middle of the fight ? Its a bit noticeable.
Any way to preload samples to memory by for example having them in loaded models animation but the animation is never used and just for sample loading ?
 
Is there some nice way to preload all script samples so theres no stalling when its loading them to memory when script runs in the middle of the fight ? Its a bit noticeable.
Any way to preload samples to memory by for example having them in loaded models animation but the animation is never used and just for sample loading ?

I warned y'all repeatedly about loading new samples in the middle of active gameplay for exactly this reason.

There are lots of ways you can pre-load. There's a loading.c script you can use, or you could load a dummy model + animation with all the samples you plan to use. One big one that loads globally, or smaller ones per level that you unload. Depends on your design and how much you care about samples sitting in memory.

There are other techniques too, but those are the two main ones. I prefer to put everything into a nested array in loading, so I can reference it with my own system of constants and and randomizing, but that takes a lot of of front work to set up.

DC
 
Is there some nice way to preload all script samples so theres no stalling when its loading them to memory when script runs in the middle of the fight ? Its a bit noticeable.
Any way to preload samples to memory by for example having them in loaded models animation but the animation is never used and just for sample loading ?
I solved this on my games by making an empty animation where I drag all my wavs to the same animation
1716919819757.png
and problem solved.
 
How can I allow the sound to play every time players perform anim attack1 right after doing it once?
Once you are using it in the updated.c script, you can add a condition to reset the flag variable to NULL() in any animation different from anim attack1. But why are you trying to use it in the updated.c instead of declaring through a sound function in the animation?

Is there some nice way to preload all script samples so theres no stalling when its loading them to memory when script runs in the middle of the fight ? Its a bit noticeable.
Any way to preload samples to memory by for example having them in loaded models animation but the animation is never used and just for sample loading ?
Based on some @DCurrent and @O Ilusionista tips I received some time ago, in my case I added the loadsample() function for every sound to my global assets loading process, which runs during the title screen using the updated.c event. Then I set a variable as a flag in the end of the script to run once.

1716923444960.png
 
Once you are using it in the updated.c script, you can add a condition to reset the flag variable to NULL() in any animation different from anim attack1. But why are you trying to use it in the updated.c instead of declaring through a sound function in the animation?
I use flags as variables, but I'm not using updated.c directly, unless you are pointing out the script line in the character header.

I was using this script for weapon mode a while back.

C:
script @script
void main(){
  void self = getlocalvar("self");
   void ani = getentityproperty(self, "animationid");
   void punch = loadsample("data/sounds/puncht.wav");
   int vol = openborvariant("effectvol");

   if(ani == openborconstant("ANI_ATTACK1")){
    if(getlocalvar("soundTest") == NULL()){
        //playsample(punch, 0, vol, vol, 100, 0);
        setlocalvar("soundTest", NULL());
    }
   }
}
@end_script

anim    attack1 #This animation is for having an empty sound instead of hearing punch.wav
    energycost    20 1 0
    @cmd    mpcost 20
       @cmd aniLimit "ANI_CANT" 0 20
    custentity    bom
    spawnframe    2 10 0 1 0
    delay    2
    offset    66 114
    bbox    48 52 41 58
    frame    data/chars/beast/w1.png
    delay    10
    sound    data/chars/beast/selected.wav
    @cmd    invincibleentity getlocalvar("self") 1000
    frame    data/chars/beast/w1.png
    delay    20
    frame    data/chars/beast/w1.png

But still, even if I remove it from weapon mode and use this script for players for sound, the sound only plays once. That's it.

C:
script @script
void main(){
   void self = getlocalvar("self");
   void ani = getentityproperty(self, "animationid");
   void punch = loadsample("data/sounds/puncht.wav");
   int vol = openborvariant("effectvol");

   if(ani == openborconstant("ANI_ATTACK1")){
    if(getlocalvar("soundTest") == NULL()){
        playsample(punch, 0, vol, vol, 100, 0);
        setlocalvar("soundTest", 1);
    }
   }
}
@end_script


anim    attack1 #This animation should have sound in it
    delay    5
    offset    66 114
    hitflash    flash3
    bbox    34 79 63 36
    frame    data/chars/beast/a6-1.png
    bbox    56 50 41 67
    frame    data/chars/beast/a6-2.png
    bbox    76 43 52 75
    sound    data/chars/beast/a3.wav
    delay    10
    attack    77 35 57 62 6 0 0 0 0 0
    frame    data/chars/beast/a6-3.png
    attack    0 0 0 0 0 0 0 0 0 0
    delay    5
    bbox    56 50 41 67
    frame    data/chars/beast/a6-2.png
    bbox    34 79 63 36
    delay    7
    frame    data/chars/beast/a6-2.png

Any suggestion on what to change? Maybe I put it in anim attack1 directly like this?

C:
anim    attack1 #This animation should have sound in it
@script
if(frame == 0){
   void punch = loadsample("data/sounds/puncht.wav");
   if(getlocalvar("soundTest") == NULL()){
      playsample(punch, 0, 120, 120, 100, 0);
      setlocalvar("soundTest", 1);
   }
}
@end_script
    delay    5
    offset    66 114
    hitflash    flash3
    bbox    34 79 63 36
    frame    data/chars/beast/a6-1.png
    bbox    56 50 41 67
    frame    data/chars/beast/a6-2.png
    bbox    76 43 52 75
    sound    data/chars/beast/a3.wav
    delay    10
    attack    77 35 57 62 6 0 0 0 0 0
    frame    data/chars/beast/a6-3.png
    attack    0 0 0 0 0 0 0 0 0 0
    delay    5
    bbox    56 50 41 67
    frame    data/chars/beast/a6-2.png
    bbox    34 79 63 36
    delay    7
    frame    data/chars/beast/a6-2.png
 
I use flags as variables, but I'm not using updated.c directly, unless you are pointing out the script line in the character header.

I was using this script for weapon mode a while back.

C:
script @script
void main(){
void self = getlocalvar("self");
void ani = getentityproperty(self, "animationid");
void punch = loadsample("data/sounds/puncht.wav");
int vol = openborvariant("effectvol");

if(ani == openborconstant("ANI_ATTACK1")){
if(getlocalvar("soundTest") == NULL()){
//playsample(punch, 0, vol, vol, 100, 0);
setlocalvar("soundTest", NULL());
}
}
}
@end_script

anim attack1 #This animation is for having an empty sound instead of hearing punch.wav
energycost 20 1 0
@cmd mpcost 20
@cmd aniLimit "ANI_CANT" 0 20
custentity bom
spawnframe 2 10 0 1 0
delay 2
offset 66 114
bbox 48 52 41 58
frame data/chars/beast/w1.png
delay 10
sound data/chars/beast/selected.wav
@cmd invincibleentity getlocalvar("self") 1000
frame data/chars/beast/w1.png
delay 20
frame data/chars/beast/w1.png
But still, even if I remove it from weapon mode and use this script for players for sound, the sound only plays once. That's it.
Like I mentioned before, inline animation scripts must be after an animation declaration, same as you did in the last script of your previous post.

If I understood correctly, you put your sound script in the middle of the character file, outside of any animation and after the character's header, right? I never saw this method working before and there's no mention in the manual about it. For the engine, it's as if the script is nowhere.

Based on how weapon models works, usually the animations are copied from the default model to the weapon model in case you don't declare the same animation again inside the weapon model. A simple solution to prevent a sample from not being played in the weapon model is achieved by simply declaring the same animation in both, but in the weapon model you will remove any sound command.

Default model
C:
anim attack1
    fastattack 1
    jugglecost 4
    forcedirection -1
    otg 1
    loop    0
    delay    4
    offset    62 125
    bbox    50 55 23 74
    @cmd hitfx "data/sounds/sor3_hit.wav"
    @cmd sound "data/sounds/sor3_attack.wav"
    frame    data/chars/heroes/axel/sor3/a100.png
    attack 62 61 42 13 2 0 0 0 5 12
    frame    data/chars/heroes/axel/sor3/a101.png
    attack 0 0 0 0 0 0 0 0 0 0
    frame    data/chars/heroes/axel/sor3/a100.png

Weapon model
C:
anim attack1
    fastattack 1
    jugglecost 4
    forcedirection -1
    otg 1
    loop    0
    delay    4
    offset    62 125
    bbox    50 55 23 74
    frame    data/chars/heroes/axel/sor3/a100.png
    attack 62 61 42 13 2 0 0 0 5 12
    frame    data/chars/heroes/axel/sor3/a101.png
    attack 0 0 0 0 0 0 0 0 0 0
    frame    data/chars/heroes/axel/sor3/a100.png

However, I suspect you are trying to avoid declaring the sound in every animation for all characters, right? You can make some kind of global sound event using update scripts, then you can call the same code in all character headers at the same time.
But once you still need to edit every character header to make it happen, you can also declare the sound command directly in every attack1 animation for all characters.

I'm still a bit lost trying to understand your goal, I don't know if you are trying to save time avoiding editing every character or if you are focusing on a customizable script. I suggest checking if native functions could solve your problem, scripts can be powerful but sometimes native features can be better.
 
However, I suspect you are trying to avoid declaring the sound in every animation for all characters, right? You can make some kind of global sound event using update scripts, then you can call the same code in all character headers at the same time.
But once you still need to edit every character header to make it happen, you can also declare the sound command directly in every attack1 animation for all characters.
That's right, Kratus. Originally, I had anim freespecial7 as a command for the attack button only for a specific weapon mode character. But that was before I started to rename it as anim attack1. Plus, it had atchain 0 in the header since you don't want punch.wav sound to be heard, let alone other players (including him) use that. It was also before I changed it to atchain 1 for anim attack1. For him, it was an exception not to hear punch.wav for his weapon mode (only).

Original before the name change for weapon:
Code:
com a freespecial7 #Normal Attack

anim    freespecial7
    energycost    20 1 0
    @cmd    mpcost 20
       @cmd aniLimit "ANI_CANT" 0 20
    custentity    bom
    spawnframe    2 10 0 1 0
    delay    2
    offset    66 114
    bbox    48 52 41 58
    frame    data/chars/beast/w1.png
    delay    10
    sound    data/chars/beast/selected.wav
    @cmd    invincibleentity getlocalvar("self") 1000
    frame    data/chars/beast/w1.png
    delay    20
    frame    data/chars/beast/w1.png

But every time I started using it and consumed his MP until it ran out, that's when it started to crash. Maybe because pressing the attack button is always mandatory for punch.wav to be heard if anim attack1 is included? If I use atchain 0 without anim attack1, how can I avoid the crash when it comes to MP consumption? This is why I wanted to have all players perform with punch.wav and let one specific weapon mode character to not let that punch.wav sound play in a different animation with attack button.

I worry about the crash when it comes to atchain 0 without using anim attack1. Using atchain 0 seems perfect for avoiding anim attack, but when it comes to MP consumption with energycost and mpcost, it becomes troublesome. Sorry for making some kind of misunderstanding for you.

EDIT: The crash became the main reason I started to change the animation names and commands.
 
Last edited:
That's right, Kratus. Originally, I had anim freespecial7 as a command for the attack button only for a specific weapon mode character. But that was before I started to rename it as anim attack1. Plus, it had atchain 0 in the header since you don't want punch.wav sound to be heard, let alone other players (including him) use that. It was also before I changed it to atchain 1 for anim attack1. For him, it was an exception not to hear punch.wav for his weapon mode (only).

Original before the name change for weapon:
Code:
com a freespecial7 #Normal Attack

anim    freespecial7
    energycost    20 1 0
    @cmd    mpcost 20
       @cmd aniLimit "ANI_CANT" 0 20
    custentity    bom
    spawnframe    2 10 0 1 0
    delay    2
    offset    66 114
    bbox    48 52 41 58
    frame    data/chars/beast/w1.png
    delay    10
    sound    data/chars/beast/selected.wav
    @cmd    invincibleentity getlocalvar("self") 1000
    frame    data/chars/beast/w1.png
    delay    20
    frame    data/chars/beast/w1.png

But every time I started using it and consumed his MP until it ran out, that's when it started to crash. Maybe because pressing the attack button is always mandatory for punch.wav to be heard if anim attack1 is included? If I use atchain 0 without anim attack1, how can I avoid the crash when it comes to MP consumption? This is why I wanted to have all players perform with punch.wav and let one specific weapon mode character to not let that punch.wav sound play in a different animation with attack button.

I worry about the crash when it comes to atchain 0 without using anim attack1. Using atchain 0 seems perfect for avoiding anim attack, but when it comes to MP consumption with energycost and mpcost, it becomes troublesome. Sorry for making some kind of misunderstanding for you.

EDIT: The crash became the main reason I started to change the animation names and commands.
Sometimes it's better to build a new boat from scratch instead of trying to fix the countless damages the old one has.

It seems that you are having many issues in the same situation (atchain>mpcost>samples>crashes). I suggest first focus on developing the concept of the feature you want to add and after that you can define what method you will use to achieve the goal.

Let's treat the punch.wav first. What we already know is, the engine will play it even without any sound declaration in your models. Once you can't prevent it from being played (even if using stopchannel) and there's some characters that must avoid it, you need to declare samples somewhere, be it through native sound command or with scripts.

Next, you need to decide if you want a global sound system or if you will declare every sound individually. In the case of the global system, same as I already said, you can develop an unique update script and then call it in every character header. Keep in mind that you will need to use variables as flags in order to play samples once.

Having the sound system planned, now you go to the other issues.
 
Back
Top Bottom