InsuperablEx
-
Публикации
5 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем InsuperablEx
-
-
4 минуты назад, eu_tomat сказал:1) Похоже, что-то сломано в моде. Даже если он выдаёт размер инвентаря робоита 81, то всё равно не позволит использовать больше 64 ячеек.
2) Этот код не содержит условия для останова цикла. Остановиться он может только по ошибке. С каким сообщением останавливается программа? Скорее всего, что-то вроде attempt to index a nil valueпри обработке пустого слота.
Нет, программа завершается без ошибок, а listener остаётся работать
-
Если закомментировать этот блок кода, то цикл доходит до 81
if inv.getStackInInternalSlot(i).label == unSerMessage.getCountLabel then itemSize = itemSize + inv.getStackInInternalSlot(i).size tunnel.send(serialization.serialize(itemSize)) end -
5 минут назад, eu_tomat сказал:Цикл перебирает ячейки инвентаря робота. Но инвентарь робота не может вместить больше 64 ячеек независимо от количества установленных улучшений инвентаря.
Понимаю, но цикл завершается на 4-х судя по выводу print() если в инвентаре лежит 3 предмета
-
local component = require("component") local event = require("event") local serialization = require("serialization") local robot = component.robot local tunnel = component.tunnel local inv = component.inventory_controller linkedCardAddress = '817a1dc5-324f-46f4-9a27-dfd6cce83d0a' -- Linked Card address function onMessage(_, _, address, _, _, message) if address == linkedCardAddress then local unSerMessage = serialization.unserialize(message) if unSerMessage.text == "get_count" then local itemSize = 0 for i = 1, robot.inventorySize() do print(i) if inv.getStackInInternalSlot(i).label == unSerMessage.getCountLabel then itemSize = itemSize + inv.getStackInInternalSlot(i).size tunnel.send(serialization.serialize(itemSize)) end end end end end event.listen("modem_message", onMessage)Цикл не проходит положенные 81 ячейку инвентаря.
В чем дело?

Помогите разобраться
в Помогите найти ошибку
Опубликовано:
Разобрался, спасибо за подсказку, надо было добавить условие
if inv.getStackInInternalSlot(i) ~= nil then