Frictional Games Forum (read-only)

Full Version: Whats wrong with my script?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi!

This is a part of my script:

void OnStart()
{
AddUseItemCallback("", "bedroomkey", "mansion_1", "UsedKeyOnDoor", true);
AddEntityCollideCallback("player", "area_darkmusic", "PlayDarkMusic", true, 1);
}

void PlayDarkMusic(string &in asParent, string &in asChild, int alState)
{
PlayMusic("04_amb.ogg", true, 1.0f, 0, 0, true);
SetEntityActive("servant_grunt_1", true);
}

But there's something wrong with it. What happens is, the Grunt stays inactive and the music doesn't play.

Can you spot the bug?

Oh, and ignore the AddUseItemCallback.
AddEntityCollideCallback("Player", "area_darkmusic", "PlayDarkMusic", true, 1);

There's your issue. It should be capitalized.
Oh.. Well that was pretty simple.

Thanks for the help!
Most errors are simple to solve once you spot them Smile
heh yeah Big Grin
Again i have a script question (is there a thread for that?).

void OnStart()
{
AddUseItemCallback("", "bedroomkey", "mansion_1", "UsedKeyOnDoor", true);
AddEntityCollideCallback("Player", "area_darkmusic", "PlayDarkMusic", false, 1);
AddEntityCollideCallback("Player", "area_darkmusic", "StopDarkMusic", false, -1);
}

void StopDarkMusic(string &in asParent, string &in asChild, int alState)
{
StopMusic(3, 0);
}

void PlayDarkMusic(string &in asParent, string &in asChild, int alState)
{
PlayMusic("04_amb.ogg", true, 1.0f, 3, 0, true);
}

That is the beginning of my script. The point is that i want to have music, but only when you are in a special area. The music doesn't go away when you exit area.
I assume the script area is large and takes up the whole room? Actually, you can't set the callback for the same area twice. Make two separate areas.
You could do this, but put the area at where the player will enter/exit the room:

Code:
void OnStart()
{
     AddEntityCollideCallback("Player", "area_darkmusic", "PlayDarkMusic", false, 1);
}
void PlayDarkMusic(string &in asParent, string &in asChild, int alState)
{
     PlayMusic("04_amb.ogg", true, 1, 3, 0, true);
     AddTimer("", 2, "Func01");
}
void Func01(string &in asTimer)
{
     AddEntityCollideCallback("Player", "area_darkmusic", "StopDarkMusic", false, 1);
}
void StopDarkMusic(string &in asParent, string &in asChild, int alState)
{
     StopMusic(3, 0);
}

You can further modify the script to where it is impossible for the music to still play when the player leaves the area.
Hm. Didn't know you couldn't set two callbacks for one area. But its working now. Thanks!
Instead, you can use 'alState's to determine when player enters or escapes from the area and use them as intended.

if( alState == 1) -> This is for entering
if( alState == -1) -> This is for escaping
if( alState == 0) -> This is for both