Advertisement
bgsteiner

lockMaster

May 30th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.83 KB | None | 0 0
  1. local pullEvent = os.pullEvent
  2. os.pullEvent = os.pullEventRaw
  3. --Setup
  4. local slaves = {}
  5. local message = nil
  6. local input = nil
  7. local devMode = false
  8. local debug = false
  9.  
  10. --User defigned vars
  11. slaves[1] = 11
  12.  
  13. local mainPass = "asdf"
  14. local adminPass = "qwerty"
  15.  
  16. local rsSide = "back"
  17. local mdSide = "right"
  18.  
  19. local travelTime = 8
  20. local openTime = 10
  21.  
  22. local openColor = colors.orange
  23. local closeColor = colors.white
  24. local overrideColor = colors.red
  25. local lockColor = colors.pink
  26.  
  27. function clear()
  28.     term.clear()
  29.     term.setCursorPos(1,1)
  30. end
  31.  
  32. function checkId(tab,val)
  33.     for index,value in pairs(tab) do
  34.         if value == val then
  35.             return true
  36.         end
  37.     end
  38.     return false
  39. end
  40.  
  41. function getMessage()
  42.     message = nil
  43.     local id, msg, proto = rednet.receive("auth")
  44.     if checkId(slaves,id) then
  45.         message = msg
  46.     else
  47.         message = "err"
  48.     end
  49.     if debug then
  50.         print(message)
  51.     end
  52. end
  53.  
  54. function getInput(prompt,secure)
  55.     input = nil
  56.  local temp = nil
  57.     temp = read()
  58.     input = temp
  59.     if debug then
  60.         print(input)
  61.     end
  62. end
  63.  
  64. function broadcast(msg)
  65.     for x,y in pairs(slaves) do
  66.         rednet.send(y,msg,"auth")
  67.     end
  68. end
  69.  
  70. function maintinence(enable)
  71.     if enable == true then
  72.         print("Opening")
  73.         rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),overrideColor))
  74.         sleep(1)
  75.     else
  76.         print("Closing")
  77.         rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),overrideColor))
  78.         sleep(1)
  79.     end
  80. end
  81.  
  82. function devConsole()
  83.     clear()
  84.     devMode = true
  85.     broadcast("devOn")
  86.    
  87.     while devMode do
  88.         print(".>")
  89.         parallel.waitForAny(getMessage,getInput)
  90.         os.pullEvent = pullEvent
  91.         if message == "open" then
  92.             door("open")
  93.         elseif message == "close" then
  94.             door("close")
  95.         elseif message == "doors" then
  96.             maintinence(true)
  97.         elseif message == "quit" then
  98.             devMode = false
  99.             broadcast("devOff")
  100.             maintinence(false)
  101.         end
  102.         if input == "open" then
  103.             door("open")
  104.         elseif input == "close" then
  105.             door("close")
  106.         elseif input == "doors" then
  107.             maintinence(true)
  108.         elseif input == "quit" then
  109.             devMode = false
  110.             broadcast("devOff")
  111.             maintinence(false)
  112.         end
  113.     end
  114. end
  115.  
  116. function door(mode,delay)
  117.     if mode == "open" then
  118.         rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),openColor))
  119.         sleep(delay)
  120.         rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),openColor))
  121.         sleep(1)
  122.     end
  123.     if mode == "close" then
  124.         rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),closeColor))
  125.         sleep(delay)
  126.         rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),closeColor))
  127.         sleep(1)
  128.     end
  129.     if mode == "lock" then
  130.         rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),lockColor))
  131.         sleep(delay)
  132.         rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),lockColor))
  133.         sleep(1)
  134.     end
  135. end
  136.  
  137. --Startup
  138. clear()
  139. rs.setBundledOutput(rsSide,0)
  140. rednet.open(mdSide)
  141. door("close")
  142. broadcast("devOff")
  143.  
  144. while true do
  145.     print("Listening")
  146.     getMessage()
  147.     if message == adminPass then
  148.         print("Dev Console")
  149.         devConsole()
  150.     elseif message == mainPass then
  151.         print("Access Granted")
  152.         broadcast("Access Granted")
  153.         door("open",travelTime)
  154.         sleep(openTime)
  155.         door("close",travelTime)
  156.     elseif message ~= nil then
  157.         broadcast("Access Denied")
  158.         print("Access Denied using " .. message)
  159.     end
  160.     message = nil
  161. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement