Перевод API Robot. Прошу не судить строго, а помочь найти ошибки и не точности перевода. В ближайшее время постаряюсь перевести все API по моду OpenComputers.Оригинал на английском API Robot Данный API позволяет абстрагироваться от компонентов робота для более интуитивного взаимодействия с ним. На самом деле это очень тонкая оболочка. Это API доступно только если компьютер является роботом. robot.level(): number Возвращает текущий уровень робота, дробная часть означает процент движения робота на пути к другому уровню. Например 1.5 означает, что робот на первом уровне и на 50% продвинулся ко второму уровню. robot.name(): string Возвращает текущее имя робота (может быть изменено с помощью наковальни). robot.detect(): boolean, string Проверяет, на ноличие припятствия впереди робота. Возвращает true, если есть препятствие блокирующие движение робота вперед, иначе – false. Второе возвращаемое значение спецификации того, что находится перед роботом, может быть одно из значений: entity (препятствие), solid (твердое), replaceable (заменяемое), liquid (жидкое)и air (воздух). Первые 2 будут блокировать движение робота, последующие – нет. В случае возвращения entity – это может быть живое препятствие, такое как игрок или моб, либо вагонетка. robot.detectUp(): boolean, string Как и robot.detect, только для блока находящегося над роботом. robot.detectDown(): boolean, string Как и robot.detect, только для блока находящегося под роботом. robot.select([slot: number]): number Выбирает слот инвентаря с указанным индексом (slot), который является целым числом в интервале [1, 16]. Нумерация слотов начинается с верхнего левого угла и следует с лева направо, сверху вниз. Т.е. верхний левый слот ровняется 1, верхний правый – 4, нижний левый – 13, нижний правый – 16. При попытке выбрать несуществующий индекс – выдает ошибку. Возвращает новый выбранный слот. Может быть выполнен без аргументов для возвращения текущего выбранного слота. robot.count([slot: number]): number Возвращает число объектов в указанном слоте инвентаря. Если параметр не задан, то возвращает количество объектов в текущем выбранном слоте инвентаря. Robot.space([slot: number]): number Возвращает, сколько объектов можно положить в данный слот, с учетом тех, что что уже находятся в инвентаре (для примера, ведра стакуются по 16, если в слоте находятся 2 ведра, то возвратится значение 14). Если параметр не задан, то возвращает сколько объектов можно положить в текущий выбранный слот инвентаря. robot.compareTo(slot: number): boolean Сравнивает объект в текущем выбранном слоте с объектом в слоте заданном в параметре (slot), возвращает true, если оба объекта идентичны (т.е. количество объектов в стаке не учитывается), false– в противном случае. robot.transferTo(slot: number[, count: number]): boolean Перемещает объекты из выбранного слота в заданный. Если задано количество (count), то будет перемещено только заданное количество объектов. Возвращает true, если один или несколько объектов были перемещены (но не обязательно, что все!), false – если не удалось переместить ни одного объекта. Обратите внимание, что если слот назначения не пустой, а количество перемещаемых объектов либо не задано, либо больше количества, которое доступно в слоте, то это может привести к смешиванию. robot.compare(): boolean Сравнивает блок выбранный в инвентаре с блоком находящимся перед роботом. Возвращает true, если блоки совпадают, иначе – false. robot.compareUp(): boolean Как и robot.compare, только для блока сверху, над роботом. robot.compareDown(): boolean Как и robot.compare, только для блока снизу, под роботом. robot.drop([count: number]): boolean Выбрасывает из выбранного слота объекты. Если заданно количество (count), то выбрасывает заданное количество объектов. Если перед роботом будет находится объект имеющий инвентарь, например такой как сундук, он попытается переложить объекты в этот инвентарь. Если перед роботом не будет ничего – он просто выбросит объекты. Возвращает true если один или более объектов было выброшено, false – в противном случае. Если инвентарь перед роботом будет полон, то объекты не будут выброшены и будет возвращено значение false. Так-же работает для вагонетки с сундуком или воронкой. robot.dropUp([count: number]): boolean Так-же как и robot.drop, только перекладывает в инвентарь или выбрасывает объекты в блок сверху. robot.dropDown([count: number]): boolean Так-же как и robot.drop, только перекладывает в инвентарь или выбрасывает объекты в блок снизу. robot.place([side: number[, sneaky: boolean]]): boolean Устанавливает блок выбранный в инвентаре перед роботом. Если блок был установлен – возвращает true, иначе false. Параметр side определяет сторону на которую необходимо установить объект, если параметр не задан робот попытается установить объект на все поверхности. Это используется если объект может иметь разную ориентацию. Например, если установить факел, c параметром sides.left, то факел будет установлен на “стену“ слева от робота (если возможно), а sides.right – на “стену“ справа. Параметр sneaky определяет, должен ли робот подкрадываться при установке объекта, может быть необходим для некоторых модов. Важно: у куба находящегося перед роботом должна быть хотя-бы одна поверхность, чтобы он мог установить блок, т.е. робот не может ставить блоки в воздухе, он нуждается в некоторой «зацепки», так-же как это необходимо игроку. Если вам нужно чтобы робот мог устанавливать блоки в воздухе (как это могут черепахи из ComputerCraft), то проверьте config, там есть необходимые параметры. robot.placeUp([side: number[, sneaky: boolean]]): boolean Как и robot.place, только устанавливает блок над роботом. robot.placeDown([side: number[, sneaky: boolean]]): boolean Как и robot.place, только устанавливает блок под роботом. robot.suck([count: number]): boolean Собирает объекты по максимуму в выбранный стек. Или в первый свободный слот после выбранного. Возвращает true, если один или больее объектов удалось объединить, false – в противном случае. Если перед роботом будет находится объект имеющий инвентарь, например такой как сундук, то он попытается взять объекты из этого инвентаря. Если заданно количество (count), то робот будет брать заданное количество объектов. Так-же работает для вагонетки с сундуком или воронкой. Если перед роботом нет объекта с инвенторем, то робот будет пытаться подобрать объекты разбросанные вокруг себя, при этом параметр count будет проигнорирован. robot.suckUp([count: number]): boolean То-же, что и robot.suck, только для объектов находящимся в инвентаре или разбросаным над роботом. robot.suckDown([count: number]): boolean То-же, что и robot.suck, только для объектов находящимся в инвентаре или разбросаным под роботом. robot.durability(): number or nil, string Если робот оборудован инструментом, эта функция может быть использована для проверки целостности инструмента. Возвращается оставшуюся целостность инструмента, если таковая имеется, возвращает nil и причину в противном случае. robot.swing([side: number]): boolean[, string] Заставляет робота выполнить «левый щелчок», при этом используется оборудованный инструмент, если он имеется. Результат этого действия зависит от того, что находится перед роботом. Возвращает true и описание если что-то было разрушено или поражено, в противном случае false и причину. Параметр side определяет поверхность к которой робот пытается применить щелчок. Если параметр опущен – робот попытается применить команду ко всем сторонам. Это позволяет, при необходимости, дать больше контроля над направлением щелчка. Возвращаемая последовательность может содержать одно из: entity – когда робот атаковал препятствие. block – когда робот попытался разрушить блок. fire – если робот погасил какой-то огонь. air – если перед роботом ничего не находилось robot.swingUp([side: number]): boolean[, string] То-же, что и robot.swing но с использованием области над роботом robot.swingDown([side: number]): boolean[, string] То-же, что и robot.swing но с использованием области под роботом robot.use([side: number[, sneaky: boolean[, duration: number]]]): boolean[, string] Заставляет робота выполнить "щелчок правой кнопкой", при этом используя оборудованный инструмент, если он имеется. . Результат этого действия зависит от того, что находится перед роботом. Возвращает true и описание если что-то произошло, в противном случае false и причину. Параметр side определяет поверхность к которой робот пытается применить щелчок. Если параметр опущен – робот попытается применить команду ко всем сторонам. Это позволяет, при необходимости, дать больше контроля над направлением щелчка. Например для задания направления выпускаемой из лука стрелы. Параметр sneacky определяет, должен ли робот подкрадываться при исполнении функции. Например, это может быть применимо если необходимо установить блок на объект щелчок по которому правой кнопкой может его использовать (например открытие сундука). Параметр duration может быть использован для задания продолжительности использования. Например, это может быть использовано для достаточной натяжки стрелы на лук. Заметим, что это так-же влияет на принудительную паузу после вызова, т.е. если использовать объект 10 секунд, то робот выдержит паузу в несколько секунд. Возвращаемая строка может содержать: block_activated, если объект перед роботом был активирован, например рычаг был переключен или нажата кнопка. item_placed, когда объект был «размещен» в мире. Это может означать как размещение блока, так и размещение объекта в существующем блоке, например использование костной муки. item_interacted, если инструмент был использован на каком-то объекте, например ножницы на овце. item_used, если инструмент использовался без цели, например стрельба из лука. air, если инструмент не был использован и не может быть использован без цели. robot.useUp([side: number[, sneaky: boolean[, duration: number]]]): boolean[, string] То-же, что и robot.use, только c использованием области над роботом. robot.useDown([side: number[, sneaky: boolean[, duration: number]]]): boolean[, string] То-же, что и robot.use, только c использованием области под роботом. robot.forward(): boolean[, string] Делает попытку передвинуть на блок вперед. Возвращает true, если перемещение удалось, nil и причину в противном случае. Причины совпадают с блокирующими причинами в функции robot.detect. robot.back(): boolean[, string] Как robot.forward, но делает попытку переместиться на блок позади него. robot.up(): boolean[, string] Как robot.forward, но делает попытку переместиться на блок над ним. robot.down(): boolean[, string] Как robot.forward, но делает попытку переместиться на блок под ним. robot.turnLeft() Поворачивает робота на 90 градусов влево. robot.turnRight() Поворачивает робота на 90 градусов влево. robot.turnAround() Разворачивает робота на 180 градусов.
А ты думал. ТАм всего 3 строки , переключение на нужный предмет в инвентаре робота, сравнение, переключение в исходное.
А что-нибудь сделать с инструментом, кроме как robot.durability нельзя? Если вручить роботу электрическую прилу, например, он ей браво машет, но восстановить заряд никак не получается.
Есть ли возможность роботом чинить вещи поломанные - нагрудники, шлемы и т.д.? Верстак вижу как апдейт робота, а использование верстака в API - не вижу.
а мне надо чтоб робот электропилой убивал монстров это что надо блоков перед ним убрать чтоб он не дотягивался и не разрушал и это надо вписать команду robot.swing([side: number]): boolean[, string] я правильно понял?если нет то прошу объяснить а то я полнейший нуб в этой части..