Advertisement
Ewgeniy

Untitled

Jan 27th, 2025 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.56 KB | None | 0 0
  1. -- Подключаем библиотеки
  2. local component = require("component")
  3. local event = require("event")
  4. local tty = require("tty")
  5. local computer = require("computer")
  6. local gpu = component.gpu
  7.  
  8. -- Получаем список всех подключённых красных контроллеров
  9. local redstone = component.list("redstone")()
  10.  
  11. -- Проверяем, есть ли хотя бы один красный контроллер
  12. if not redstone then
  13.   print("Красный контроллер не найден!")
  14.   return
  15. end
  16.  
  17. -- Функция для установки редстоун-сигнала на все стороны контроллера
  18. local function setRedstoneSignal(value)
  19.   for address in component.list("redstone") do
  20.     local rs = component.proxy(address)
  21.     for side = 0, 5 do
  22.       rs.setOutput(side, value)
  23.     end
  24.   end
  25. end
  26.  
  27. -- Устанавливаем редстоун-сигнал на максимум (15) при запуске
  28. setRedstoneSignal(15)
  29. print("Редстоун-сигнал установлен на максимум на всех сторонах всех контроллеров.")
  30.  
  31. -- Настройки кард-ридера
  32. local magReader = component.os_magreader
  33.  
  34. local correctPassword = "sherdek_"
  35. local s_playerName = "HappyWindinkg"
  36.  
  37. -- Настройка экрана
  38. gpu.setResolution(50, 16)
  39. tty.clear()
  40. print("========================================")
  41. print("    Вас приветствует АБС!")
  42. print("    Сканируйте зарегистрированную MAG-карту!")
  43. print("========================================")
  44.  
  45. -- Функция для вывода сообщения в определённой строке
  46. local function printMessage(message)
  47.     -- Очищаем строку, где будет выводиться сообщение
  48.     gpu.set(1, 6, "                                                  ")  -- Очистка строки
  49.     gpu.set(1, 6, message)  -- Вывод нового сообщения
  50. end
  51.  
  52. -- Функция обработки данных с кард-ридера
  53. function handleMagData(eventName, address, playerName, cardData, cardUniqueId, isCardLocked, side)
  54.     if cardData == correctPassword and playerName == s_playerName then
  55.         printMessage("Доступ разрешён!")
  56.         -- Выключаем редстоун-сигнал на 3 секунды
  57.         setRedstoneSignal(0)
  58.         printMessage("Редстоун-сигнал выключен на 3 секунды.")
  59.         computer.pullSignal(3)  -- Ждём 3 секунды
  60.         setRedstoneSignal(15)   -- Включаем сигнал обратно
  61.         printMessage("Редстоун-сигнал снова включён.")
  62.     elseif cardData == correctPassword and playerName ~= s_playerName then
  63.         printMessage("Хорошая попытка, но доступ всё равно запрещён!")
  64.     elseif cardData ~= correctPassword and playerName == s_playerName then
  65.         printMessage("Не та карта!")
  66.     else
  67.         printMessage("Убери своё барахло из моего считывателя карт!")
  68.     end
  69. end
  70.  
  71. -- Подписываемся на событие кард-ридера
  72. event.listen("magData", handleMagData)
  73.  
  74. -- Основной цикл программы
  75. while true do
  76.     event.pull()  -- Ждём событий
  77. end
  78.  
  79. -- Отписываемся от события при завершении программы
  80. event.ignore("magData", handleMagData)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement