Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Variables -----------------------------------------------
- local password = "2707"
- local keypadtable = {{3,2,"1"}, {4,2,"2"}, {5,2,"3"}, {3,3,"4"}, {4,3,"5"}, {5,3,"6"}, {3,4,"7"}, {4,4,"8"}, {5,4,"9"}}
- local dooropendelay = 4
- local errordelay = 3
- local monitorlocation = 'back'
- local redstonesignalside = 'left'
- ------------------------------------------------------------
- local monitor = peripheral.wrap(monitorlocation)
- local maxx, maxy = monitor.getSize()
- local function idleScreen ()
- monitor.clear()
- monitor.setCursorPos(2,2)
- monitor.write("Enter")
- monitor.setCursorPos(3,3)
- monitor.write("PIN")
- end
- local function loginOK ()
- monitor.clear()
- monitor.setCursorPos(1,3)
- monitor.write("Welcome")
- end
- local function loginFail ()
- monitor.clear()
- monitor.setCursorPos(2,3)
- monitor.write("Error")
- end
- local function printKeyPad ()
- monitor.clear()
- for i=1,#keypadtable do
- monitor.setCursorPos(keypadtable[i][1],keypadtable[i][2])
- monitor.write(keypadtable[i][3])
- end
- end
- local function getKeyFromPad (xclick, yclick)
- for i=1,#keypadtable do
- if ((keypadtable[i][1] == xclick) and (keypadtable[i][2] == yclick)) then
- return (keypadtable[i][3])
- end
- end
- return ('')
- end
- local function openDoor ()
- redstone.setOutput (redstonesignalside, true)
- end
- local function closeDoor ()
- redstone.setOutput (redstonesignalside, false)
- end
- -- MAIN ------------------------------------------------------------
- while true do
- idleScreen()
- local pwentered = ''
- -- Get first keypress and show pinpad
- local event, monside, xpos, ypos = os.pullEvent()
- if event == 'monitor_touch' then
- print ('* Starting keypad entry')
- printKeyPad()
- end
- while (tonumber(string.len(pwentered)) < tonumber(string.len(password))) do
- local pressed = ''
- local event, monside, xpos, ypos = os.pullEvent()
- if event == 'monitor_touch' then
- local pressed = tostring(getKeyFromPad (xpos, ypos))
- if pressed ~= "" then
- pwentered = pwentered .. pressed
- print ("* Pressed: " .. pressed)
- end
- end
- end
- if (pwentered == password) then
- print ('* Login SUCCESS')
- loginOK ()
- openDoor ()
- sleep (dooropendelay)
- closeDoor ()
- else
- print ('* Login FAIL')
- loginFail ()
- sleep (errordelay)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement