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

Как определить с какой стороны установлен сундук возле адаптера

Вопрос

Рекомендуемые сообщения

  • 0

Для MC 1.7.10 в версии OC 1.7.2 контроллер инвентаря и транспозер наконец-то научились получать название инвентаря. Положение сундука теперь определяется однозначно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Можно в цикле пройти по всем шести сторонам  и проверить наличие сундука на каждой стороне.
 

Изменено пользователем RccHD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Можно в цикле пройти по всем шести сторонам  и проверить наличие сундука на каждой стороне.

Все могут выполнить перебор сторон в цикле. Поэтому вопрос сужается:

Как определить наличие сундука с определенной стороны адаптера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Нужен контроллер инвентаря
 

function getSideChest() 
  for i = 0,5 do
    if require("component").inventory_controller.getInventorySize(i) == 27 then -- Изменить число 27, если сундук другой
      return i
    end
  end
end 

print(getSideChest())

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

if require("component").inventory_controller.getInventorySize(i) == 27 then -- Изменить число 27, если сундук другой
 а можно
if require("component").inventory_controller.getInventorySize(i) ~= 0 then

или так

if require("component").inventory_controller.getInventorySize(i) then

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

а можно

if require("component").inventory_controller.getInventorySize(i) ~= 0 then
или так

if require("component").inventory_controller.getInventorySize(i) then
?

 

Он может стоящий рядом адаптер например сосчитать, в котором 1 слот, что в первом случае, что во втором

 

Если тебе лень вводить "27" можно сделать вот так:

 

local component = require("component")

function getSideChest()
	for i = 0,5 do
		if component.inventory_controller.getInventorySize(i) == component.chest.getInventorySize() then 
			return i 
		end
	end
end

print(getSideChest())
Изменено пользователем Appo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А если это какой-то железный, например, сундук, где не 27, а 54 слотов? Костыль, а не решение. Надо тупо сканить все стороны и предлагать выбрать нужный (-е?).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

...

 

function getSideChest(size) 
  for i = 0,5 do
    if require("component").inventory_controller.getInventorySize(i) == size then
      return i
    end
  end
end 
 
print( getSideChest(27) )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Laine_prikol > Как можно определить с какой стороны установлен сундук возле адаптера?

К сожалению, в автороской формулировке задача не имеет какого-то одного красивого решения.

  • Адаптер поможет узнать, что за периферия подключена, и сколько она имеет слотов инвентаря, но не может сказать, с какой стороны она подключена и к какому из адаптеров системы.
  • Контроллер инвентаря в адаптере или транспозер могут сообщить количество слотов инвентаря с определенной стороны от них, но не скажут название инвентаря.
  • Роботы в определенных условиях способны определить координаты, объем и название инвентаря, но роботы заметно усложняют рабочую систему.
Все способы будут в той или иной степени костыльными в зависимости от конкретной задачи. Для снижения костыльности требуется уточнить условия: много ли в системе адаптеров и сундуков, возможные типы сундуков, может ли меняться конфигурация сундуков в процессе работы программы и от сессии к сессии, будут ли сундуки устанавливаться человеком или роботами. Ответы на эти вопросы помогут выбрать более простое, но при этом рабочее в выбранных условиях решение. В некоторых случаях вообще более разумным будет изменить общую схему работы системы, чтобы подстроиться под имеющиеся решения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...