serafim 272 Опубликовано: 9 апреля, 2021 (изменено) Управление реактором IC2 поддерживая заряд в энергохранилище на уровне 97-100 % IC2(1.7.10) https://pastebin.com/Cd8yFFSw или pastebin get Cd8yFFSw r IC2(1.12.2) https://pastebin.com/LkNfzaQv или pastebin get LkNfzaQv r Обновил старую прогу, где то на форуме было упоминание о ней, но даже я не могу её найти, оставлю здесь. Чтобы не жечь стерни в пустую, программа следит за уровнем батареи и управляет реактором по мере необходимости. Есть зашита от перегрева, также если реактор перестал отвечать на запросы ОС (лаг, управляющий блок отвалился, что угодно) Поддерживаются любые батареи, всё автоматически настраивается. Остановить реактор можно нажав любую кнопу по экрану. пример сборки (можно как угодно, главное чтоб адаптер касался реактора и батареи + редстоун подтянуть от пк) Скрытый текст требования компьютер первого уровня (все компоненты первого уровня) контроллер красного камня адаптер Скрытый текст схема реактора на 100 eu/t (более чем достаточно для дробилки с печкой) Скрытый текст Так как реактор безопасный, то подобное управление можно сделать и без ОС на редстоуне (не идеально но работает) Скрытый текст Изменено 12 апреля, 2021 пользователем serafim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 9 апреля, 2021 @serafim , меня смущает этот кусок кода: print("пробный запуск") for i,n in pairs({3,2,4,5,0,1}) do red.setOutput(n, 15) if reactor.producesEnergy() then sideRed = n red.setOutput(sideRed, 0) print("реактор в стороне "..sideRed) os.sleep(1) break else red.setOutput(n, 0) end if n == 5 then print("\n".."реактор не запускается") os.exit() end end Во-первых, непонятно, зачем перебирать элементы массива вместо простого цикла for i=0,5 do. Возможно, здесь важен порядок перебора, но итератор pairs не гарантирует нужного порядка. Но даже если в определённой версии Lua порядок соблюдается, то последние два элемента никогда не будут обработаны, потому что цикл оборвётся по условию n==5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim Автор темы 272 Опубликовано: 9 апреля, 2021 (изменено) 1 час назад, eu_tomat сказал: зачем перебирать элементы массива вместо простого цикла for i=0,5 do если на монитор подать редстоун сигнал он погаснет, так как он обычно стоит сверху компьютера, то эту сторону проверяем в последнюю очередь 1 час назад, eu_tomat сказал: итератор pairs не гарантирует нужного порядка возможно, впрочем так монитор у меня никогда не гас, в отличии от for i=0,5 do ради интереса потыкал pairs и ipairs с пол сотни раз, всё норм порядок соблюдён for i,n in pairs({3,2,4,5,0,1}) do print(i.." "..n) end 1 час назад, eu_tomat сказал: цикл оборвётся по условию n==5 да это баг (сторон то 6), исправил уже после как статью выложил Изменено 9 апреля, 2021 пользователем serafim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 9 апреля, 2021 30 минут назад, serafim сказал: ради интереса потыкал pairs и ipairs с пол сотни раз, всё норм порядок соблюдён У меня тоже всегда соблюдалось, но документация не даёт гарантии, что так будет всегда. 31 минуту назад, serafim сказал: да это баг (сторон то 6), исправил уже после как статью выложил Условие n==6 никогда не выполнится. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim Автор темы 272 Опубликовано: 9 апреля, 2021 (изменено) 3 часа назад, eu_tomat сказал: Условие n==6 никогда не выполнится Выполнится если не найдёт реактор, цикл проходит 6 раз n будет равен 6 Изменено 9 апреля, 2021 пользователем serafim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim Автор темы 272 Опубликовано: 9 апреля, 2021 (изменено) 6 минут назад, eu_tomat сказал: Условие n==6 никогда не выполнится да ещё баг вместо n должно быть I Изменено 9 апреля, 2021 пользователем serafim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах