Lever-Pulling Combination Help - Kyle - 05-01-2011
I have been working on a script for a while and for some reason, it doesn't work the way I want it to work. The player is supposed to pull down 5 levers in a certain order and there are 2 combinations that they can use.
These are the levers: 1 2 3 4 5
Combinations: 4 5 2 1 3
5 1 3 2 4
I don't want the combinations to combine in a way. So this is my somewhat advanced script that should have taken care of it, but doesn't work, yet still can run:
Code: void OnStart()
{
SetLocalVarInt("Lever", 1);
SetEntityConnectionStateChangeCallback("lever_simple01_22", "L1");
SetEntityConnectionStateChangeCallback("lever_simple01_23", "L2");
SetEntityConnectionStateChangeCallback("lever_simple01_24", "L3");
SetEntityConnectionStateChangeCallback("lever_simple01_25", "L4");
SetEntityConnectionStateChangeCallback("lever_simple01_26", "L5");
Check();
}
void Check()
{
if (GetLocalVarInt("Lever") == 6)
{
GiveSanityBoost();
int x = RandInt(1, 2);
if (x == 1)
{
SetSwingDoorLocked("castle_1", false, true);
SetSwingDoorClosed("castle_1", false, true);
return;
}
else if (x == 2)
{
SetSwingDoorLocked("castle_2", false, true);
SetSwingDoorClosed("castle_2", false, true);
return;
}
}
}
void L5(string &in asEntity, int alState)
{
if (alState == 1)
{
if (GetLocalVarInt("Lever") == 4)
{
AddLocalVarInt("Lever", 1);
SetEntityInteractionDisabled("lever_simple_26", true);
return;
}
else if (GetLocalVarInt("Lever") == 3)
{
AddLocalVarInt("Lever", 1);
SetEntityInteractionDisabled("lever_simple_26", true);
return;
}
else if ((GetLocalVarInt("Lever") != 3) || (GetLocalVarInt("Lever") != 4))
{
SetLocalVarInt("Lever", 1);
for (int i = 22; i <= 26 && i >= 22; i++)
{
SetEntityInteractionDisabled("lever_simple01_"+i, false);
}
return;
}
}
}
void L4(string &in asEntity, int alState)
{
if (alState == 1)
{
if (GetLocalVarInt("Lever") == 1)
{
AddLocalVarInt("lever", 1);
SetEntityInteractionDisabled("lever_simple_25", true);
return;
}
else if (GetLocalVarInt("Lever") == 2)
{
AddLocalVarInt("Lever", 1);
SetEntityInteractionDisabled("lever_simple_25", true);
return;
}
else if ((GetLocalVarInt("Lever") != 1) || (GetLocalVarInt("Lever") != 2))
{
SetLocalVarInt("Lever", 1);
for (int i = 22; i <= 26 && i >= 22; i++)
{
SetEntityInteractionDisabled("lever_simple01_"+i, false);
}
return;
}
}
}
void L3(string &in asEntity, int alState)
{
if (alState == 1)
{
if (GetLocalVarInt("Lever") == 3)
{
AddLocalVarInt("lever", 1);
SetEntityInteractionDisabled("lever_simple_24", true);
return;
}
else if (GetLocalVarInt("Lever") == 2)
{
AddLocalVarInt("Lever", 1);
SetEntityInteractionDisabled("lever_simple_24", true);
return;
}
else if ((GetLocalVarInt("Lever") != 3) || (GetLocalVarInt("Lever") != 2))
{
SetLocalVarInt("Lever", 1);
for (int i = 22; i <= 26 && i >= 22; i++)
{
SetEntityInteractionDisabled("lever_simple01_"+i, false);
}
return;
}
}
}
void L2(string &in asEntity, int alState)
{
if (alState == 1)
{
if (GetLocalVarInt("Lever") == 1)
{
AddLocalVarInt("lever", 1);
SetEntityInteractionDisabled("lever_simple_23", true);
return;
}
else if (GetLocalVarInt("Lever") == 5)
{
AddLocalVarInt("Lever", 1);
SetEntityInteractionDisabled("lever_simple_23", true);
return;
}
else if ((GetLocalVarInt("Lever") != 1) || (GetLocalVarInt("Lever") != 5))
{
SetLocalVarInt("Lever", 1);
for (int i = 22; i <= 26 && i >= 22; i++)
{
SetEntityInteractionDisabled("lever_simple01_"+i, false);
}
return;
}
}
}
void L1(string &in asEntity, int alState)
{
if (alState == 1)
{
if (GetLocalVarInt("Lever") == 5)
{
AddLocalVarInt("lever", 1);
SetEntityInteractionDisabled("lever_simple_22", true);
return;
}
else if (GetLocalVarInt("Lever") == 4)
{
AddLocalVarInt("Lever", 1);
SetEntityInteractionDisabled("lever_simple_22", true);
return;
}
else if ((GetLocalVarInt("Lever") != 5) || (GetLocalVarInt("Lever") != 4))
{
SetLocalVarInt("Lever", 1);
for (int i = 22; i <= 26 && i >= 22; i++)
{
SetEntityInteractionDisabled("lever_simple01_"+i, false);
}
return;
}
}
}
RE: Lever-Pulling Combination Help - Tanshaydar - 05-01-2011
I have a puzzle and nicely coded and it works. To give an example:
Simply, I have an int variable and when buttons pressed in order it counts, and when filan button pressed it checks whether int value is expected or not.
RE: Lever-Pulling Combination Help - Kyle - 05-01-2011
I don't really understand what the script is trying to show in comparison to mine, but I'm adding debug messages to zero in on the issue.
I think I found the problem, or at least part of it...
RE: Lever-Pulling Combination Help - Tanshaydar - 05-02-2011
Step by step:
Assume you have password 4 5 2 1 3
Pulled 1: If variable int is 3 then set the int variable to 4; if not set the int variable to 0.
Pulled 2: If variable int is 2 then set the int variable to 3; if not set the int variable to 0.
Pulled 3: If variable int is 4 then do whatever needed; if not set the int variable to 0.
Pulled 4: Set the int variable to 1.
Pulled 5: If variable int is 1 then set the int variable to 2; if not set the int variable to 0.
RE: Lever-Pulling Combination Help - Kyle - 05-02-2011
It's alright, I got most if it fixed with my handy-dandy debug messages.
I got it to where you pull all the levers in the correct order and you can't interact with them anymore, I can do the rest. Thanks for your help!
|