View difference between Paste ID: JfxEk7xV and iU7UM5Hk
SHOW: | | - or go back to the newest paste.
1
local authorized = {}
2
local authorizing
3
local close
4
5
local handle = io.open(".auth", "r")
6
if handle then
7
  for user in handle:lines() do
8
    authorized[user] = true
9
  end
10
  handle:close()
11
end
12
13
while true do
14
  event = {os.pullEvent()}
15
  if event[1] == "biolock" then
16
    if authorized[event[2]] then
17
      if rs.getOutput("right") then
18
        --accept new authorized entry
19
        authorizing = true
20
      else
21
        rs.setOutput("right", true)
22
        close = os.startTimer(20)
23
      end
24
    elseif authorizing then
25
      authorized[event[2]] = true
26
      authorizing = false
27
      local handle = io.open(".auth", "w")
28
      if handle then
29
        for k, v in pairs(authorized) do
30
          handle:write(k.."\n")
31
        end
32
        handle:close()
33
      end
34
    end
35
  elseif event[1] == "redstone" then
36
    if rs.getInput("bottom") then
37
      authorizing = false
38
      rs.setOutput("right", false)
39
    end
40
  elseif event[1] == "timer" and event[2] == close then
41
    authorizing = false
42
    rs.setOutput("right", false)
43
  end
44
end