Advertisement
Syldarion

SylLock -- ComputerCraft

Dec 3rd, 2020 (edited)
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. -- SylLock
  2.  
  3. tArgs = { ... }
  4. if #tArgs ~= 1 then
  5. print("Usage: SylLock [setup|run]")
  6. return
  7. end
  8.  
  9. local side
  10. local password
  11. local opentime
  12.  
  13. local function save(table, name)
  14. local file = fs.open(name, "w")
  15. file.write(textutils.serialize(table))
  16. file.close()
  17. end
  18.  
  19. local function load(name)
  20. local file = fs.open(name, "r")
  21. local data = file.readAll()
  22. file.close()
  23. return textutils.unserialize(data)
  24. end
  25.  
  26. local function loadUserSettings()
  27. settings = load("usersettings")
  28. side = settings["side"]
  29. password = settings["password"]
  30. opentime = settings["opentime"]
  31. end
  32.  
  33. local function writeUserSettings()
  34. settings = {}
  35. settings["side"] = side
  36. settings["password"] = password
  37. settings["opentime"] = opentime
  38. save(settings, "usersettings")
  39. end
  40.  
  41. local function tryPassword()
  42. term.clear()
  43. term.setCursorPos(1,1)
  44. write("password: ")
  45. local input = read("*")
  46. return input == password
  47. end
  48.  
  49. local function setupLock()
  50. term.clear()
  51. textutils.slowPrint("SylLock v0.1")
  52.  
  53. if fs.exists("usersettings") then
  54. write("User settings found. Enter password to continue.")
  55. loadUserSettings()
  56. local passwordCorrect = tryPassword()
  57. if not passwordCorrect then
  58. return
  59. end
  60. end
  61.  
  62. side = "none"
  63. valid_sides = {left = true, right = true, top = true, bottom = true}
  64. while valid_sides[side] == nil do
  65. write("Enter door side (left/right/top/bottom/back): ")
  66. local input = read()
  67. side = input
  68. end
  69. password = ""
  70. pwinone = "one"
  71. pwintwo = "two"
  72. while pwinone ~= pwintwo do
  73. write("Enter door password: ")
  74. local input = read("*")
  75. pwinone = input
  76. write("Confirm door password: ")
  77. input = read("*")
  78. pwintwo = input
  79. end
  80. password = pwinone
  81. opentime = nil
  82. while opentime == nil do
  83. write("Enter open time (in seconds): ")
  84. local input = read()
  85. opentime = tonumber(input)
  86. end
  87. writeUserSettings()
  88. end
  89.  
  90. local function runLock()
  91. loadUserSettings()
  92. while true do
  93. local passwordCorrect = tryPassword()
  94. if passwordCorrect then
  95. term.clear()
  96. term.setCursorPos(1,1)
  97. print("ACCESS GRANTED")
  98. rs.setOutput(side,true)
  99. sleep(opentime)
  100. rs.setOutput(side,false)
  101. else
  102. print("ACCESS DENIED")
  103. sleep(2)
  104. end
  105. end
  106. end
  107.  
  108. if tArgs[1] == "setup" then
  109. setupLock()
  110. elseif tArgs[1] == "run" then
  111. runLock()
  112. else
  113. print("Usage: SylLock [setup|run]")
  114. end
  115.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement