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 |
|
|