Frictional Games Forum (read-only)
Switch a light on when you enter an area? - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: Switch a light on when you enter an area? (/thread-12562.html)



Switch a light on when you enter an area? - rallelol - 01-12-2012

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!



RE: Switch a light on when you enter an area? - Inurias - 01-12-2012

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/amnesia/script_functions

-Inurias


RE: Switch a light on when you enter an area? - rallelol - 01-12-2012

(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/amnesia/script_functions

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




RE: Switch a light on when you enter an area? - Khyrpa - 01-12-2012

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

SetLampLit
is for lamp entities



RE: Switch a light on when you enter an area? - rallelol - 01-12-2012

(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