Advertisement
melzneni

sys2_service_doorLock

Feb 10th, 2020
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. --sys2_service_doorLock
  2.  
  3. os.loadAPI("sys/syslib")
  4.  
  5. --syslib end
  6.  
  7. local CONST_PWD_CONF = "pwd.config"
  8. local CONST_DOOR_PWD = "n145vdrt1v5f"
  9. local CONST_DEFAULT_PWD = "1234"
  10. local pwd = CONST_DEFAULT_PWD
  11.  
  12. if fs.exists(CONST_PWD_CONF) then
  13. local f = fs.open(CONST_PWD_CONF, "r")
  14. pwd = f.readAll()
  15. f.close()
  16. end
  17.  
  18. local idsTerminals = {}
  19.  
  20. function openDoor()
  21. keepDoorOpen()
  22. sleep(5)
  23. closeDoor()
  24. end
  25.  
  26. local monitor = peripheral.find("monitor")
  27. monitor.setTextScale(4)
  28.  
  29. function displayMessage(msg)
  30. monitor.clear()
  31. monitor.setCursorPos(1, 1)
  32. monitor.write(msg)
  33. end
  34.  
  35. displayMessage("locked")
  36.  
  37. function closeDoor()
  38. redstone.setOutput("front", false)
  39. displayMessage("locked")
  40. for i, id in pairs(idsTerminals) do syslib.sendRednet(id, "@doorTerminal:closed") end
  41. end
  42.  
  43. function keepDoorOpen()
  44. redstone.setOutput("front", true)
  45. displayMessage("open")
  46. for i, id in pairs(idsTerminals) do syslib.sendRednet(id, "@doorTerminal:open") end
  47. end
  48.  
  49. while true do
  50. local id, msg = syslib.receiveRednet()
  51. local tag, pts = syslib.getMsgData(msg)
  52. if pts[1] == "password" then
  53. local included = false
  54. for i, d in pairs(idsTerminals) do if id == d then included = true; break end end
  55. if not included then table.insert(idsTerminals, id) end
  56.  
  57. if pts[2] == pwd then
  58. openDoor()
  59. else
  60. syslib.sendRednet(id, "@doorTerminal:fail")
  61. closeDoor()
  62. end
  63. elseif pts[1] == "open" then
  64. if pts[2] == CONST_DOOR_PWD then
  65. openDoor()
  66. else closeDoor()
  67. end
  68. elseif pts[1] == "close" then
  69. closeDoor()
  70. elseif pts[1] == "keepOpen" then
  71. if pts[2] == pwd then
  72. keepDoorOpen()
  73. syslib.log("door", "keeping door open")
  74. else syslib.log("door", "wrong password")
  75. end
  76. elseif pts[1] == "setPwd" then
  77. if pts[2] == pwd then
  78. pwd = pts[3]
  79. local f = fs.open(CONST_PWD_CONF, "w")
  80. f.write(pwd)
  81. f.close()
  82. syslib.log("door", "successfully set new password")
  83. else syslib.log("door", "wrong old password to reset password")
  84. closeDoor()
  85. end
  86. else print("unknown message: ", msg)
  87. end
  88. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement