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

Доступ робота к внешим и внутренним компонентам

Вопрос

1) Может ли робот получить доступ к component.openperipheral_sensor через адаптер или только через компьютеры и контроллеры?

2) Можно ли определить, как подключены внутренние компоненты, вставлены ли они при сборке, либо в слоты расширения?

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


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

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

  1. Доступ ко внешним компонентам у робота отсутствует.

Проверить, есть ли компонент у робота, можно командой component.isAvailable(componentName). Насчёт второй части не уверен, рекомендую глянуть переменную .slot у проксей компонентов (component.<имя компонента>.slot). И эксперементально найти ответ на вопрос.

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


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

component.<имя компонента>.slot)

Спасибо, все работает.

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


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

Думаю, нет смысла создавать новую тему. У меня набрались новые вопросы, связанные с периферией:

 

1. Можно ли узнать адреса компонент и блоков, просто лежащих в инвентаре робота?

В инвентаре игрока адреса компонент доступны для просмотра.

Для робота, лежащего в инвентаре робота, контролер инвентаря не выдает ни имени, ни адреса.

Аналогично и для сетевой карты: просто сетевая карта, и всё.

Реально ли вытащить адреса из тегов?

 

2. Может ли робот каким-либо образом узнать адрес соседнего блока?

Например, геолайзер может сказать, что это робот, но не сообщает ни его имя, ни адрес.

Анализатор при использовании игроком помещает сообщение в чат, но апргейд чата из Computronics его не ловит.

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

 

3. Может ли робот включать или выключать стоящие рядом компьютеры иным путем кроме как через wake-up по редстоун- или сетевой карте? Черепахи, насколько я помню, умели это делать. И компьютер легко включает роботов, а наоборот – не получается.

 

4. Можно ли как-то узнать адрес адаптера, через который подключено устройство, и сторону, с которой устройство находится относительно адаптера?

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


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

 

 

1. Можно ли узнать адреса компонент и блоков, просто лежащих в инвентаре робота?
А что если использовать контейнер для плат? Если робот сможет самостоятельно поместить в него плату, то узнает ее адрес. 

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


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

Думаю, нет смысла создавать новую тему. У меня набрались новые вопросы, связанные с периферией:

 

1. Можно ли узнать адреса компонент и блоков, просто лежащих в инвентаре робота?

В инвентаре игрока адреса компонент доступны для просмотра.

Для робота, лежащего в инвентаре робота, контролер инвентаря не выдает ни имени, ни адреса.

Аналогично и для сетевой карты: просто сетевая карта, и всё.

Реально ли вытащить адреса из тегов?

Если в конфигурации OpenComputers включена возможность чтения NBT-тегов, то возможно. Тогда для их получения рекомендую воспользоваться библиотекой libitem: https://github.com/OpenPrograms/Magik6k-Programs/tree/master/libitem

 

 

 

2. Может ли робот каким-либо образом узнать адрес соседнего блока? Например, геолайзер может сказать, что это робот, но не сообщает ни его имя, ни адрес. Анализатор при использовании игроком помещает сообщение в чат, но апргейд чата из Computronics его не ловит. Анализатор при использовании роботом вообще ничего не показывает, и апргрейд чата опять же ничего не получает.

Насколько я помню, геолайзер не возвращает NBT. Соотвественно, невозможно.

 

 

 

3. Может ли робот включать или выключать стоящие рядом компьютеры иным путем кроме как через wake-up по редстоун- или сетевой карте? Черепахи, насколько я помню, умели это делать. И компьютер легко включает роботов, а наоборот – не получается.

Если шифт-кликнуть компьютер, то он включится. Роботы тоже могут это делать. robot.use(nil, true), IIRC.

 

 

 

4. Можно ли как-то узнать адрес адаптера, через который подключено устройство, и сторону, с которой устройство находится относительно адаптера?

У адаптера, если я правильно помню, нет адреса совсем. Поэтому на оба вопроса я бы ответил "нет".

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


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

Если в конфигурации OpenComputers включена возможность чтения NBT-тегов, то возможно. Тогда для их получения рекомендую воспользоваться библиотекой libitem: https://github.com/O.../master/libitem

Работает. Это бомба! Про теги давно уже думал и по разным поводам, но нагуглить так и не смог.

Насколько я помню, геолайзер не возвращает NBT. Соотвественно, невозможно.

Геолайзер я привёл в пример. Может, есть иные способы? Тем же анализатором или еще чем-нибудь?

Если шифт-кликнуть компьютер, то он включится. Роботы тоже могут это делать. robot.use(nil, true)

И роботы умеют ШПКМ, и ШПКМ пустой рукой по компьютеру включает его, но ШПКМ именно роботом почему-то не включает компьютеры, хотя и возвращает «true, block_activated». А было бы здорово.

 

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

Проблема решилась доступом к NBT. Но твое предложение тоже интересно, я думал о нем в другом контексте. Но не смог поместить роботом плату в свой контейнер. Поделишься способом? У меня получилось засунуть плату только другим роботом, но это громоздко.

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


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

Геолайзер я привёл в пример. Может, есть иные способы? Тем же анализатором или еще чем-нибудь?

Нет.

 

 

И роботы умеют ШПКМ, и ШПКМ пустой рукой по компьютеру включает его, но ШПКМ именно роботом почему-то не включает компьютеры, хотя и возвращает «true, block_activated». А было бы здорово.

Ну лично у меня всё включается, не знаю.

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


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

Ну лично у меня всё включается, не знаю.

Разобрался, не прошло и года. Поиск по англоязычным сайтам быстро выдал решение: Ability for Robots to turn on PC´s #1505

 

ШПКМ рукой игрока включает любую технику. Робот успешно выполняет ШПКМ на любых компьютерах и роботах, но включается при этом лишь техника в обычных корпусах. Компьютеры и роботы в творческих (лиловых) корпусах не включается по ШПКМ роботом.

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


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

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

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


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

чёт всё как-то сложна

Всё просто за исключением некоторых нюансов. Но и они со временем проясняются.

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


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

я не прогер(ну как, чутка умею)
но чую, что мне до этого звания далеко

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


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

я не прогер(ну как, чутка умею)

но чую, что мне до этого звания далеко

 

Это нормально.

Надо насторожиться когда наоборот - приходит мысль типа "я уже всё знаю, я гуру, больше в программировании для меня ничего нового нет".  :D

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


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

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

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

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

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

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

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

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

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


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