serafim
-
Публикации
367 -
Зарегистрирован
-
Посещение
-
Победитель дней
46
Сообщения, опубликованные пользователем serafim
-
-
33 минуты назад, yura0138 сказал:можно ли сделать так, чтоб она не вставала
Прога становится не просто так, в этот момент реактор в одном шаге от взрыва, поскольку конденсатор успел сгореть на 100 % вместо того чтоб поменяться на 95 %, это может зависеть как от самой схеме в реакторе, так и от лагов, поскольку OC в майне имеет низкий приоритет.
38 минут назад, yura0138 сказал:С редстоун кондерами, используя схему whiskas, нет смысла делать
Всё верно, редстоун конденцаторы физически не могут поглотить столько тепла, их нужно использовать толь на начальном этапе, например с одинарными стержнями.
41 минуту назад, yura0138 сказал:при рестарте ПК и робот отрубаются, отрубится ли реактор
На сервере никогда не тестировал, у тебя есть шанс поделится инфой со всеми, поставь к примеру один одинарный стержень и жди рестарта
-
В общем Дюп возможен только в креативе и только с конденсаторами с одинаковым повреждением
Обновил прогу автокрафта конденсаторов, добавил чтоб на 1.12.2 чинил кондёры из пыли до 90+ %
Убрал дюп на всякий пожарный
-
-
5 часов назад, yura0138 сказал:Но реактор бахнул....:(
Пожалуй по умолчанию поставлю на 95% вместо 97% немного увеличится расход лазурита, но зато с гарантией не будет взрыва
5 часов назад, yura0138 сказал:прогу для робота то же стоит изменить, или не стоит и начать юзать этот дюп?:)
Странно что он сразу по две штуки берёт, так ещё и дюпает
Не, так не честно надо исправить
-
4 часа назад, yura0138 сказал:снизьте%замены конденсат.
Это означает что конденсатор выгорел на 100 %, хотя меняться он должен при 97%, то есть за 1 секунду он сгорает на 4 %
На строке 26 нужно снизить % на 95 например local perDamage = 97 --процент износа конденсатора при котором он меняется
4 часа назад, yura0138 сказал:получился дюп:)
Хм
-
-
Что то в моде IC2 под майн 1.12.2 сломаны названия блоков, у всех стоит ic2:te хоть у печки, хоть у реактора.
Названия стержней изменены с MOX на mox и Uran на uranium
Изменили прочность лазуритовому конденсатору с 10000 на 100000 задействовал maxDamage для вычислений
Камера реактора теперь начинаются со слота 1 а не с 0
Почему то перестало работать сохранение slotReac[#slotReac] = i заменил на table.insert(slotReac, i)
Если конденсатора в реакторе нет, то вместо nil возвращает какуюту дич (-1.#IND)
Изменил функции на поиск пустого слота с помощью "minecraft:air"Код переписал, как всё проверю выложу
-
2 часа назад, yura0138 сказал:если запустить тест от Asior то пк определяет реактор как ic2:te
Прога разрабатывалась на 1.7.10, похоже на 1.12.2 название реактора поменяли, лан щас поставлю клиент, посмотрю как добавить совместимость
-
9 часов назад, yura0138 сказал:где достать много лазурита
Самый простой вариант, накопать, использовать робота копающего по горизонту на уровне лазурита, примерно высота 13
можеш попробовать эту прогу, хотя давненько её не обновлял
Можно купить, если на сервере играеш, обычно он дёшево стоит так как мало где в крафтах используется
-
8 часов назад, yura0138 сказал:в команде скана реактора не проставлена r в названии блока
Это сделано намеренно, например название сундука в разных модах начинается то с большой(Chest) то с маленькой буквы(chest), чтоб всё не перебирать проще удалить первую букву, также и реактор, могу ошибаться но помойму в 1.12.2 название с большой буквы начинается, в общем так надёжней.
8 часов назад, yura0138 сказал:хм, сейчас проверил, и с исправленной опечаткой не работает
опиши подробней и желательно попробуй в креативе работает, нет
-
А вот сделать переработку ресурсов вполне реально, насчёт эффективности х.з.
-
5 минут назад, ProgramCrafter сказал:стабильные схемы будут проигрывать схемам, использующим микроконтроль
схема интересная, но её так ни кто и не реализовал, по сути нужно следить за износом теплоотводов и транспозером менять местами израсходованные вентиляторы с незадействованными (подсвечены чёрным) для их охлаждения.
10 минут назад, ProgramCrafter сказал:микроконтроль со стороны робота
Невозможен, для управления реактором нужен адаптер и транспозер, а робот с ними не взаимодействует, ток редстоун сигнал пинать и усё.
-
10 минут назад, ProgramCrafter сказал:я не рекомендовал бы выдавать сигнал на нагретый реактор вне зависимости от его температуры
Можно, если это стабильный реактор, взорвать его можно только умышленно.
Для одной дробилки с печкой 100 eu/t за глаза + батарея во время простоя заряжается.
-
Для управления реактором нужен адаптер , увы но робот не умеет с ним работать, ни как блок, ни как улучшение
Вот тут простая прога управления реактором поддерживающая заряд в аккумуляторе на уровне 97-100 %
Скрытый текст
Говорю сразу. стержни она не меняет, но отлично подходит для маленького безопасного реактора на 100 eu/t
Скрытый текст
Вообще подобное управление можно сделать на логике (не идеально но работает)
Когда батарея полностью заряжена она выдаёт сигнал, но при малейшим его разряде сигнал гаснет,
чтоб реактор не дёргался в судорогах (заряд - разряд) построим схему задержки включения.
Нужен таймер(Timer), формирователь импульса(Pulse former), переключатель(T-flipflop)
Скрытый текст
Если батарея заряжена то она выдаёт сигнал, также таймер выдаёт импульсы через определённые интервалы
(можно поиграться со значением) как только батарея начинает разряжается её сигнал гаснет и сигнал с таймера идёт на
формирователь импульсов, срабатывает переключатель, блокируя таймер и активирует реактор,
как только батарея зарядится она выдаст сигнал и цикл повторится.
-
1
-
-
Добавил замену отражателей
Исправил баг с заполненным сундуком и вылет в ошибку при перегреве
По поводу версии под старый апи, пока не вижу нормального способа как реализовать.
Тупо перебором делать лагульку не хочу, а вести расчёт из за рассинхрона при лагах ни к чему хорошему не приведёт
-
3 часа назад, hohserg сказал:можно чекать только слоты с расходниками
Там так и делается, в таблицу slotReac сохраняется расположения конденсаторов а затем только их чекают.
Перебор всех слотов привёл как пример, На строке 35 можно поменять значение slotsReac например на 13 ячеек
Вести расчёт на сколько за тик меняются проценты без опроса реактора идея отличная, но требует много мороки с кодом
-
13 часа назад, eu_tomat сказал:13*0.05 = 0.65 секунд на проверку
Информация подтвердилась, перебор 13 ячеек реактора занимает 0.65 секунд
Накидал кусок кода из доступного апи, можете сами потестить
Скрытый текстlocal com = require("component") local computer = require("computer") local sideReac,sideInv local slotReac = {} local tr = com.transposer local reactor = com.reactor_chamber print("поиск реактора и сундука") for i=0,5 do local vr = tr.getInventorySize(i) if vr then if vr >= 54 then print("реактор в стороне: "..i) sideReac = i end if vr == 27 then print("сундук в стороне: "..i) sideInv = i end end end if not sideReac then print("\n".."камера реактора не найдена") os.exit() end if not sideInv then print("\n".."сундук не найден") os.exit() end local slotsReac = tr.getInventorySize(sideReac) local slotsInv = tr.getInventorySize(sideInv) print("сохранение расположения конденсаторов") local start = computer.uptime() for i = 1,slotsReac do -- количество ячеек local data = tr.getStackInSlot(sideReac,i) if data then if string.find(data.name,"ondensator") then per = math.ceil(100*data.damage/10000) print("слот: "..(i).." износ: "..per.." %") slotReac[#slotReac+1] = i end end end print("времени затрачно на опрос реактора: "..computer.uptime()-start)
На строке 35 поменяйте slotsReac на то значение ячеек реактора которое вас интересует от 1 до 54
Перебор всех 54 ячеек реактора занимает 2,9 секунды
-
18 часов назад, hohserg сказал:А на старом апи транспозера нельзя сделать тот же функционал?
Там скорее огрызок от апи, сделать то оно конечно можно, но сильно сомневаюсь что оно будет работать а не лагать.
По моим наблюдениям конденсатор за одну секунду может выгореть от 0 до 4 % в зависимости от схемы в реакторе.
Реактор обновляет данные 1 раз в секунду, сейчас прога опрашивает его каждые 0,7 секунд методом транспозера getAllStacks
получая сразу всё содержимое камеры реактора в виде таблицы, затем молниеносно проверяет ранее сохранённое
расположение конденсаторов не перебирая всё содержимое камеры.
Возьмём к примеру эту эффективную схему
Скрытый текст
Здесь 13 конденсаторов, и без метода getAllStacks придётся перебирать их по очереди делая 13 опросов реактора, и это нужно
успеть сделать за 1 секунду, или на следующей секунде конденсатор уже может догореть и взрыв обеспечен
Вторая замеченная проблема это поиск стороны расположения реактора и сундука, там использован метод транспозера getInventoryName которого также нет на ранних версиях.
Сейчас можно произвольно лепить управляющие блоки реактору, программа сама их найдёт и назначит, в противном случае придётся назначать стороны ручками, или строить только один вариант расположения блоков.
Возможно это можно будет победить опросом размера инвентаря, но это не сильно надёжно и возможны ошибки,
например если поставят нестандартный большой сундук, а сейчас поиск происходит по имени и ошибок быть не может.
Возможны ещё какие то проблемы вылезут в процессе.
Как по мне зря иговые серваки сидят на старом OC по три и более лет, обновить не так уж и сложно, тем более что мод развивается.
-
1
-
-
В программу контроля реактора добавил проверку на версию OC,
необходимые методы у транспозера появились только с версии мода opencomputers 1.7+
Увы но большинство серверов до сих пор сидят на 1.6.2 которому уже больше трёх лет,
в итоге прога вылетает в ошибку.
пример проверки на версию OC
Скрытый текстlocal arr = {} for w in string.gmatch(_OSVERSION, "%d+") do table.insert(arr, w) end if tonumber(table.concat(arr)) < 170 then print("обнаружен ".._OSVERSION.."\n".."требуется версия 1.7 +") os.exit() end
-
18 часов назад, ArtHacker сказал:а это как?
зажал на долго Ctrl C пока консоль не отзовётся, защиты от прерывания не было, просто while true print + авторан
-
1 час назад, ArtHacker сказал:нужны поправки в autorun.lua
угу
подождал пока по прерыванию прога ляжет, да авторан и while true
-
Скрытый текст
Мда, этож кто ж такой ненавистный, ещё и в автозагрузке сидит с защитой от прерывания
-
Для одного проекта потребовалось управлять контроллером красного камня со всех сторон,
к этой проге добавил кнопок на остальные стороны
Скрытый текст
-
3
-
-
осталось whitelist допилить
что то типа этого
Скрытый текстlocal nicknames = {"Arsean","sherlock2202"} local name = scan[1].name for i = 1, #nicknames do if name == nicknames[i] then print("ok") break end end
-
1
-

Программа "Очень много электричества"
в Выполненные заказы
Опубликовано:
Как то это всё сомнительно, я ведь уже предлагал дополнительную защиту на стороннем моде Nuclear Contol + элемент И
Элемент И на красной пыли: