Asioron

setting_reactor

Jan 31st, 2021
829
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local c = require('component')
  2. local term = require('term')
  3. local fl = require('filesystem')
  4. local srl = require('serialization')
  5. local inv = c.invoke
  6.  
  7. local tempRed = {}
  8. local tempRea = 0
  9. local setting = {}
  10. local temp = {}
  11.  
  12. term.clear()
  13. fl.remove('/etc/reactor')
  14. fl.makeDirectory('/etc/reactor')
  15. print('Вас приветствует мастер настроек реакторного контроллера\nОтключите все реакторы. Для продолжение нажмите Enter')
  16. io.read()
  17. print('Укажите номер стороны к какой подключен реактор\ndown = 0, up = 1, north = 2, south = 3, west = 4, east = 5')
  18. setting = {['side'] = tonumber(io.read())}
  19. print('Укажите номер стороны к какой подключен индикатор (только для калибровки)')
  20. temp = {['side'] = tonumber(io.read())}
  21. print('Проверка датчиков ...')
  22. for k, _ in pairs(c.list("redstone")) do
  23.   tempRed[#tempRed+1] = k
  24.   for i = 0, 5 do
  25.     if inv(k, 'getOutput', i) > 0 then
  26.       inv(k, 'setOutput', i, 0)
  27.     end
  28.   end
  29. end
  30. for k, _ in pairs(c.list("reactor_chamber")) do
  31.   tempRea=tempRea+1
  32. end
  33. if #tempRed ~= tempRea then
  34.   print('Не совпадет количество реакторов и редстоун контроллеров. Проверьте все подключения и повторите настройку')
  35.   os.exit()
  36. end
  37. print('Проверка завершена. Обнаружено '..tempRea..' датчиков\nСейчас по очереди будут включаться реакторы. Ваша задача указать их порядковый номер.')
  38. repeat
  39.   print('Активация реактора')
  40.   inv(tempRed[1], 'setOutput', setting.side, 255)
  41.   inv(tempRed[1], 'setOutput', temp.side, 255)
  42.   for k, _ in pairs(c.list("reactor_chamber")) do
  43.     if inv(k, 'isActive') then
  44.       temp[1] = k
  45.       break
  46.     end
  47.   end
  48.   print('Укажите порядковый номер активного реактора')
  49.   setting[tonumber(io.read())] = {['reactor'] = temp[1], ['redstone'] = tempRed[1]}
  50.   print('Деактивация реактора')
  51.   inv(tempRed[1], 'setOutput', setting.side, 0)
  52.   inv(tempRed[1], 'setOutput', temp.side, 0)
  53.   table.remove(tempRed, 1)
  54.   term.clear()
  55. until #tempRed == 0
  56. print('Укажите номер диапазона для дистанционной связи')
  57. setting.port = tonumber(io.read())
  58. local f = io.open('/etc/reactor/setting.cfg', 'w')
  59. f:write(srl.serialize(setting))
  60. f:close()
  61. print('Настройка завершена!')
RAW Paste Data