Frictional Games Forum (read-only)

Full Version: Switch a light on when you enter an area?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello! I was just wondering how you get a light to turn on when you enter a certain area, and if it's possible.

I'm thinking of a regular "candle_floor" or something in the lampentity tab.

Thank you!
Detect Player entering ScriptArea:
Code:
void AddEntityCollideCallback(string& asParentName, string&  asChildName, string& asFunction, bool abDeleteOnCollide, int  alStates);

Calls a function when two entites collide.
Callback syntax: void MyFunc(string &in asParent, string &in asChild, int alState)
alState: 1 = enter, -1 = leave

asParentName - internal name of main object
asChildName - internal name of object that collides with main object (asterix (*) NOT supported!)
asFunction - function to call
abDeleteOnCollide - determines whether the callback after it was called
alStates - 1 = only enter, -1 = only leave, 0 = both


Turn lamp on:
Code:
void SetLampLit(string& asName, bool abLit, bool abEffects);

asName - name of the lamp
abLit - true = on, false = off
abEffects - true = use effects, false = don't use effects when turning on/off


Example:
Code:
void OnStart()
{
    AddEntityCollideCallback("Player",  "LAMPAREA", "CollideLAMPAREA", true, 1); //Add the callback for the  player (calls "CollideLAMPAREA" when entering)
}

void CollideLAMPAREA(string &in asParent, string &in asChild, int alState)
{
    SetLampLit("MYLAMP", true, true); //Turn lamp on
}

Script functions for further information in the future: http://wiki.frictionalgames.com/hpl2/amn..._functions

-Inurias
(01-12-2012, 05:42 PM)Inurias Wrote: [ -> ]Detect Player entering ScriptArea:
Code:
void AddEntityCollideCallback(string& asParentName, string&  asChildName, string& asFunction, bool abDeleteOnCollide, int  alStates);

Calls a function when two entites collide.
Callback syntax: void MyFunc(string &in asParent, string &in asChild, int alState)
alState: 1 = enter, -1 = leave

asParentName - internal name of main object
asChildName - internal name of object that collides with main object (asterix (*) NOT supported!)
asFunction - function to call
abDeleteOnCollide - determines whether the callback after it was called
alStates - 1 = only enter, -1 = only leave, 0 = both


Turn lamp on:
Code:
void SetLampLit(string& asName, bool abLit, bool abEffects);

asName - name of the lamp
abLit - true = on, false = off
abEffects - true = use effects, false = don't use effects when turning on/off


Example:
Code:
void OnStart()
{
    AddEntityCollideCallback("Player",  "LAMPAREA", "CollideLAMPAREA", true, 1); //Add the callback for the  player (calls "CollideLAMPAREA" when entering)
}

void CollideLAMPAREA(string &in asParent, string &in asChild, int alState)
{
    SetLampLit("MYLAMP", true, true); //Turn lamp on
}

Script functions for further information in the future: http://wiki.frictionalgames.com/hpl2/amn..._functions

-Inurias
I tried with
SetLightVisible(string& asLightName, bool abVisible);
first but it obviously didn't work.
Thank you though!

eh...
SetLightVisible(string& asLightName, bool abVisible);
is for point lights, box lights and spot lights

SetLampLit
is for lamp entities
(01-12-2012, 06:10 PM)Khyrpa Wrote: [ -> ]eh...
SetLightVisible(string& asLightName, bool abVisible);
is for point lights, box lights and spot lights

SetLampLit
is for lamp entities
I know... well i know now ;d