Frictional Games Forum (read-only)
Need help with a script (again) - 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 (https://www.frictionalgames.com/forum/forum-35.html)
+--- Thread: Need help with a script (again) (/thread-4666.html)

Pages: 1 2


RE: Need help with a script (again) - Akasu - 09-22-2010

That did it. Thanks for bothering Smile Always nice to learn stuff.

E: Yep. Definately works.
Final product
Spoiler below!
void OnStart ()
{
AddEntityCollideCallback("box1","area_red","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box1","area_green","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box1","area_blue","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box2","area_red","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box2","area_green","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box2","area_blue","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box3","area_red","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box3","area_green","BOX1LIGHT", false, 0);
AddEntityCollideCallback("box3","area_blue","BOX1LIGHT", false, 0);
SetLocalVarInt("RedLightOn", 1);
SetLocalVarInt("GreenLightOn", 1);
SetLocalVarInt("BlueLightOn", 1);
SetLightVisible("redy", false);
SetLightVisible("greeny", false);
SetLightVisible("bluey", false);
}

void BOX1LIGHT(string &in asParent, string &in asChild, int alState)
{
if(asChild == "area_red") {
if(GetLocalVarInt("RedLightOn") == 1) SetLocalVarInt("RedLightOn", 0);
else SetLocalVarInt("RedLightOn", 1);

if(GetLocalVarInt("RedLightOn") == 1) SetLightVisible("redy", false);
else SetLightVisible("redy", true);
}

if(asChild == "area_green") {
if(GetLocalVarInt("GreenLightOn") == 1) SetLocalVarInt("GreenLightOn", 0);
else SetLocalVarInt("GreenLightOn", 1);

if(GetLocalVarInt("GreenLightOn") == 1) SetLightVisible("greeny", false);
else SetLightVisible("greeny", true);

}

if(asChild == "area_blue") {
if(GetLocalVarInt("BlueLightOn") == 1) SetLocalVarInt("BlueLightOn", 0);
else SetLocalVarInt("BlueLightOn", 1);

if(GetLocalVarInt("BlueLightOn") == 1) SetLightVisible("bluey", false);
else SetLightVisible("bluey", true);
}
}



RE: Need help with a script (again) - jens - 09-23-2010

To simplify it, skip the LocalVars all together and use a better naming on your areas and light that way you can make this really simple.

Code:
void BOX1LIGHT(string &in asParent, string &in asChild, int alState)
{
    if(alState == 1)
    {
        SetLightVisible(asChild+"_light", true);
    }
    else if(alState == -1)
    {
        SetLightVisible(asChild+"_light", false);
    }
}

So you check the variable that tells you if something enters or leaves the area, that is alState.

Then if you name you lights the same as the area but suffix them with _light, you can use the variable with the name of the area to not write everything specific.

Example: Area is named "MyArea", you name the light "MyArea_Light", in the script you then use asChild+"_Light" which is the same as "MyArea_Light" because asChild is the variable containing what area it is that something entered into.


RE: Need help with a script (again) - Akasu - 09-23-2010

Well that is simple. I'll use it. Thanks.
Will keep the Pandemoneous's script somewhere in case I need to use local variables sometime.


RE: Need help with a script (again) - MulleDK19 - 09-23-2010

Code:
void OnStart()
{
    SetLightVisible("redy", false);
    AddEntityCollideCallback("box1","area_red","BOX1RED", false, 0);
}

void BOX1RED(string &in asParent, string &in asChild, int alState)
{
    if(asChild == "area_red")
        SetLightVisible("redy", (alState > 0));
}