Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --sys2_service_doorLock
- os.loadAPI("sys/syslib")
- --syslib end
- local CONST_PWD_CONF = "pwd.config"
- local CONST_DOOR_PWD = "n145vdrt1v5f"
- local CONST_DEFAULT_PWD = "1234"
- local pwd = CONST_DEFAULT_PWD
- if fs.exists(CONST_PWD_CONF) then
- local f = fs.open(CONST_PWD_CONF, "r")
- pwd = f.readAll()
- f.close()
- end
- local idsTerminals = {}
- function openDoor()
- keepDoorOpen()
- sleep(5)
- closeDoor()
- end
- local monitor = peripheral.find("monitor")
- monitor.setTextScale(4)
- function displayMessage(msg)
- monitor.clear()
- monitor.setCursorPos(1, 1)
- monitor.write(msg)
- end
- displayMessage("locked")
- function closeDoor()
- redstone.setOutput("front", false)
- displayMessage("locked")
- for i, id in pairs(idsTerminals) do syslib.sendRednet(id, "@doorTerminal:closed") end
- end
- function keepDoorOpen()
- redstone.setOutput("front", true)
- displayMessage("open")
- for i, id in pairs(idsTerminals) do syslib.sendRednet(id, "@doorTerminal:open") end
- end
- while true do
- local id, msg = syslib.receiveRednet()
- local tag, pts = syslib.getMsgData(msg)
- if pts[1] == "password" then
- local included = false
- for i, d in pairs(idsTerminals) do if id == d then included = true; break end end
- if not included then table.insert(idsTerminals, id) end
- if pts[2] == pwd then
- openDoor()
- else
- syslib.sendRednet(id, "@doorTerminal:fail")
- closeDoor()
- end
- elseif pts[1] == "open" then
- if pts[2] == CONST_DOOR_PWD then
- openDoor()
- else closeDoor()
- end
- elseif pts[1] == "close" then
- closeDoor()
- elseif pts[1] == "keepOpen" then
- if pts[2] == pwd then
- keepDoorOpen()
- syslib.log("door", "keeping door open")
- else syslib.log("door", "wrong password")
- end
- elseif pts[1] == "setPwd" then
- if pts[2] == pwd then
- pwd = pts[3]
- local f = fs.open(CONST_PWD_CONF, "w")
- f.write(pwd)
- f.close()
- syslib.log("door", "successfully set new password")
- else syslib.log("door", "wrong old password to reset password")
- closeDoor()
- end
- else print("unknown message: ", msg)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement