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


Фотография

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

robot component adapter openperipheral

Лучший Ответ Fingercomp , 18 Январь 2016 - 11:54

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 738
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                    

Отправлено 18 Январь 2016 - 11:31

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


#2 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 943
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                               

Отправлено 18 Январь 2016 - 11:54   Лучший Ответ

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

  • eu_tomat это нравится

#3 Онлайн   eu_tomat

eu_tomat
  • Автор темы
  • Хранители Кода
  • Сообщений: 738
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                    

Отправлено 18 Январь 2016 - 13:49

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

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


#4 Онлайн   eu_tomat

eu_tomat
  • Автор темы
  • Хранители Кода
  • Сообщений: 738
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                    

Отправлено 29 Март 2016 - 09:23

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

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

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

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

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


#5 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 196
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 29 Март 2016 - 09:47

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

#6 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 943
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                               

Отправлено 29 Март 2016 - 10:09

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

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

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

 

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

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

 

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

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

 

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

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


  • eu_tomat это нравится

#7 Онлайн   eu_tomat

eu_tomat
  • Автор темы
  • Хранители Кода
  • Сообщений: 738
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                    

Отправлено 29 Март 2016 - 12:57

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

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

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

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

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

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

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

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


#8 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 196
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 29 Март 2016 - 13:45

Поделишься способом?
Не поделюсь. Нет такого опыта 

#9 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 943
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                               

Отправлено 29 Март 2016 - 19:05

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

Нет.

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

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



#10 Онлайн   eu_tomat

eu_tomat
  • Автор темы
  • Хранители Кода
  • Сообщений: 738
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                    

Отправлено 11 Январь 2017 - 11:20

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


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

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


#11 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 943
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                               

Отправлено 11 Январь 2017 - 11:41

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



#12 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • Сообщений: 116
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

           

Отправлено 12 Январь 2017 - 16:57

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



#13 Онлайн   eu_tomat

eu_tomat
  • Автор темы
  • Хранители Кода
  • Сообщений: 738
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                    

Отправлено 12 Январь 2017 - 17:06

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

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


#14 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • Сообщений: 116
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

           

Отправлено 12 Январь 2017 - 18:29

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



#15 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 663
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                      

Отправлено 12 Январь 2017 - 18:39

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

 

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

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


  • Alex и davial это нравится





Темы с аналогичным тегами robot, component, adapter, openperipheral

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных