This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
XxSovietxX's profile picture

I need a special password door...

Started by XxSovietxX, 23 July 2012 - 08:34 PM
XxSovietxX #1
Posted 23 July 2012 - 10:34 PM
The door must be able to:
  • Allow entry for 5 seconds after the correct password is entered (bottom redstone turned on)
  • Engage security after 5 failed password attempts (top redstone turned on)
  • Disengage security after the correct password is entered.
kotorone1 #2
Posted 24 July 2012 - 12:44 AM
Here it is. Just change the value of "pass" to adjust you password. "quits" is the way I left in the program for a user to exit the lock. Also,



--prevent ctrl+t escape
os.pullEvent = os.pullEventRaw
--print greeting and reset value of i
function greet()
term.clear()
term.setCursorPos(1,1)
print("Enter Password:")
i = 0
end
--declare passwords
local pass  = "bacon"
local quits = "quits"
--start the normal lock
function lock()
input = read("*") --set user input to look like asteriks
if input == pass then
  term.scroll(-1)
  term.clearLine()
  term.scroll(1)
  print("Password correct!")
  rs.setOutput("bottom",true)
  sleep(5)
  rs.setOutput("bottom",false)
  greet()
  lock()
elseif input == quits then --check to see if input allows the user to quit
  shell.programs() -- quit progarm
elseif i == 4 then -- make sure that you haven't exceeded your allotment of tries
  lock2()
else -- if your here, it means that you did't exceed your allotment of tries, and that you haven't put in the right pass
  i = i+1 --add to allotment count
  term.scroll(-1)
  term.clearLine()
  term.scroll(1)
  print("Incorrect. You have failed ", i," times")
  lock()
end
end
function lock2() --this is the "security" lockout
term.clear()
term.setCursorPos(1,1)
print("Enter Password:")
print("Please contact this console's owner to unlock this machine")
rs.setOutput("top",true)
input = read("*")
if input == pass then
  rs.setOutput("top",false)
  greet()
  lock()
else
  lock2()
end
end
greet()
lock()



Please let me know if this works.

Thanks,
Matt