Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local pullEvent = os.pullEvent
- os.pullEvent = os.pullEventRaw
- --Setup
- local slaves = {}
- local message = nil
- local input = nil
- local devMode = false
- local debug = false
- --User defigned vars
- slaves[1] = 11
- local mainPass = "asdf"
- local adminPass = "qwerty"
- local rsSide = "back"
- local mdSide = "right"
- local travelTime = 8
- local openTime = 10
- local openColor = colors.orange
- local closeColor = colors.white
- local overrideColor = colors.red
- local lockColor = colors.pink
- function clear()
- term.clear()
- term.setCursorPos(1,1)
- end
- function checkId(tab,val)
- for index,value in pairs(tab) do
- if value == val then
- return true
- end
- end
- return false
- end
- function getMessage()
- message = nil
- local id, msg, proto = rednet.receive("auth")
- if checkId(slaves,id) then
- message = msg
- else
- message = "err"
- end
- if debug then
- print(message)
- end
- end
- function getInput(prompt,secure)
- input = nil
- local temp = nil
- temp = read()
- input = temp
- if debug then
- print(input)
- end
- end
- function broadcast(msg)
- for x,y in pairs(slaves) do
- rednet.send(y,msg,"auth")
- end
- end
- function maintinence(enable)
- if enable == true then
- print("Opening")
- rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),overrideColor))
- sleep(1)
- else
- print("Closing")
- rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),overrideColor))
- sleep(1)
- end
- end
- function devConsole()
- clear()
- devMode = true
- broadcast("devOn")
- while devMode do
- print(".>")
- parallel.waitForAny(getMessage,getInput)
- os.pullEvent = pullEvent
- if message == "open" then
- door("open")
- elseif message == "close" then
- door("close")
- elseif message == "doors" then
- maintinence(true)
- elseif message == "quit" then
- devMode = false
- broadcast("devOff")
- maintinence(false)
- end
- if input == "open" then
- door("open")
- elseif input == "close" then
- door("close")
- elseif input == "doors" then
- maintinence(true)
- elseif input == "quit" then
- devMode = false
- broadcast("devOff")
- maintinence(false)
- end
- end
- end
- function door(mode,delay)
- if mode == "open" then
- rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),openColor))
- sleep(delay)
- rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),openColor))
- sleep(1)
- end
- if mode == "close" then
- rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),closeColor))
- sleep(delay)
- rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),closeColor))
- sleep(1)
- end
- if mode == "lock" then
- rs.setBundledOutput(rsSide,colors.combine(rs.getBundledOutput(rsSide),lockColor))
- sleep(delay)
- rs.setBundledOutput(rsSide,colors.subtract(rs.getBundledOutput(rsSide),lockColor))
- sleep(1)
- end
- end
- --Startup
- clear()
- rs.setBundledOutput(rsSide,0)
- rednet.open(mdSide)
- door("close")
- broadcast("devOff")
- while true do
- print("Listening")
- getMessage()
- if message == adminPass then
- print("Dev Console")
- devConsole()
- elseif message == mainPass then
- print("Access Granted")
- broadcast("Access Granted")
- door("open",travelTime)
- sleep(openTime)
- door("close",travelTime)
- elseif message ~= nil then
- broadcast("Access Denied")
- print("Access Denied using " .. message)
- end
- message = nil
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement