SHARE
TWEET

ScanDoor

a guest Dec 14th, 2015 295 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top