--[[ This is a program for ComputerCraft Instructions: 1. Login to your computer's prompt -Your computer is usually there by default 2. Download with "pastebin get 5dNPx84w startup" 3. IMPORTANT! Make sure to view or change the default password by typing "edit startup" and changing line 19 -The password can also be changed in-program -However, it will RESET to the default if the computer restarts! 4. Make sure to change line 18 to reflect either where the door is, or a redstone wire connection 5. Run by typing "startup" or by rebooting your computer (CTRL-R) ]] local side ="left" --Side the door is on relation to the computer local password = "password" --Make sure to change this! local openTime = 3 --Time in seconds the door will stay open local input = "" local status = "Door status: CLOSED" --Default status flag DO NOT EDIT function getInput(prompt) print(prompt) term.write(">") input = read("*") end function validate(input) if input == password then return true else return false end end function openDoor(time) status = "Door status: OPEN" setFooter(status) rs.setOutput(side, true) sleep(time) status = "Door status: CLOSED" setFooter(status) rs.setOutput(side, false) end function setFooter(text) term.setCursorPos(1, 19) term.clearLine() term.write(text) end function callMainMenu() term.clear() setFooter(status) term.setCursorPos(1, 1) print("Flawedspirit Imperial Dynamics Inc.") print("Access Mediator v1.1") term.setCursorPos(1, 4) print("1. Relock accessway") print("2. Change password") print("3. Override door") print("4. Open access for " .. openTime .. " seconds") print("5. Change activation time") term.write(">") local event, input = os.pullEvent("char") if input == "1" then print("Relocking...") sleep(1) start() elseif input == "2" then changePass() elseif input == "3" then overrideDoor(input) elseif input == "4" then openDoor(openTime) callMainMenu() elseif input == "5" then changePulse() else print("**Invalid option**") sleep(2) callMainMenu() end end function changePass() term.clear() setFooter(status) term.setCursorPos(1, 1) print("Change Password:") term.setCursorPos(1, 3) getInput("Enter current access code:") if validate(input) == true then getInput("Enter new access code:") --New password must be entered twice local newCode1 = input getInput("Enter new access code again:") local newCode2 = input --Make sure new password is correct if newCode1 == newCode2 then password = newCode2 print("Password changed.") sleep(2) start() else print("**The new passwords did not match**") sleep(2) changePass() end else print("**Incorrect password**") sleep(2) start() end end function overrideDoor(input) if input == "3" and not redstone.getOutput(side) then status = "Door status: FORCE OPEN" setFooter(status) redstone.setOutput(side, true) elseif input == "3" and redstone.getOutput(side) then status = "Door status: CLOSED" setFooter(status) redstone.setOutput(side, false) end sleep(2) callMainMenu() end function changePulse() term.clear() setFooter(status) term.setCursorPos(1, 1) print("Change Activation Time:") term.setCursorPos(1, 3) print("1. Short (3 sec)") print("2. Long (5 sec)") print("3. Extra Long (10 sec)") print("4. Back") term.write(">") local event, input = os.pullEvent("char") if input == "1" then openTime = 3 elseif input == "2" then openTime = 5 elseif input == "3" then openTime = 10 elseif input == "4" then callMainMenu() else print("**Invalid option**") sleep(2) changePulse() end print("Activation time changed.") sleep(2) callMainMenu() end function start() --Prevent user from terminating program early local pullEvent = os.pullEvent os.pullEvent = os.pullEventRaw term.clear() setFooter(status) term.setCursorPos(1, 1) getInput("Enter access code:") if validate(input) == true then openDoor(openTime) callMainMenu() else print("**Incorrect password**") sleep(2) start() end end --Run the thing! start()