Facebook Twitter YouTube Frictional Games | Forum | Privacy Policy | Dev Blog | Dev Wiki | Support | Gametee


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Script Help Leveldoor Problem
Togglevolt Offline
Junior Member

Posts: 10
Threads: 2
Joined: Nov 2011
Reputation: 0
#1
Leveldoor Problem

Hi!

I want my level door to be locked if you don't have a lantern in your inventory. But for some reason it doesn't work. If I don't have a lantern a message say "I need to find a Lantern". But I still teleports to the next map.

Help!

Here's my script:



void CheckLantern(string &in asEntity)
{
if(HasItem("lantern_1") == true)
SetLevelDoorLocked(asEntity, false);
else
SetLevelDoorLocked(asEntity, true);
SetMessage("Ch01Level01", "InteractLevelDoor", 0);
}


void OnEnter()
{
SetEntityPlayerInteractCallback("level_wood_1", "CheckLantern", true);
}


I have also placed the "CheckLantern" into Entity of the leveldoor, in the PlayerInteractCallback tab.
11-13-2011, 07:27 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#2
RE: Leveldoor Problem

Try this for your OnEnter function:

void OnEnter()
{
     CheckLantern("level_wood_1");
}

Tutorials: From Noob to Pro
11-13-2011, 08:07 PM
Website Find
Togglevolt Offline
Junior Member

Posts: 10
Threads: 2
Joined: Nov 2011
Reputation: 0
#3
RE: Leveldoor Problem

It works!

Only problem is, it shows the message when I start the map too. In the very beginning. "/
Any idea how to fix that?

I want it displayed only when I touch the door.
11-13-2011, 08:32 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#4
RE: Leveldoor Problem

(11-13-2011, 08:32 PM)Togglevolt Wrote: It works!

Only problem is, it shows the message when I start the map too. In the very beginning. "/
Any idea how to fix that?

I want it displayed only when I touch the door.

What kind of message are we talking about? If it's a locked message or focus message, then we can avoid using SetMessage. Otherwise, just place the SetMessage in a separate (interact) callback.

Tutorials: From Noob to Pro
11-13-2011, 08:36 PM
Website Find
Togglevolt Offline
Junior Member

Posts: 10
Threads: 2
Joined: Nov 2011
Reputation: 0
#5
RE: Leveldoor Problem

The SetMessage("Ch01Level01", "InteractLevelDoor", 0); = Maybe I should find a Lantern first.


It is displayed as wanted when I touch the door without a Lantern. But it is also displayed at the very
beginning. I have a "wake up" intro, so it makes no sence having a message telling you to find a
Lantern first when your waking up.
11-13-2011, 08:42 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#6
RE: Leveldoor Problem

(11-13-2011, 08:42 PM)Togglevolt Wrote: The SetMessage("Ch01Level01", "InteractLevelDoor", 0); = Maybe I should find a Lantern first.


It is displayed as wanted when I touch the door without a Lantern. But it is also displayed at the very
beginning. I have a "wake up" intro, so it makes no sence having a message telling you to find a
Lantern first when your waking up.

In that case we can avoid using the SetMessage function. Since the door would, i presume, be unlocked when picking up a lantern, we can safely have that message be the locked message for the level door. In the level editor specify the category and entry names for the desired level door and remove the SetMessage function from your script.

Tutorials: From Noob to Pro
11-13-2011, 08:49 PM
Website Find
Togglevolt Offline
Junior Member

Posts: 10
Threads: 2
Joined: Nov 2011
Reputation: 0
#7
RE: Leveldoor Problem

It works, but it's not perfect. If I have the lantern in my inventory, I have to touch the door twice.
The first time I touch it, nothing happens except "Maybe I should find a Lantern first." is displayed. Then the second time I touch it, I get teleported to the next level and no message is displayed.


I suppose it unlocks the first time I click it.
11-13-2011, 09:12 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#8
RE: Leveldoor Problem

You probably have the callback that unlocks the door on the level door. The interact callback should be on the lantern to unlock the level door.

Tutorials: From Noob to Pro
(This post was last modified: 11-13-2011, 10:30 PM by Your Computer.)
11-13-2011, 10:29 PM
Website Find
Togglevolt Offline
Junior Member

Posts: 10
Threads: 2
Joined: Nov 2011
Reputation: 0
#9
RE: Leveldoor Problem

I tried to put the "CheckLantern" in the interact callback tab on the lantern. Then the level door is locked even if I have the lantern on me.


CheckLantern looks like this:



void CheckLantern(string &in asEntity)
{
if(HasItem("lantern_1") == true){
SetLevelDoorLocked(asEntity, false);
}
else{
SetLevelDoorLocked(asEntity, true);
}

}


void OnEnter()
{

CheckLantern("level_wood_1");
}
11-13-2011, 11:03 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#10
RE: Leveldoor Problem

There is no reason to check if the player has a lantern within the interact callback of the lantern itself.

Tutorials: From Noob to Pro
11-14-2011, 01:20 AM
Website Find




Users browsing this thread: 1 Guest(s)