Frictional Games Forum (read-only)

Full Version: If HasItem Help
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Have a script area set up in a dark room. When the Player enters the script area without the lantern in their inventory then I want to play the voice over warning the Player to turn around.

Conversely, if the Player has the lantern when entering the script area, I want the level door to 'unlock'.

Here is the script I have, I'm not sure if it will even work, but the only error I'm getting in 'Unexpected end of line'.

void OnStart()
{
AddEntityCollideCallback("Player", "ScriptArea_needlight", "Needlantern", "true", 1);
}

void Needlantern(string& asParentName, string& asChildName, string& asFunction, bool abDeleteOnCollide, int alStates)
{
if (bool HasItem"lantern")
{
SetLevelDoorLocked("leveldoortomain", false);
}
else if (bool HasItem"lantern")
{
PlaySoundAtEntity("", "VOICEOVERFILEHERE.ogg", "Player", 0, false);
}
}

Thankful for any comments.
You used the function "GetSomething" wrong. The "bool" means that the function will retrieve a true or false result. There are also "int" and "float" which are for numbers.

To work it should look like
if( HasItem("lantern") == true ) ///or if( HasItem("lantern") == false ) depending on what you want to do
{
///rest of stuff
}
Don't put "bool" in front of it. It's just there to show you what it returns. In this case a boolean.

if(HasItem("lantern") == true)
{
SetLevelDoorLocked("leveldoortomain", false);
} else {
PlaySoundAtEntity("", "VOICEOVERFILEHERE.ogg", "Player", 0, false);
}