Jump to content




Password Door


  • You cannot reply to this topic
2 replies to this topic

#1 UP844

  • Members
  • 21 posts

Posted 25 January 2013 - 10:48 AM

I have password doors all around my buildings on the server that me and some of my friends own. I was wondering if there was a way to make it so if I turn on a lever then it will run the program, so basically it only has the lock on if it detects redstone current. Here's what I have (saved under startup):
while true do
term.clear()
term.setCursorPos(1, 1)
input = read ("*")
if input == "password" then
redstone.setOutput ("left", true)
sleep(2)
redstone.setOutput ("left", false)

end
end
Instead of while true do could I do if (something that makes the computer detect redstone current) do and then the rest of the coding.

#2 OmegaVest

  • Members
  • 436 posts

Posted 25 January 2013 - 11:11 AM

Yes, but without the loop, it will only run once.

pass = "someword"  --  Whatever your password is.
lever = "right"  -- Whatever the redstone side is
door = "left"  --  Whatever side the door is on
tArgs = {...}
if #tArgs > 1 then
   print("Usage: \n   password <password>")  -- Or whatever your program name is, goes where the unbracketed password is
elseif tArgs == 1 then
   input = tArgs[1]
end

if input == pass and rs.getInput(lever) then
   rs.setOutput(door, true)
   sleep(2.0)
   rs.setOutput(door, false)
end
term.clear()
term.setCursorPos(1,1)


*The above code will not work with multi-worded passwords. No spaces, and I think no escape characters.

You can add a loop like so:

lever = "right"
door = "left"
pass = "someword"

while true do
   term.clear()
   term.setCursorPos(1,1)
   term.write("Password: ")
   input = read("*")

   if input == pass and rs.getInput(lever) then
      rs.setOutput(door, true)
      sleep(2.0)
      rs.setOutput(door, false)
   end
end


#3 UP844

  • Members
  • 21 posts

Posted 25 January 2013 - 12:05 PM

View PostOmegaVest, on 25 January 2013 - 11:11 AM, said:

Yes, but without the loop, it will only run once.

pass = "someword"  --  Whatever your password is.
lever = "right"  -- Whatever the redstone side is
door = "left"  --  Whatever side the door is on
tArgs = {...}
if #tArgs > 1 then
   print("Usage: \n   password <password>")  -- Or whatever your program name is, goes where the unbracketed password is
elseif tArgs == 1 then
   input = tArgs[1]
end

if input == pass and rs.getInput(lever) then
   rs.setOutput(door, true)
   sleep(2.0)
   rs.setOutput(door, false)
end
term.clear()
term.setCursorPos(1,1)


*The above code will not work with multi-worded passwords. No spaces, and I think no escape characters.

You can add a loop like so:

lever = "right"
door = "left"
pass = "someword"

while true do
   term.clear()
   term.setCursorPos(1,1)
   term.write("Password: ")
   input = read("*")

   if input == pass and rs.getInput(lever) then
	  rs.setOutput(door, true)
	  sleep(2.0)
	  rs.setOutput(door, false)
   end
end
Thanks!





2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users