| 
		
	
		| AGP   Senior Member
 
 Posts: 448
 Threads: 45
 Joined: Dec 2012
 Reputation: 
23
 | 
			| RE: Elevator Lever to Level Transition 
 
				It's scripted so that the levers become stuck once they are all in the proper positions. I have tried it once where pulling the elevator lever before pulling the other levers did make them stuck. Other than that, they just stay stuck.
 For the levers in the little lever box (the one with the Roman numerals), the -1 is up.
 
 And there are no callbacks on 2.
 
 
				
(This post was last modified: 11-26-2014, 08:58 AM by AGP.)
 |  |  
	| 11-26-2014, 08:57 AM |  |  
	
		| Mudbill   Muderator
 
 Posts: 3,881
 Threads: 59
 Joined: Apr 2013
 Reputation: 
179
 | 
			| RE: Elevator Lever to Level Transition 
 
				Alright, so the lever_machine_lever ones run the block once interacted with. If all those levers are in state -1 when one of them is, it makes them all stuck and plays the sounds. The issue here is that elevator_lever_2 has no way of being in state -1 before this happens, therefore the last part of the block can never be called; thus the Activate block never runs either. 
What you can do is to use a variable instead. Add another lever callback to the elevator_lever_2 and have it check for this variable. You trigger it in the "stuck" script.  void LeverBox(string &in asEntity, int LeverState){
 if(GetLeverState("lever_machine_lever_1") == -1
 && GetLeverState("lever_machine_lever_2") == -1
 && GetLeverState("lever_machine_lever_3") == -1
 && GetLeverState("lever_machine_lever_4") == -1
 && GetLeverState("lever_machine_lever_5") == -1
 && GetLeverState("lever_machine_lever_6") == -1)
 {
 PlaySoundAtEntity("", "sob01.snt", "Player", 0, false);
 SetEntityActive("elevator_lever_1", false);
 SetEntityActive("elevator_lever_2", true);
 
 for(int i = 1; i <= 6; i++)
 SetEntityInteractionDisabled("lever_machine_lever_"+i, true);
 SetLocalVarInt("Lever", 1);//Added this line which is used when interacting with the elevator_lever_2
 }
 }
 
 void ElevatorLever(string &in asEntity, int LeverState)
 {
 if(GetLocalVarInt("Lever") != 0) {
 if(GetLeverState(asEntity) == -1) Activate();
 }
 }
 
To use this, you must also remove the parameters of Activate, since it uses none.
			
 
				
(This post was last modified: 11-26-2014, 09:07 AM by Mudbill.)
 |  |  
	| 11-26-2014, 09:00 AM |  |  
	
		| AGP   Senior Member
 
 Posts: 448
 Threads: 45
 Joined: Dec 2012
 Reputation: 
23
 | 
			| RE: Elevator Lever to Level Transition 
 
				My biggest problem was I just couldn't figure out a way to call up the Activate function.
			 
 |  |  
	| 11-26-2014, 09:03 AM |  |  
	
		| Mudbill   Muderator
 
 Posts: 3,881
 Threads: 59
 Joined: Apr 2013
 Reputation: 
179
 | 
			| RE: Elevator Lever to Level Transition 
 
				Edited my reply with an alternate solution.
			 
 |  |  
	| 11-26-2014, 09:06 AM |  |  
	
		| AGP   Senior Member
 
 Posts: 448
 Threads: 45
 Joined: Dec 2012
 Reputation: 
23
 | 
			| RE: Elevator Lever to Level Transition 
 
				Don't think I entered it in correctly: void OnStart(){
 
 }
 
 void OnEnter()
 {
 AddUseItemCallback("", "guiding_rod01", "rodarea_1", "RodMeOnce", true);
 AddUseItemCallback("", "guiding_rod02", "rodarea_2", "RodMeTwice", true);
 AddUseItemCallback("", "guiding_rod03", "rodarea_3", "RodMeThrice", true);
 
 for(int i = 1; i <= 3; i++)
 AddUseItemCallback("", "guiding_rod0"+i, "rodarea_"+i, "RodMe", true);
 }
 
 void OnLeave()
 {
 
 }
 
 void LeverBox(string &in asEntity, int LeverState)
 {
 if(GetLeverState("lever_machine_lever_1") == -1
 && GetLeverState("lever_machine_lever_2") == -1
 && GetLeverState("lever_machine_lever_3") == -1
 && GetLeverState("lever_machine_lever_4") == -1
 && GetLeverState("lever_machine_lever_5") == -1
 && GetLeverState("lever_machine_lever_6") == -1)
 {
 PlaySoundAtEntity("", "sob01.snt", "Player", 0, false);
 SetEntityActive("elevator_lever_1", false);
 SetEntityActive("elevator_lever_2", true);
 
 for(int i = 1; i <= 6; i++)
 SetEntityInteractionDisabled("lever_machine_lever_"+i, true);
 SetLocalVarInt("Lever", 1);
 }
 }
 
 void ElevatorLever(string &in asEntity, int LeverState)
 {
 if(GetLocalVarInt("Lever") != 0) {
 if(GetLeverState(asEntity) == -1) Activate();
 
 PlaySoundAtEntity("", "14_elevator_activate.snt", "Player", 0, false);
 AddTimer("", 2.0, "Fade");
 StartScreenShake(0.06f, 4.0, 1.0, 1.0);
 }
 
 void RodMeOnce(string &in asItem, string &in asEntity)
 {
 SetEntityActive("guiding_rod01_stat", true);
 PlaySoundAtEntity("", "13_rod_in.snt", "rods", 0, false);
 RemoveItem("guiding_rod01");
 AddLocalVarInt("Rods", 1);
 
 if(GetLocalVarInt("Rods") == 3)
 {
 PlaySoundAtEntity("", "13_machine_extra.snt", "machine_sound", 0, false);
 PlaySoundAtEntity("", "13_machine_run.snt", "machine_sound", 0, false);
 }
 }
 
 void RodMeTwice(string &in asItem, string &in asEntity)
 {
 SetEntityActive("guiding_rod02_stat", true);
 PlaySoundAtEntity("", "13_rod_in.snt", "rods", 0, false);
 RemoveItem("guiding_rod02");
 AddLocalVarInt("Rods", 1);
 
 if(GetLocalVarInt("Rods") == 3)
 {
 PlaySoundAtEntity("", "13_machine_extra.snt", "machine_sound", 0, false);
 PlaySoundAtEntity("", "13_machine_run.snt", "machine_sound", 0, false);
 }
 }
 
 void RodMeThrice(string &in asItem, string &in asEntity)
 {
 SetEntityActive("guiding_rod03_stat", true);
 PlaySoundAtEntity("", "13_rod_in.snt", "rods", 0, false);
 RemoveItem("guiding_rod03");
 AddLocalVarInt("Rods", 1);
 
 if(GetLocalVarInt("Rods") == 3)
 {
 PlaySoundAtEntity("", "13_machine_extra.snt", "machine_sound", 0, false);
 PlaySoundAtEntity("", "13_machine_run.snt", "machine_sound", 0, false);
 }
 }
 
 void Fade(string &in asTimer)
 {
 FadeOut(5);
 AddTimer("", 5, "TimerTransition");
 }
 
 void TimerTransition(string &in asTimer)
 {
 ChangeMap("helena_001.map", "PlayerStartArea_1", "", "");
 }
It's now saying unexpected end of file (101, 2).
			
 |  |  
	| 11-26-2014, 09:13 AM |  |  
	
		| Mudbill   Muderator
 
 Posts: 3,881
 Threads: 59
 Joined: Apr 2013
 Reputation: 
179
 | 
			| RE: Elevator Lever to Level Transition 
 
				Missing bracket in ElevatorLever. If you're gonna have all that in the if statement, use another block there as well. void ElevatorLever(string &in asEntity, int LeverState){
 if(GetLocalVarInt("Lever") != 0) {
 if(GetLeverState(asEntity) == -1) {
 Activate();
 
 PlaySoundAtEntity("", "14_elevator_activate.snt", "Player", 0, false);
 AddTimer("", 2.0, "Fade");
 StartScreenShake(0.06f, 4.0, 1.0, 1.0);
 }//end if
 }//end if
 }//end block
 
 
				
(This post was last modified: 11-26-2014, 09:23 AM by Mudbill.)
 |  |  
	| 11-26-2014, 09:23 AM |  |  
	
		| AGP   Senior Member
 
 Posts: 448
 Threads: 45
 Joined: Dec 2012
 Reputation: 
23
 | 
			| RE: Elevator Lever to Level Transition 
 
				Compiling void ElevatorLever(string&in, int)
 No matching signatures to 'Activate()'
 
 Does this mean there are incorrect parameters? (Trying to comprehend what's going on, please forgive any silly-sounding questions.)
 
 |  |  
	| 11-26-2014, 09:36 AM |  |  
	
		| Mudbill   Muderator
 
 Posts: 3,881
 Threads: 59
 Joined: Apr 2013
 Reputation: 
179
 | 
			| RE: Elevator Lever to Level Transition 
 
				It looks like you moved the contents from Activate to this block instead, which is fine. Just remove the Activate(); call then, since it doesn't exist.
			 
 |  |  
	| 11-26-2014, 09:44 AM |  |  |