FKOLOBKOV
-
Публикации
4 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем FKOLOBKOV
-
-
12 минуты назад, eu_tomat сказал:Именно component.isAvailable() вызывает ошибку?
Если так, то на какой версии Minecraft и OpenComputers?
Если судить по ошибке, то она происходит на 108 строке кода, где идет проверка подключен ли компонент к компьютеру, если подключен - выполнение последующей части кода, где используется данный компонент. Если отсутствует по любой причине (не успел увидеть при загрузке чанка, либо же был демонтирован) то должен выдать значение false и пропустить ту часть с использованием его. Если взять вариант, что не успевает загрузиться библиотека, в связи с эти и вылетает ошибка самой проверки.
Версия minecraft - 1.7.10
Версия OpenCompucters - 1.6.2.12 (в папке с модами написано), в игре OpenOS - 1.6.1 -
8 часов назад, eu_tomat сказал:component.isAvailable позволяет определить наличие компонента определённого типа, но не гарантирует, что найден именно тот компонент, что когда-то был сохранён в переменной программы.
В системе всего по 1 компоненту, которые проверяются на наличие, т.е. если их нет, по логике должна программа писать "false", а не выбивать ошибку.
-
Проблема в том, что периодически программа выбивает ошибку "No such component", с каждым разом она все чаще и чаще.
Делали проверку через component.isAvailable("Название_компонента") в итоге не помогло, есть подозрение что виновник торжества сама библиотека component.
Возможно кто то сталкивался с данной проблемой и на неё есть решение.
Компоненты на которые вылетает данная ошибка:
- opencb
- me_interface
- reactor_chamber
Возможно и на другие компоненты проблема актуальна.
P.S. Все компоненты "системы" находятся в одном чанкеСкрытый текст
Скрытый текстlocal computer = require("computer") local com = require("component") local fs = require("filesystem") local event = require("event") local me = com.me_interface local r = com.reactor_chamber local red = com.redstone local g = com.gpu ------------------- local condId, condDmg = "IC2:reactorCondensatorLap", 9500 local EUOutput = 3800 local condPosMe, fuelPosMe = 8, 9 local maxHeat = 9300 local toReact = "Down" -- сторона куда будет кидать из МЭ в реактор local fromReact = "East" -- сторона откуда будет кидать в мэ из реактора local sideRed = 0 -- с какой стороны сигнал красного камня local status = false -- статус реактора local k = 0 g.setResolution(72, 42) ------------------- fuel = {"IC2:reactorUraniumQuaddepleted", "IC2:reactorMOXQuaddepleted"} fuelList = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36, 46,47,48,49,50,51,52,53,54} -- слоты с топливом condList = {10,11,12,13,14,15,16,17,18, 37,38,39,40,41,42,43,44,45} -- слоты с конденсаторами function onReact() red.setOutput(0, 15) status = true g.fill(66, 2, 3, 1, " ") g.set(66,2, "on") end function offReact() red.setOutput(0, 0) status = false g.fill(66, 2, 3, 1, " ") g.set(66,2, "off") end function checkFuel() if com.isAvailable("reactor_chamber") and com.isAvailable("me_interface") then red.setOutput(0,0) for i = 1, #fuelList do local pos = fuelList if r.getStackInSlot(pos) then if r.getStackInSlot(pos).id == (fuel[1] or fuel[2]) then local to = r.pushItem(fromReact, pos, 1) local from = me.pushItem(toReact, fuelPosMe, 1, pos) if (to or from) == 0 then os.exit() end end end end red.setOutput(0,15) else offReact() end end function checkCond() if com.isAvailable("reactor_chamber") and com.isAvailable("me_interface") then g.fill(3, 3, 8, 18, " ") local data = r.getAllStacks(0) for i = 1, #condList do local pos = condList if data[pos] then g.set(3, 2+i, pos.." "..data[pos].dmg) if data[pos].dmg >= condDmg then offReact() local to = r.pushItem(fromReact, pos, 1) local from = me.pushItem(toReact, condPosMe, 1, pos) if (to or from) == 0 then os.exit() end end end end onReact() else offReact() end end function power(event,addres, x, y, nick) if (x == 113 or x == 1081) and y == 16 then if status then offReact() else onReact() end end end function window() g.fill(1,1,72,42, " ") g.set(1, 1, "Конденсаторы") g.set(63,1, "Состояние") g.set(66,2, "off") end window() event.listen("key_down", power) while true do if status then checkCond() end if com.isAvailable("reactor_chamber") then if r.getHeat() >= maxHeat then offReact() --elseif r.getReactorEUOutput() < EUOutput then --checkFuel() end else offReact() end os.sleep(0.1) end

No such component
в Общие
Опубликовано:
На компьютере используемом в чанке с точкой spawn, который сам по себе загружен все время так же происходит данная ошибка. Компонент не демонтируется, но перестаёт его видеть, чаще всего это происходит в позднее время, когда количество игроков на сервере уменьшается и мир со спавном успевает отгружаться.