Difference between revisions of "Making a Password Protected Door"

From ComputerCraft Wiki
Jump to: navigation, search
(How to make it)
(How to make it)
Line 50: Line 50:
  
 
Well, you should have your own password protected door!
 
Well, you should have your own password protected door!
Feel free to change the script around, maybe add a few success/failure messages, etc. etc.
+
Feel free to change the script around, maybe add a few success/failure messages, etc, etc.
  
(NOTE: If the program fails somehow, Pressing and holding Ctrl + T will terminate it, and allow you to edit it like normally, see the [http://computercraft.info/wiki/index.php?title=Making_a_Password_Protected_Door#Stop_people_from_terminating_your_lock No termination section] to stop people from exiting your lock)
+
(NOTE: If the program fails somehow, Pressing and holding Ctrl + T will terminate it, and allow you to edit it like normally, see the [http://computercraft.info/wiki/index.php?title=Making_a_Password_Protected_Door#Stop_people_from_terminating_your_lock No termination section] to stop people from exiting your lock, if someone exits your lock, they could edit your lock file, and finding out your password, now you don't want that!)
  
 
= Alternative / Better code =
 
= Alternative / Better code =

Revision as of 20:04, 18 April 2012

This tutorial covers on how to make a computer output redstone current when the right password is typed in. The current is then used to trigger an iron door.


How to make it

A password protected door is actually pretty easy, if you break it into steps.


First, you need to craft a computer, and connect the back to an iron door with redstone. Like this: Tutorial1.png CTutorial2.png

Once you're done with the basics, open the computer and edit the "startup" file. (type in 'edit startup') This will make it so the program will be executed when the computer boots.

Once you access the startup file, enter in these two lines. CTutorial3.png (alternatively, if you don't want people looking at your password, E.G in a server, type this code ( instead of 't = io.read()' ): t = read("*") , that will * out the password) The first line defines a function, so that we can repeat the program if a password is entered, and the second line is assigning whatever the user types to the variable, "t", So for example, if I typed "qwerty", it would be t = "qwerty". It also overrides anything else the user types in, so if I typed in "programs", it would just be t = "programs", and not act as the programs command in the regular OS. This can very useful.


After you're done with the previous lines, enter in the following line: CTutorial4.png

This makes it so the program checks if the variable that we declared earlier, "t", equals "password". (You can change password to what you want the actual password to be.)


But now you'll need to put in what to do, depending on if the user typed in the right password. This next set of lines will do that:

CTutorial5.png

Now, this may seem complicated, but it's really simple. The four lines after the if line, determine what the computer will do if the password is correct. So if it's correct, It'll set the redstone output from it's back to true (on), and open the door. (this is the "redstone.setOutput("back", true)" command.) It'll then wait two seconds, and turn the redstone back off again. It'll then repeat the function, so you don't need to reboot the computer.

However, the last two lines dictate what the computer will do if the password is wrong, which is really just not opening the door, and repeating the function.


And now the finishing touches:

CTutorial6.png

This adds the "Ends" to the if which is inside the function, and the function. So we've declared our function. Now to start it, we have the computer call the function after it declares it.

Well, you should have your own password protected door! Feel free to change the script around, maybe add a few success/failure messages, etc, etc.

(NOTE: If the program fails somehow, Pressing and holding Ctrl + T will terminate it, and allow you to edit it like normally, see the No termination section to stop people from exiting your lock, if someone exits your lock, they could edit your lock file, and finding out your password, now you don't want that!)

Alternative / Better code

Type 'edit startup' and type in this code: (Use Ctrl + T to terminate the program, all code is explained in the comments, the --'s. It's good to read the comments, so you actually know what the code does, you do not need to have the comments in your code, of course)

local side = "left" -- Change left to whatever side your door / redstone is on, E.G: left, right, front, back, bottom, top. Be sure to leave the "s around it, though
local password = "bacon" -- Change bacon to what you want your password to be. Be sure to leave the "s around it, though
local opentime = 5 -- Change 5 to how long (in seconds) you want the redstone current to be on. Don't put "s around it, though
term.clear() -- Clears the screen
term.setCursorPos(1,1) -- Fixes the cursor position
write("Password: ") -- Prints 'Password: ' to the screen
local input = read("*") -- Makes the variable 'input' have the contents of what the user types in, the "*" part sensors out the password
if input == (password) then -- Checks if the user inputted the correct password
 term.clear() -- Already explained up top
 term.setCursorPos(1,1)
 print("Password correct!") -- Prints 'Password correct!' to the screen
 rs.setOutput(side,true) -- Output a redstone current to the side you specified
 sleep(opentime) -- Wait the amount of seconds you specifed, then..
 rs.setOutput(side,false) -- Stop outputting a redstone current
 os.reboot() -- Reboot the computer, reopening the lock
else -- Checks if the user didn't input the correct password
 term.clear()
 term.setCursorPos()
 print("Password incorrect!") -- Prints 'Password incorrect!' to the screen
 sleep(2) -- Waits 2 seconds
 os.reboot() -- Reboot the computer, reopening the lock
end

Stop people from terminating your lock

If you don't want people holding CTRL+T and quitting your lock, use this code at the top of your program:

os.pullEvent = os.pullEventRaw