| 
		
	
		| Raymond   Member
 
 Posts: 126
 Threads: 24
 Joined: Feb 2011
 Reputation: 
0
 | 
			| How to make a make a door that need two keys to unlock it? 
 
				As the title said, i need to know how   .
			
 One World To Another [DEMO] coming soon. |  |  
	| 03-07-2011, 10:40 AM |  |  
	
		| Tanshaydar   From Beyond
 
 Posts: 3,085
 Threads: 17
 Joined: Mar 2009
 Reputation: 
67
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				A little workaround is needed.
 Put a local int variable and make it count every time you use a key on the door and put the if( variable is > 2) open the door function inside every callback function.
 
 |  |  
	| 03-07-2011, 11:18 AM |  |  
	
		| Nye   Senior Member
 
 Posts: 250
 Threads: 8
 Joined: Jan 2011
 Reputation: 
2
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				oh no, one key is normally boring enough! :p
			 
 |  |  
	| 03-07-2011, 01:40 PM |  |  
	
		| Anxt   Senior Member
 
 Posts: 588
 Threads: 12
 Joined: Mar 2011
 Reputation: 
10
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				An example of the code Tanshaydar mentioned would look something like this:
 void OnStart()
 {
 AddUseItemCallback("UseKey1", "Key1", "LockedDoor", "KeyCounter", true);
 AddUseItemCallback("UseKey2", "Key2", "LockedDoor", "KeyCounter", true);
 SetLocalVarInt("KeysUsed", 0);
 }
 
 void KeyCounter(string &in asItem, string &in asEntity)
 {
 SetLocalVarInt("KeysUsed", GetLocalVarInt("KeysUsed")+1);
 
 if(GetLocalVarInt("KeysUsed")==2)
 {
 SetSwingDoorLocked("LockedDoor", false, true);
 }
 }
 
 You could also use two separate variables and set them equal to 1 when using the key, then add a similar if statement to check if both are 1, but I think the way above is a bit easier.
 
 Sorry if there are any typos in the code.
 
 |  |  
	| 03-07-2011, 07:27 PM |  |  
	
		| Pandemoneus   Senior Member
 
 Posts: 328
 Threads: 2
 Joined: Sep 2010
 Reputation: 
0
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				SetLocalVarInt("KeysUsed", GetLocalVarInt("KeysUsed")+1);
AddLocalVarInt("KeysUsed", 1); would do the same.    
 |  |  
	| 03-07-2011, 07:57 PM |  |  
	
		| Anxt   Senior Member
 
 Posts: 588
 Threads: 12
 Joined: Mar 2011
 Reputation: 
10
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				 (03-07-2011, 07:57 PM)Pandemoneus Wrote:  SetLocalVarInt("KeysUsed", GetLocalVarInt("KeysUsed")+1);
AddLocalVarInt("KeysUsed", 1); would do the same.
  
Really?  As in, that adds 1 to the counter?  For some reason I assumed "AddLocalVarInt" meant create a new one, which now that you point it out, I realize that would be redundant. 
 
This is why I am terrible at coding!     
 |  |  
	| 03-07-2011, 08:02 PM |  |  
	
		| Raymond   Member
 
 Posts: 126
 Threads: 24
 Joined: Feb 2011
 Reputation: 
0
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				Oh my god! Confusing   .
			
 One World To Another [DEMO] coming soon. |  |  
	| 03-08-2011, 08:28 AM |  |  
	
		| Anxt   Senior Member
 
 Posts: 588
 Threads: 12
 Joined: Mar 2011
 Reputation: 
10
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				Sorry about that, Raymond.  I'll see if I can simplify it.
 Basically what I did in my code is set up the keys to add value to a variable rather than unlock the door directly.  This is because otherwise just using one key would unlock it.
 
 The variable "KeysUsed", upon reaching 2, will call for the door to be unlocked.  Each key used increases the value of "KeysUsed" by 1.
 
 The if statement makes sure that the door is unlocked directly after using the second key, since it will check both times a key is used.  The first time, it gets a value of 1, so it does nothing.  The second time, it gets a value of 2, and calls for the door to be unlocked.
 
 Hopefully that explanation didn't make things worse.
 
 |  |  
	| 03-08-2011, 05:41 PM |  |  
	
		| gandalf91   Senior Member
 
 Posts: 439
 Threads: 13
 Joined: Feb 2011
 Reputation: 
0
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				That code doesn't seem too bad. I've had more complicated ones for complex servant spawning sequences, but then again I'm still pretty new to scripting.    |  |  
	| 03-08-2011, 11:42 PM |  |  
	
		| Raymond   Member
 
 Posts: 126
 Threads: 24
 Joined: Feb 2011
 Reputation: 
0
 | 
			| RE: How to make a make a door that need two keys to unlock it? 
 
				void OnStart(){
 AddUseItemCallback("UseKey1", "prisonkeylight_1", "mansion_3", "KeyCounter", true);
 AddUseItemCallback("UseKey2", "prisonkeydark_1", "mansion_3", "KeyCounter", true);
 SetLocalVarInt("KeysUsed", 0);
 }
 
 void KeyCounter(string &in asItem, string &in asEntity)
 {
 SetLocalVarInt("KeysUsed", GetLocalVarInt("KeysUsed")+1);
 
 if(GetLocalVarInt("KeysUsed")==2)
 {
 SetSwingDoorLocked("LockedDoor", false, true);
 }
 }
 
 Like this?
 
 One World To Another [DEMO] coming soon. |  |  
	| 03-09-2011, 10:31 AM |  |  |