Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 20.08.2024 в Сообщения

  1. 1 балл
    gpu.bind(component.list("screen")()) <--- component.list("screen")() ---> 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'screen' Получается gpu.bind('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'screen') 2 аргумент функции gpu.bind это reset: boolean Поэтому ошибка С какого то момента добавили второй аргумент в gpu.bind Здесь его нет, а здесь есть Можно заменить на gpu.bind(({component.list("screen")()})[1])
  2. 1 балл
    Фактически я так и делал на сборке с gregtechнесколько лет назад. Менял все стержни с помощью ме шин, а не труб, выключая на время замены охладителей подачу топливных стержней. Но дописывать программу для вылавливания момента рестарта сервера мне было откровенно лень. А поскольку после рестарта реактор сперва отсутствовал, а потом превращался в 7 реакторов с другими адресами на время до его самосборки в монолитную структуру с опять же новым адресом, недоделанная программа без обработки таких событий не могла продолжить работу. И пару раз реактор бахнул. Не имея возможности получить предварительные данные о рестарте сервера программа в энный момент времени оказывалась перед фактом отсутствия запрашиваемых методов и происходило это в рандомный момент выполнения кода, зачастую сразу же после проверки на наличие компонента реактор. Хочу сказать, что запрос типа getAllStacks был лимитирован временным интервалом 59 секунд. Прямым текстом написано А на это из известных мне механизмов способен как раз транспозер. И ещё робот. Предвосхищая возможный вопрос сразу скину то, что сохранилось от программы. Ёмкость охладителей которые использовал была 1080к. Контролировался один реактор, остальные, а их было штук 6 подключённых к фризеру, были паралельной цепью. --nuccontrol --1сверху-минус фризер (15) - задействовать --2сзади - плюс фризер (15) - задействовать --5слева - минус топливо(15) - задействовать --0снизу - плюс топливо (0) -включить факел local math,component,nuclear_item,error = require('math'),require('component'),{},0 local event,nuclear_scheme,iter = require('event'),{},1 local u,c,m = 'ic2stuff:hexadeca_uranium_fuel_rod','ic2stuff:coolant_cell_1080k','ic2stuff:hexadeca_mox_fuel_rod' local depleted,vent = 'depleted','heat_vent' --составим таблицу расположений элементов в реакторе for f = 1,9 do nuclear_scheme[f]=m nuclear_scheme[f+18]=m nuclear_scheme[f+27]=m nuclear_scheme[f+45]=m nuclear_scheme[f+9]=c nuclear_scheme[f+36]=c end component.gpu.setResolution(30,15) ------------------------------------------ reFreezer = function()----заменить охладители component.redstone.setOutput(1,15) while component.reactor_chamber.getStackInSlot(14) == c do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(1,0) computer.pullSignal(1) component.redstone.setOutput(2,15) while component.reactor_chamber.getStackInSlot(14) ~= c do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(2,0) return true end reFuel = function()----заменить топливо component.redstone.setOutput(5,15) while component.reactor_chamber.getStackInSlot(5) == dm do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(5,0) computer.pullSignal(1) component.redstone.setOutput(0,15) while component.reactor_chamber.getStackInSlot(5) == m do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(0,0) return true end ------------------------------------------ compareStacks=function() error=0 for f = 1,54 do nuclear_item[f]=component.reactor_chamber.getStackInSlot(f) if not(nuclear_item[f].name:find('vent') or nuclear_item[f].name:find'fuel_rod' or nuclear_item[f].name:find'coolant_cell') --~=nuclear_scheme[f] and nuclear_item[f].name~=vent and nuclear_item[f].name~=vent then error=error+1 end end return true end ----реактор проверить целостность схемы reactor_compare_elements=function() compareStacks() if error > 0 then return error end --если охладители изношены отправить к их замене if nuclear_item[14].damage > 920000 then reFreezer() end compareStacks() if error > 0 then return error end --если топливо выгорело - заменить if nuclear_item[5].name:find('depleted')then component.gpu.set(2,9,'depleted') reFuel() end compareStacks() return error end -----реактор включить выключить nuc = function(flag) if flag==component.reactor_chamber.isReactorWorking() then return true end if flag then component.reactor_chamber.startReactor() else component.reactor_chamber.stopReactor() end --ждём while(not(component.reactor_chamber.isReactorWorking() == flag))do computer.pullSignal(0.1) end return true end --реактор работать до замены охладителей work = function() while component.reactor_chamber.getStackInSlot(14).damage<920000 do component.gpu.set(2,11,'damage: '..tostring(component.reactor_chamber.getStackInSlot(14).damage)..' ') computer.pullSignal(1) local output=component.reactor_chamber.getReactorEUOutput() component.gpu.set(2,12,'reactor output: '..tostring(output)..' ') end return true end ------------------------------ function main() ---выключить реактор nuc(false) reactor_compare_elements() if error > 0 then component.gpu.setResolution(80,40) component.gpu.set(2,2,'схема не верна') return "Схема не верна" end ---включить реактор if component.reactor_chamber.getStackInSlot(14).damage < 920000 and component.reactor_chamber.getStackInSlot(14).label == c or component.reactor_chamber.getStackInSlot(14).label:find(vent) then component.gpu.set('Охладители готовы. Запуск '..tostring(iter)) iter=iter+1 nuc(true) else component.gpu.set(2,2,'Что-то пошло не так...') return false end work() return main() end main() Впрочем, это не более чем пример сохранившийся от давно не существующей на том сервере сборки модов, поэтому является не более чем вариантом возможной реализции без уточнений о перезапуске программы, автовключении компьютера, и внешней обвязке реактора.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...