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 How to make a "Wait" in the script.
iFondue Offline
Junior Member

Posts: 28
Threads: 6
Joined: Apr 2012
Reputation: 0
#1
How to make a "Wait" in the script.

Hello, I'm pretty new to this forum and i have a question. Huh


I already searched in the forum for answers, but I didn't find anything.
I know that the title is a little complicated, but I am going to explain what I mean... Blush

Idea: I am working on a custom story for a week now, but now I am stuck at this problem. I made the player look at the corridor (StartPlayerLookAt). Now I want to light always 2 lamps, lamp after lamp when i enter "ScriptArea_1". But i want that between the lightning of the lamps is always like 0.5 seconds...

I know that i have to do that with a timer (I think? Big Grin), but I don't know how....

Could someone expain? Tongue


This is my script:


Run when entering map
void OnEnter()

{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "LightOn" , true , 1);
}


void LightOn(string &in asParent, string &in asChild, int alState)
{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "LightOn" , true , 1);
StartPlayerLookAt("LookFrame", 20, 50, "");
SetLampLit("candlestick_1", true, true);
SetLampLit("candlestick_2", true, true);

Wait 0.5 Seconds

Light Lamp 3 and 4 (SetLampLit)

Wait 0.5 Seconds

Light Lamp 4 and 5
(SetLampLit)

.......

StopPlayerLookAt();
}

I think you got the idea... ?


Greets

-iFondue
04-10-2012, 05:13 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#2
RE: How to make a "Wait" in the script.

Here's how I would do it:

void LightOn(string &in asParent, string &in asChild, int alStat)
{
      AddEntityCollideCallback("Player" , "ScriptArea_1" , "LightOn" , true , 1);
    
    StartPlayerLookAt("LookFrame", 20, 50, "");
    
    SetLampLit("candlestick_1", true, true);
    
    SetLampLit("candlestick_2", true, true);
      

      AddTimer("light1", 0.5f, "TimerLight");
      AddTimer("light2", 1, "TimerLight");
      AddTimer("stopeffects", 1.2f, "TimerLight");

}

void TimerLight(string &in asTimer)
{

       if(asTimer == "light1")
       {
            //Light Lamp 3 and 4 (SetLampLit);
       }
       if(asTimer == "light2")
       {
            //Light Lamp 4 and 5 (SetLampLit)
       }
       if(asTimer == "stopeffects")
       {
            StopPlayerLookAt();
       }
}

04-10-2012, 05:20 PM
Find
iFondue Offline
Junior Member

Posts: 28
Threads: 6
Joined: Apr 2012
Reputation: 0
#3
RE: How to make a "Wait" in the script.

Hey, thank you very much for your fast reply.

It now looks like this:


void LightOn(string &in asParent, string &in asChild, int alStat)
{
AddEntityCollideCallback("Player" , "ScriptArea_1" , "LightOn" , true , 1);

StartPlayerLookAt("LookFrame", 20, 50, "");

SetLampLit("candlestick_1", true, true);

SetLampLit("candlestick_2", true, true);


AddTimer("light1", 0.5f, "TimerLight");
AddTimer("light2", 1, "TimerLight");
AddTimer("stopeffects", 1.2f, "TimerLight");

}

void TimerLight(string &in asTimer)
{

if(asTimer == "light1")
{
SetLampLit("candlestick_3", true, true);
SetLampLit("candlestick_4", true, true);
}
if(asTimer == "light2")
{
SetLampLit("candlestick_5", true, true);
SetLampLit("candlestick_6", true, true);
}
if(asTimer == "stopeffects")
{
StopPlayerLookAt();
}
}


Unfortunately the other lamps won't light. Did I do something wrong? Did I forget something?


Greets

-iFondue
04-10-2012, 05:36 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#4
RE: How to make a "Wait" in the script.

I just double checked the code...it should be fine...

Could you add a test SetMessage or something inside the if statements to make sure they're running?

04-10-2012, 05:42 PM
Find
iFondue Offline
Junior Member

Posts: 28
Threads: 6
Joined: Apr 2012
Reputation: 0
#5
RE: How to make a "Wait" in the script.

Hmmmm... I tried to do a PlaySoundAtEntity but I couldn't hear anything.... Any ideas?


Greets

-iFondue
04-10-2012, 05:48 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#6
RE: How to make a "Wait" in the script.

I'm having trouble understanding why there's a problem because I performed a similar solution in my own map, here's just a snippet:

    AddTimer("opendoor", 0.25f, "TimerOpenDoor");
    AddTimer("lightsout", 1, "TimerOpenDoor");
    AddTimer("stopeffects", 2, "TimerOpenDoor");
    
    StartScreenShake(0.007f,2, 0.25f,1);
    FadePlayerFOVMulTo(1.5, 0.5f);
    
}

void TimerOpenDoor(string &in asTimer)
{

    if(asTimer == "stopeffects")
    {
        
        FadePlayerFOVMulTo(1, 1);
        PlaySoundAtEntity("breath", "react_breath.snt", "Player", 1.0 / 0.75f, false);
        return;
    }
    if(asTimer == "lightsout")
    {
        SetLocalVarInt("lightsout", 1);
        for(int i=4;i<=6;i++)
            SetLampLit("chandelier_simple_short_"+i, false, true);
        for(int i=0;i<=6;i++)
            SetLampLit("LampBlownOut_"+i, false, true);
        PlaySoundAtEntity("breath2", "react_breath.snt", "Player", 1.0 / 1, false);
        return;
    }
    
    PlaySoundAtEntity("Wind", "general_wind_whirl", "Player", 2, false);
    PlaySoundAtEntity("scare", "react_scare.snt", "Player", 0.75f, false);
    
    SetSwingDoorClosed("castle_4", false, false);
    SetSwingDoorDisableAutoClose("castle_4", true);
    
    AddTimer("castle_4", 0.01f, "TimerSwingDoor");
    
    GiveSanityDamage(10, true);

}

^^

And that works just fine. Is the code working correctly? The function TimerLight isn't working? This is weird....

Outside the if statements, in TimerLight, put a command. If that doesn't work, then the whole function isn't working, and it's just an error when calling it.

Oh yeah, so I don't forget, is the script working at all? Are other functions working correctly?

(This post was last modified: 04-10-2012, 05:55 PM by Putmalk.)
04-10-2012, 05:53 PM
Find
iFondue Offline
Junior Member

Posts: 28
Threads: 6
Joined: Apr 2012
Reputation: 0
#7
RE: How to make a "Wait" in the script.

Well, this is how it looks right:


void TimerLight(string &in asTimer)
{

if(asTimer == "light1")
{
SetLampLit("candlestick_3", true, true);
SetLampLit("candlestick_4", true, true);
}
if(asTimer == "light2")
{
SetLampLit("candlestick_5", true, true);
SetLampLit("candlestick_6", true, true);
}
if(asTimer == "stopeffects")
{
StopPlayerLookAt();
}
}


It's correct isn't it?
There is no error, when starting, it's just that the light's won't lit....

Is there another way to do it, or did I do something wrong?



Greets

-iFondue
04-10-2012, 06:00 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#8
RE: How to make a "Wait" in the script.

Copied the code into Programmer's Notepad so I can see it easier, let's see...

void LightOn(string &in asParent, string &in asChild, int alStat) should be

void LightOn(string &in asParent, string &in asChild, int alState), try that....

Also, In your LightOn function, you're creating an entity collide callback to LightOn, how come? Shouldn't that be placed in OnStart()?

(This post was last modified: 04-10-2012, 06:10 PM by Putmalk.)
04-10-2012, 06:09 PM
Find
iFondue Offline
Junior Member

Posts: 28
Threads: 6
Joined: Apr 2012
Reputation: 0
#9
RE: How to make a "Wait" in the script.

Okay, I changed the State.
But what has to go to OnStart () ? Only the LightOn function?


Greets

-iFondue
04-10-2012, 06:27 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#10
RE: How to make a "Wait" in the script.

(04-10-2012, 06:27 PM)iFondue Wrote: Okay, I changed the State.
But what has to go to OnStart () ? Only the LightOn function?


Greets

-iFondue
Nah, "AddEntityCollideCallback("Player" , "ScriptArea_1" , "LightOn" , true , 1);" does.

Generally, you put your callbacks in the OnStart function, unless you want that event to happen at a specific time, at which you'll put it in a different place.


04-10-2012, 06:30 PM
Find




Users browsing this thread: 1 Guest(s)