(09-05-2016, 10:14 PM)Slanderous Wrote: That's what I used in my mod for barricades. Basically checks what's the state of the entity. 1 = means the entity is within the area, -1 = the entity is not within the area. Should work for anything.
AddEntityCollideCallback("", "sth_1", "BarricadeCheck", false, 0);
void BarricadeCheck(string &in asParent, string &in asChild, int alState)
{
if(alState == -1)
{
SetSwingDoorLocked("prison_12", false, false);
}
else if(alState == 1)
{
SetSwingDoorLocked("prison_12", true, false);
}
}
This only checks at the time of the collision.
If the player has been wandering around inside the area, (For example, inside a room), maybe you want to check whether the player is still inside the area after 60 seconds.
Darkfire gave the solution. What you want to do is set a variable to 1 when the player enters the area, and set it to -1 when the player leaves.
This way you just have to check what value the variable has.
void OnStart()
{
AddEntityCollideCallback("Player", "Area_1", "PlayerEnterArea_1", false, 0);
}
void PlayerEnterArea_1(string &in asParent, string &in asChild, int alState)
{
SetLocalVarInt("PlayerEnterArea_1", alState);
}
Notice that I'm just setting the variable to alState. This is because alState is already either 1 or -1, so you won't have to worry about if-statements.
Trying is the first step to success.