Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Config
- local iLevel = 5 -- Securitylevel of this station
- local iLevelLength = 6 -- length of a security level key
- local sRsOutput = "bottom" -- Redstone output for the door
- local iOpenTime = 3 -- amount of seconds the door should be open when opened from within
- -- End of config
- term.clear()
- term.setCursorPos(1,1)
- local hMKey = fs.open("masterkey", "r")
- local sMKey = hMKey.readAll()
- local sLevelMasterKey = string.sub(sMKey, iLevel*iLevelLength, (iLevel*iLevelLength) + iLevelLength)
- local iCurrentOpenTime = 0
- local bDebug = true
- local tTID = os.startTimer(1)
- hMKey.close()
- function clear()
- term.clear()
- term.setCursorPos(1,1)
- print("Press enter to open the door")
- print(sLevelMasterKey)
- end
- clear()
- while (true) do
- local eEvent, cParam1, cParam2 = os.pullEvent ()
- clear()
- if (bDebug) then
- print("---")
- print(tTID)
- print("---")
- print("event=" .. eEvent)
- if (cParam1 ~= nil) then
- print("par1=" .. cParam1)
- end
- print("---")
- print("openTime=" .. iCurrentOpenTime)
- print("---")
- end
- if eEvent == "key" then
- rs.setOutput(sRsOutput, true)
- sleep(iOpenTime)
- rs.setOutput(sRsOutput, false)
- tTID = os.startTimer(1)
- else
- tTID = os.startTimer(1)
- end
- if (fs.exists("disk/key")) then
- hFile = fs.open("disk/key", "r")
- sKey = hFile.readAll()
- if (bDebug) then
- print("ExpectedKey="..sLevelMasterKey)
- print("GivenKey="..sKey)
- end
- hFile.close()
- if (string.len(sKey) >= string.len(sLevelMasterKey)) then
- sLevelKey = string.sub(sKey, iLevel*iLevelLength, (iLevel*iLevelLength) + iLevelLength)
- if (sLevelKey == sLevelMasterKey) then
- iCurrentOpenTime = 1
- end
- end
- end
- if (iCurrentOpenTime > 0) then
- print("Door opened")
- rs.setOutput(sRsOutput, true)
- else
- rs.setOutput(sRsOutput, false)
- end
- iCurrentOpenTime = iCurrentOpenTime - 1
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement