Advertisement
Guest User

ScanDoor

a guest
Dec 14th, 2015
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.77 KB | None | 0 0
  1. local rs
  2. local component = require("component")
  3. local gpu = component.gpu
  4. local sides = require("sides")
  5. local event = require("event")
  6. local term = require("term")
  7.  
  8.  
  9. --Проверим есть ли у нас компонент редстоуна
  10. if not component.isAvailable("redstone") then
  11.   print("Для работы программы требуется Красный камень(ввод/вывод) или Плата на красном камне")
  12.   return
  13. else
  14.   rs = component.redstone
  15. end
  16.  
  17. --Задаем цвета
  18. local colors = {
  19.   background = 0x8B8B83, --серый
  20.   borders = 0x000000, --черный
  21.   lime = 0x00FF00, --салатовый
  22.   red = 0xFF0000, --красный
  23. }
  24.  
  25. local xSize, ySize
  26.  
  27. --Наша база имен с доступом
  28. local nicknames = {
  29.    "newbie"
  30. }
  31.  
  32. --Визуализация проверки данных
  33. local function visualScan(x, y, time)
  34.   local xPos = x
  35.   gpu.setBackground(colors.background)
  36.   gpu.setForeground(colors.borders)
  37.  
  38.   gpu.set(xPos, y, "█")
  39.   os.sleep(time)
  40.  
  41.   for i = 1, 10 do
  42.     gpu.set(xPos, y, "█")
  43.     xPos = xPos + 2
  44.     os.sleep(time)
  45.   end
  46. end
  47.  
  48. --Проверка имени с базой данных
  49. local function checkNickname(name)
  50.   for i = 1, #nicknames do
  51.     if name == nicknames[i] then
  52.       return true
  53.     end
  54.   end
  55.   return false
  56. end
  57. --Указываем редстоун контролеру какой сигнал откуда и как выдавать
  58. local function redstone(arg)
  59.   if arg then
  60.     rs.setOutput(sides.top, 0) -- тут стоит инвертор так как под дверью красный факел
  61.     os.sleep(5)
  62.     rs.setOutput(sides.top, 15)
  63.   end
  64. end
  65.  
  66. --local width, height = gpu.getResolution()
  67. gpu.setResolution(34, 17) --задаем размеры нашего экрана
  68. xSize, ySize = 34, 17 -- заносим их в ранее созданные переменные
  69. gpu.setBackground(colors.background)
  70. --Просто функция для уменьшения строк кода
  71. local function fill()
  72.   gpu.fill(1, 1, xSize, ySize, " ")
  73. end
  74.  
  75. fill()
  76.  
  77. --Собственно сам наш цикл
  78. while true do
  79.   local e ={ event.pull()}
  80.   if e[1] == "touch" then
  81.     if checkNickname(e[6]) then
  82.       visualScan(8, 8, 0.2)
  83.       gpu.setBackground(colors.lime)
  84.       fill()
  85.       print("        Приветствую, " .. e[6])
  86.       redstone(true)
  87.       gpu.setBackground(colors.background)
  88.       fill()
  89.       term.clear()
  90.     else
  91.       visualScan(8, 8, 0.2)
  92.       gpu.setBackground(colors.red)
  93.       fill()
  94.       print("    В доступе отказано, " .. e[6])
  95.       os.sleep(2)
  96.       gpu.setBackground(colors.background)
  97.       fill()
  98.       term.clear()
  99.     end
  100.   end
  101. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement