Frictional Games Forum (read-only)
Stop a looping sound - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods (https://www.frictionalgames.com/forum/forum-35.html)
+--- Thread: Stop a looping sound (/thread-4831.html)



Stop a looping sound - Jordo76 - 09-29-2010

Hi i'm doing my next map and wanted to know : "How to stop a looping sound ?"
I tried StopSound but failed and failed...
Can someone help me please ?


RE: Stop a looping sound - Equil - 09-30-2010

Open the .snt file of the sound you want looping stop on with notepad or a similar text program, find the value "Loop=" and change it to false.


RE: Stop a looping sound - Jordo76 - 09-30-2010

No i want the sound to be looped (already is) but stop when i want it


RE: Stop a looping sound - Equil - 09-30-2010

You need to use a timerloop such as this:

Code:
void BeginCreak(string &in asTimer)
{

   int iCreak = RandFloat(1, 4);
   float fCreak = RandFloat(5.5f, 12.5f);
  
   PlaySoundAtEntity("creak1"+iCreak, "scare_wood_creak_mix.snt", "AreaCreak_"+iCreak, 0.0f, false);
  
   AddTimer("creak", 15.0f+fCreak, "BeginCreak");
  
   AddDebugMessage("Now Creaking in AreaCreak_: "+iCreak, false);
  
}

This will randomize when the sound plays and it's location, assuming you have setup several script areas(1 to 4) named "AreaCreak_#".


RE: Stop a looping sound - Jordo76 - 09-30-2010

Thx for the information but it's not the awnser :/
I will try another explication :
I made a script that make a flashback and start a sound (set to loop in the .snt) so it's looping but i can't stop it when the flashback is over...


RE: Stop a looping sound - Pandemoneus - 09-30-2010

Show your code. Tongue


RE: Stop a looping sound - Jordo76 - 09-30-2010

Here it is (May contain spoilers on the last level from the Darkness,because it's the script from the last map of "The Darkness",i wanted to try)

Spoiler below!

Code:
void OnStart()
{
AddEntityCollideCallback("Player", "AreaFlashback", "CollideAreaFlashback", true, 1);
AddEntityCollideCallback("crowbar_joint_1", "BreakDoor", "CollideAreaBreakDoor", true, 1);
AddUseItemCallback("crowbarondoor", "crowbar_1", "UseCrowbar","UseCrowbarOnDoor", true);
}

void CollideAreaFlashback(string &in asParent, string &in asChild, int alState)
{
StartEffectFlash(2,1,2);
AddTimer("FlashbackTimer",2.0f,"FlashbackTimer");
SetSwingDoorLocked("DoorFlashback",true,false);
}

void FlashbackTimer(string &in asTimer)
{
if(asTimer == "FlashbackTimer")
{
    SetEntityActive("crowbar_1", true);
    SetEntityActive("TortureMan", true);
    for(int i=1;i<=4;i++)
        SetLampLit("candle_floor_" + i, true, false);
AddTimer("FlashbackTimer2",2.0f,"FlashbackTimer");
}
if(asTimer == "FlashbackTimer2")
{
    PlaySoundAtEntity("24mb01","24_mb_01", "AreaBreakEffect", 0, false);
}
if(asTimer == "FlashbackTimer3")
{
    SetEntityActive("TortureMan", false);
    SetEntityActive("crowbar_dyn_1", false);
    for(int i=1;i<=4;i++)
        SetLampLit("candle_floor_" + i, false, false);
DestroyParticleSystem("breakps");

}
}
void UseCrowbarOnDoor(string &in asItem, string &in asEntity)
{
StopSound("24mb01",1);
    AddTimer(asEntity, 0.2, "TimerSwitchShovel");    
    PlayPropAnimation("TortureMan", "squirm", 0.2f, true, "PrisonerSquirmOver");
    PlaySoundAtEntity("pickupcrow","attack_claw_hit01.snt", "Player", 0.05, false);
    CreateParticleSystemAtEntity("breakps", "ps_blood_tiny_splash", "AreaBreakEffect", false);

    RemoveItem(asItem);
    PlaySoundAtEntity("24mb03","24_mb_03", "AreaBreakEffect", 0, false);
}
void TimerSwitchShovel(string &in asTimer)
{
    PlaySoundAtEntity("attachshovel","puzzle_place_jar.snt", asTimer, 0, false);
    
    SetEntityActive("crowbar_joint_1", true);
}
void CollideAreaBreakDoor(string &in asParent, string &in asChild, int alState)
{
StopSound("24mb03",1);
    PlaySoundAtEntity("break","attack_claw_hit03", "AreaBreakEffect", 0, false);
    PlaySoundAtEntity("24mb","24_mb_04", "AreaBreakEffect", 0, false);
    CreateParticleSystemAtEntity("breakps", "ps_blood_big_splash", "AreaBreakEffect", false);
    CreateParticleSystemAtEntity("breakps", "ps_blood_constant_splash", "AreaBreakEffect", false);
    SetEntityActive("crowbar_joint_1", false);
    SetEntityActive("crowbar_dyn_1", true);
StartEffectFlash(2,1,3);
AddTimer("FlashbackTimer3",3.0f,"FlashbackTimer");    
}


As you can see after "void UseCrowbarOnDoor" and "void CollideAreaBreakDoor" i tried the sound string name for stopsound,it didn't worked,
I tried string name
.snt name
sound name with .ogg
sound name without .snt
Area Name
Nothing worked


RE: Stop a looping sound - Pandemoneus - 09-30-2010

Hm... looks fine. No idea what is wrong.


RE: Stop a looping sound - Equil - 10-01-2010

Try this:

Code:
void CollideAreaBreakDoor(string &in asParent, string &in asChild, int alState)
{

   if(alState == 1) {
  
StopSound(asChild+"24mb03", 1);
    PlaySoundAtEntity("break","attack_claw_hit03", "AreaBreakEffect", 0, false);
    PlaySoundAtEntity("24mb","24_mb_04", "AreaBreakEffect", 0, false);
    CreateParticleSystemAtEntity("breakps", "ps_blood_big_splash", "AreaBreakEffect", false);
    CreateParticleSystemAtEntity("breakps", "ps_blood_constant_splash", "AreaBreakEffect", false);
    SetEntityActive("crowbar_joint_1", false);
    SetEntityActive("crowbar_dyn_1", true);
StartEffectFlash(2,1,3);
AddTimer("FlashbackTimer3",3.0f,"FlashbackTimer");

      }
  
}



RE: Stop a looping sound - Jordo76 - 10-01-2010

It don't work,the crowbar don't collide with BreakDoor anymore :/
I don't know what is wrong

Edit : I make it worked,it collide,but don't stop the sound,like there wasn't aschild and alstate,like before