Frictional Games Forum (read-only)
[SOLVED]Variables & if - 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: [SOLVED]Variables & if (/thread-28808.html)



[SOLVED]Variables & if - Omenapuu - 12-31-2014

So I got another problem with scripting. This time I can't get an if statement to work with variables, don't know what's wrong. I looked it over a couple times & still can't figure why isn't it working.

Spoiler below!

AddLocalVarInt("var1", 1);
AddEntityCollideCallback("Player", "ScriptArea_3", "var1", true, 1);
AddEntityCollideCallback("Player", "ScriptArea_4", "scare1", true, 1);


void var1(string &in asParent, string &in asChild, int alState)
{
SetLocalVarInt("var1", 2);
}
void scare1(string &in asParent, string &in asChild, int alState)
{
if(GetLocalVarInt("var1") == 2)
{//INSERT CODE HERE


That isn't straight from the code but I picked up the pieces that aren't functioning.. So what's exactly wrong there? I can't spot it. Probably because I'm not really sure how to use IF statements. Also I made an Else statement after it so it worked fine.. What's wrong with those variables?


RE: Variables & if - DnALANGE - 12-31-2014

Here an example from 1 of my scripts;
This script will work on my doors to open\close.

OnStart
{
PHP Code:
SetLocalVarInt("ElevatorOpen"0); 
}

PHP Code:
void elevatordooropenFloor1(string &in asEnitiy)
{
 
 if(
GetLocalVarInt("ElevatorOpen") == 0)
 {
  
SetMoveObjectState("door_security_door_closed_3", -12);
  
SetMoveObjectState("door_security_door_closed_2"12);
  
SetLocalVarInt("ElevatorOpen"1);

 }
 
 else
 {
  
SetMoveObjectState("door_security_door_closed_3"0.7);
  
SetMoveObjectState("door_security_door_closed_2"0.7);
  
SetLocalVarInt("ElevatorOpen"0);

 }


This means ;
IF the doors are closed ADDING a variable to OPEN the doors.
ELSE the doors are closed and setting the variable BACK to 0 = CLOSED.
-
Try and play a little with my copy\past lines and i think you can figur it for the rest of your scriot.
If not, we are here to help.
Good luck!


RE: Variables & if - Omenapuu - 12-31-2014

(12-31-2014, 03:04 PM)DnALANGE Wrote: Here an example from 1 of my scripts;
This script will work on my doors to open\close.

OnStart
{
PHP Code:
SetLocalVarInt("ElevatorOpen"0); 
}

PHP Code:
void elevatordooropenFloor1(string &in asEnitiy)
{
 
 if(
GetLocalVarInt("ElevatorOpen") == 0)
 {
  
SetMoveObjectState("door_security_door_closed_3", -12);
  
SetMoveObjectState("door_security_door_closed_2"12);
  
SetLocalVarInt("ElevatorOpen"1);

 }
 
 else
 {
  
SetMoveObjectState("door_security_door_closed_3"0.7);
  
SetMoveObjectState("door_security_door_closed_2"0.7);
  
SetLocalVarInt("ElevatorOpen"0);

 }


This means ;
IF the doors are closed ADDING a variable to OPEN the doors.
ELSE the doors are closed and setting the variable BACK to 0 = CLOSED.
-
Try and play a little with my copy\past lines and i think you can figur it for the rest of your scriot.
If not, we are here to help.
Good luck!

I can't still get it to work.. I honestly have no idea why isn't it working, pretty sure it's just as the one you said..

PHP Code:
void var1(string &in asParentstring &in asChildint alState)
{
    
SetLocalVarInt("VARIABLE"3);
}

void scare1(string &in asParentstring &in asChildint alState)
{
    if(
GetLocalVarInt("VARIABLE") != 1)
    {
         
CODE
}


Im pretty sure the problem is somewhere there. No errors or anything, the IF just seems to not give me the value I want, dunno...


http://gyazo.com/4e9fe5f111e5dfce5b956a749255c330 Theres the area.


RE: Variables & if - Daemian - 01-01-2015

You gotta declare your variable before using it ( SetLocalVarInt ).
Did you check that?


RE: Variables & if - Mudbill - 01-01-2015

I believe an undeclared variable is automatically set to 0 when used. At least that's the case with AddLocalVarInt. Unsure about the Getter, but either way, if it is undeclared or 0 it will still pass the if statement because it only asks if it ISN'T 1, which is true. I see nowhere that sets this value to 1, making the if statement quite useless.


RE: Variables & if - Omenapuu - 01-01-2015

(01-01-2015, 06:05 AM)Mudbill Wrote: I believe an undeclared variable is automatically set to 0 when used. At least that's the case with AddLocalVarInt. Unsure about the Getter, but either way, if it is undeclared or 0 it will still pass the if statement because it only asks if it ISN'T 1, which is true. I see nowhere that sets this value to 1, making the if statement quite useless.

I have this at the very beginning:
PHP Code:
SetLocalVarInt("VARIABLE"1); 
So It shouldn't be undeclared I think.. I scripted it this way
PHP Code:
void var1(string &in asParentstring &in asChildint alState)
{
    
SetLocalVarInt("VARIABLE"3);
}
void scare1(string &in asParentstring &in asChildint alState)
{
    if(
GetLocalVarInt("VARIABLE") != 1)
    {
           
CODE
}


because nothing else seemed to work so I tried to find an alternate route for it to work.. The scripts aren't wrong because I don't get any errors playing it tho.
The
PHP Code:
SetLocalVarInt("VARIABLE, 1); 
is working tho because the script doesn't trigger at anytime.


RE: Variables & if - Daemian - 01-01-2015

(01-01-2015, 06:05 AM)Mudbill Wrote: I believe an undeclared variable is automatically set to 0 when used. At least that's the case with AddLocalVarInt. Unsure about the Getter, but either way, if it is undeclared or 0 it will still pass the if statement because it only asks if it ISN'T 1, which is true. I see nowhere that sets this value to 1, making the if statement quite useless.
I thought an undeclared variable -using GetLocalVarInt- blocked the code without raising error.
Just try, put SetLocalVarInt("var1", 2); in your OnStart() function. Then try to trigger that scare1, see if it works.


RE: Variables & if - Omenapuu - 01-01-2015

(01-01-2015, 02:44 PM)Daemian Wrote:
(01-01-2015, 06:05 AM)Mudbill Wrote: I believe an undeclared variable is automatically set to 0 when used. At least that's the case with AddLocalVarInt. Unsure about the Getter, but either way, if it is undeclared or 0 it will still pass the if statement because it only asks if it ISN'T 1, which is true. I see nowhere that sets this value to 1, making the if statement quite useless.
I thought an undeclared variable -using GetLocalVarInt- blocked the code without raising error.
Just try, put SetLocalVarInt("var1", 2); in your OnStart() function. Then try to trigger that scare1, see if it works.

Yeah, it worked. So the problem is in changing the variable. I'll try to figure them out, but if you can help then here's the code:
PHP Code:
AddEntityCollideCallback("Player""ScriptArea_3""var1"true1);
void var1(string &in asParentstring &in asChildint alState)
{
    
SetLocalVarInt("VARIABLE"3);


Here's the area: [Image: 4ce59ce01b6db826a47ddbcb4c0328eb.png]

The one in front of the empty door, down left, is the ScriptArea_3.


RE: Variables & if - Omenapuu - 01-01-2015

Alright so I pretty much found out why it didn't work...
The script that checked the If-else was triggered by a collide callback. I had made it like that the collide callback removes after first use. And because the first use was supposed to be false until player has done something, the second time it didn't even exist... So yeah I didn't think about that Big Grin


RE: [SOLVED]Variables & if - Mudbill - 01-01-2015

Ah yes, that happened to me a few times before as well. Now you know about it, so it probably won't be an issue anymore Smile