forked from MTSR/techage_modpack
543 lines
31 KiB
Markdown
543 lines
31 KiB
Markdown
# Управляемый бот
|
||
|
||
Робот, управляемый знаками.
|
||
|
||
В сети: https://github.com/joe7575/signs_bot/blob/master/manual_EN.md
|
||
|
||
[signs_bot_bot_inv.png|image]
|
||
|
||
## Первые шаги
|
||
|
||
После того как вы разместили бокс с управляемым роботом, вы можете запустить бота
|
||
с помощью кнопки 'On' в меню бокса. Если бот сразу же вернется в свою коробку,
|
||
вам нужно будет сначала зарядить его электрической энергией (techage).
|
||
Затем бот бежит прямо вперед, пока не достигнет препятствия
|
||
(ступенька с двумя или более блоками вверх или вниз или знак).
|
||
|
||
Управлять ботом можно только с помощью знаков, которые расположены на его пути.
|
||
|
||
Если бот первым достигнет знака, он выполнит команды, указанные на нем.
|
||
Если первой командой на знаке будет, например, 'turn_around', бот повернет и пойдет обратно.
|
||
В этом случае бот снова дойдет до своего ящика и выключится.
|
||
|
||
Если бот первым достигнет препятствия, он остановится или, если есть возможность,
|
||
выполнит следующие команды, начиная с последнего знака.
|
||
|
||
У бота есть инвентарь с 6 стеками для знаков и 8 стеками для других предметов
|
||
(которые размещаются/добываются ботом). Этот инвентарь имитирует внутренний инвентарь.
|
||
Это означает, что вы будете иметь доступ к инвентарю только в том случае,
|
||
если бот выключен ("сидит" в своем боксе).
|
||
|
||
Также есть следующие блоки:
|
||
- Датчики: Они могут посылать сигнал на исполнительный механизм, если подключены к нему.
|
||
- Актуаторы: Они выполняют действие, когда получают сигнал от датчика.
|
||
|
||
[signs_bot_bot_inv.png|image]
|
||
|
||
## Знаки
|
||
|
||
Вы управляете направлением движения бота с помощью знаков "turn left" и
|
||
"turn right" (знаки со стрелкой). Бот может преодолевать ступеньки
|
||
(один блок вверх/вниз). Но есть и команды, позволяющие перемещать бота вверх и вниз.
|
||
|
||
Не обязательно отмечать путь обратно к коробке. С помощью команды 'turn_off'
|
||
бот выключится и вернется в свой бокс из любого положения. То же самое касается
|
||
если вы выключите бота через меню бокса. Если бот достигнет знака в неправильном
|
||
направлении (сзади или сбоку), то знак будет проигнорирован.
|
||
Бот просто перешагнет через знак.
|
||
|
||
Все предопределенные знаки имеют меню со списком команд бота. Эти знаки
|
||
не могут быть изменены, но вы можете создавать и программировать свои собственные знаки.
|
||
Для этого нужно использовать знак "command". В этом знаке есть поле для редактирования команд
|
||
и страница помощи со всеми доступными командами. На странице помощи есть кнопка копирования
|
||
чтобы упростить программирование.
|
||
|
||
Также для ваших собственных знаков важно знать: После выполнения последней
|
||
команды знака, бот возвращается к своему поведению по умолчанию и бежит в
|
||
выбранном направлении.
|
||
|
||
Стандартным заданием для бота является перемещение предметов из одного сундука в другой сундук
|
||
(или узел с сундуком, похожим на инвентарь). Это можно сделать с помощью двух знаков
|
||
'взять предмет' и 'добавить предмет'. Эти знаки должны быть размещены над узлами сундуков.
|
||
|
||
[signs_bot_sign_left.png|image]
|
||
|
||
## Датчики и приводы
|
||
|
||
В дополнение к знакам бот может управляться с помощью датчиков.
|
||
Датчики, такие как датчик бота, имеют два состояния: включено и выключено.
|
||
Если датчик бота обнаруживает бота он переключится в состояние "включено"
|
||
и пошлёт сигнал подключённому блоку, называемому исполнительным механизмом.
|
||
|
||
Датчиками являются:
|
||
|
||
- Датчик бота: Посылает сигнал, когда мимо проезжает робот.
|
||
- Датчик узла: Посылает сигнал, когда обнаруживает любой (новый) узел.
|
||
- Датчик урожая: Посылает сигнал, когда, например, пшеница полностью выросла
|
||
- Сундук бота: Посылает сигнал в зависимости от состояния сундука (пустой, полный)
|
||
|
||
Приводы:
|
||
|
||
- Знаки Bot Box: Может выключать и включать бота
|
||
- Блок управления: Может использоваться для смены знака, чтобы управлять ботом.
|
||
|
||
Датчики должны быть соединены (спарены) с исполнительными механизмами. Для этого используется
|
||
"Инструмент подключения датчиков".
|
||
|
||
[signs_bot_sensor_crop_inv.png|image]
|
||
|
||
|
||
## Инструмент подключения датчиков
|
||
|
||
Чтобы отправить сигнал от датчика к приводу, датчик должен быть соединен
|
||
(сопряжен) с исполнительным механизмом. Чтобы соединить датчик и исполнительный механизм,
|
||
необходимо использовать инструмент Sensor Connection Tool. Просто нажмите инструментом на оба блока, и
|
||
датчик будет соединен с исполнительным механизмом. Об успешном подключении сигнализирует звук ping/pong.
|
||
|
||
Прежде чем соединить датчик с приводом, убедитесь, что привод находится в
|
||
требуемом состоянии. Например: Если вы хотите запустить бота с помощью датчика, подключите
|
||
датчик с блоком бота, когда бот находится в состоянии "включено". В противном случае
|
||
сигнал датчика остановит Бота, вместо того чтобы запустить его.
|
||
|
||
[signs_bot_tool.png|image]
|
||
|
||
|
||
## Инвентарь
|
||
|
||
Следующее относится ко всем командам, которые помещают предметы/элементы в инвентарь бота, например:
|
||
|
||
|
||
- `take_item <num> <slot>`
|
||
- `pickup_items <slot>`
|
||
- `trash_sign <slot>`
|
||
- `harvest <slot>`
|
||
- `dig_front <slot> <lvl>`
|
||
|
||
Если в команде не был указан слот или слот 0 (случай A), то все 8 слотов инвентаря бота
|
||
проверяются один за другим. Если был указан слот (случай B),
|
||
проверяется только этот слот.
|
||
В обоих случаях действует следующее:
|
||
|
||
Если слот предварительно сконфигурирован и соответствует предмету, или если слот не сконфигурирован
|
||
и пуст, или только частично заполнен типом добавляемого элемента,
|
||
то элемент(ы) будет(ут) добавлен(ы).
|
||
Если не все предметы могут быть добавлены, то в случае A пробуются оставшиеся слоты.
|
||
Все, что не удалось добавить в инвентарь, вернется обратно или будет сброшено.
|
||
|
||
Сказанное ниже относится ко всем командам, которые используются для взятия предметов из инвентаря бота, например:
|
||
|
||
- `add_item <num> <slot>`.
|
||
|
||
Не имеет значения, настроен слот или нет. Бот берет первый стек
|
||
который он может найти в своем инвентаре, и пытается его использовать. Если указан слот,
|
||
он берет только его, если слот не указан, он проверяет все слоты по очереди
|
||
если слот не указан, то проверяет все слоты по очереди, начиная со слота 1, пока не найдет что-нибудь. Если найденное число
|
||
меньше запрошенного, он пытается взять остаток из любого другого слота.
|
||
|
||
[signs_bot:box|image]
|
||
|
||
## Узлы / Блоки
|
||
|
||
### Бокс бота
|
||
|
||
Бокс - это корпус бота. Разместите бокс и запустите бота с помощью кнопки
|
||
'On'. Если установлен мод techage, боту требуется электричество.
|
||
Бот выходит из коробки с правой стороны. Он не запустится, если эта позиция заблокирована.
|
||
|
||
Чтобы остановить и удалить бота, нажмите кнопку "Off".
|
||
Инвентарь коробки имитирует инвентарь бота.
|
||
Вы не сможете получить доступ к инвентарю, если бот запущен.
|
||
Бот может носить с собой до 8 стаков и 6 знаков.
|
||
|
||
[signs_bot:box|image]
|
||
|
||
### Заслонка бота
|
||
|
||
Заслонка - это простой блок, используемый в качестве двери для бота. Поместите заслонку в любую стену,
|
||
и бот будет автоматически открывать и закрывать заслонку, проходя через нее.
|
||
|
||
[signs_bot:bot_flap|image]
|
||
|
||
### Дубликатор знаков
|
||
|
||
Дубликатор можно использовать для создания копий знаков:
|
||
|
||
1. Положите один знак 'cmnd', который будет использоваться в качестве шаблона, в инвентарь 'Template'.
|
||
2. Добавьте один или несколько 'blank signs' в инвентарь 'In'.
|
||
3. Возьмите копии из инвентаря 'Output'.
|
||
|
||
В качестве шаблона можно также использовать написанные книги [default:book_written].
|
||
Уже написанные знаки тоже можно использовать в качестве входных.
|
||
|
||
[signs_bot:duplicator|image]
|
||
|
||
### Датчик ботов
|
||
|
||
Датчик ботов обнаруживает любого бота и посылает сигнал, если бот находится поблизости.
|
||
Радиус действия датчика - один узел/метр". Направление датчика не имеет значения.
|
||
|
||
[signs_bot:bot_sensor|image]
|
||
|
||
### Датчик узла
|
||
|
||
Датчик узлов посылает циклические сигналы, когда обнаруживает, что узлы появились
|
||
или исчезновения, но должен быть настроен соответствующим образом. Действительными узлами являются все виды
|
||
блоки и растения. Радиус действия датчика - 3 узла/метра в одном направлении.
|
||
У датчика есть активная сторона (красная), которая должна указывать на наблюдаемую область.
|
||
|
||
[signs_bot:node_sensor|image]
|
||
|
||
### Датчик урожая
|
||
|
||
Датчик сельскохозяйственных культур посылает циклические сигналы, когда, например, пшеница полностью выросла.
|
||
Радиус действия датчика составляет один узел/метр. Датчик имеет активную сторону (красную), которая
|
||
должна быть направлена на культуру/поле.
|
||
|
||
[signs_bot:crop_sensor|image]
|
||
|
||
### Сундук бота
|
||
|
||
Сундук бота - это специальный сундук с функцией датчика. Он посылает сигнал
|
||
в зависимости от состояния сундука. Возможные состояния: 'empty', 'not empty', 'almost full'
|
||
|
||
Типичный вариант использования - выключить бота, когда сундук почти полон или пуст.
|
||
|
||
[signs_bot:chest|image]
|
||
|
||
### Таймер бота
|
||
|
||
Это особый вид датчиков. Может быть запрограммирован на время в секундах,
|
||
например, для циклического запуска бота.
|
||
|
||
[signs_bot:timer|image]
|
||
|
||
### Блок управления ботом
|
||
|
||
Блок управления ботом используется для управления ботом с помощью знаков. Блок может быть
|
||
загружено до 4 различных знаков и может быть запрограммировано с помощью датчиков.
|
||
|
||
Чтобы загрузить блок, поместите знак на красную сторону блока и нажмите на блок.
|
||
Знак исчезает / перемещается в инвентарь блока.
|
||
Эту операцию можно повторить 3 раза.
|
||
|
||
Используйте инструмент подключения, чтобы соединить до 4 датчиков с блоком управления ботом.
|
||
|
||
[signs_bot:changer1|image]
|
||
|
||
### Расширитель датчиков
|
||
|
||
С помощью расширителя датчиков сигналы датчиков можно передавать на несколько исполнительных механизмов.
|
||
Поместите один или несколько удлинителей рядом с датчиком и соедините каждый удлинитель с одним
|
||
одним исполнительным механизмом с помощью инструмента подключения.
|
||
|
||
[signs_bot:sensor_extender|image]
|
||
|
||
### Сигнал И
|
||
|
||
Сигнал посылается, если получены все входные сигналы.
|
||
|
||
[signs_bot:and1|image]
|
||
|
||
### Задержка сигнала
|
||
|
||
Сигналы пересылаются с задержкой. Последующие сигналы ставятся в очередь.
|
||
Время задержки может быть настроено.
|
||
|
||
[signs_bot:delayer|image]
|
||
|
||
### Знак 'farming'
|
||
|
||
Используется для сбора урожая и засева поля 3x3. Поместите знак перед полем.
|
||
Используемое семя должно находиться в первом слоте инвентаря бота.
|
||
Когда бот закончит, он повернется и пойдет обратно.
|
||
|
||
[signs_bot:farming|image]
|
||
|
||
### Знак 'pattern'
|
||
|
||
Используется для создания копии куба 3x3x3. Поместите знак перед деталью
|
||
который нужно скопировать. Используйте знак копирования, чтобы сделать копию этой детали на другом
|
||
месте. Бот должен сначала добраться до знака детали, а затем до знака копии.
|
||
|
||
Используется для создания копии куба 3x3x3. Поместите щит перед блоками
|
||
которые нужно скопировать. Используйте знак копирования, чтобы сделать копию этих блоков в другом
|
||
месте. Сначала бот должен обработать знак "pattern", только после этого он может
|
||
направить его к знаку копирования.
|
||
|
||
[signs_bot:pattern|image]
|
||
|
||
### Знак 'copy3x3x3'
|
||
|
||
Используется для создания копии куба 3x3x3. Поместите знак перед тем местом, где вы хотите
|
||
чтобы была сделана копия. См. также знак "шаблон".
|
||
|
||
[signs_bot:copy3x3x3|image]
|
||
|
||
### Знак 'flowers'
|
||
|
||
Используется для срезания цветов на поле 3x3. Поместите знак перед полем.
|
||
По окончании бот поворачивается.
|
||
|
||
[signs_bot:flowers|image]
|
||
|
||
### Знак 'aspen'
|
||
|
||
Используется для заготовки ствола осины или сосны.
|
||
|
||
- Поместите знак перед деревом.
|
||
- Поставьте сундук справа от знака.
|
||
- Положите в сундук стопку грязи (минимум 10 предметов).
|
||
- Предварительно настройте слот 1 инвентаря бота на грязь
|
||
- Заранее настройте слот 2 инвентаря бота с саженцами
|
||
|
||
[signs_bot:aspen|image]
|
||
|
||
### Знак 'command'
|
||
|
||
Знак 'command' может быть запрограммирован игроком. Поместите знак перед собой
|
||
перед собой и используйте меню узла, чтобы запрограммировать последовательность команд бота.
|
||
В меню есть поле для редактирования команд и страница помощи со всеми
|
||
доступными командами. На странице помощи есть кнопка копирования, чтобы упростить программирование.
|
||
|
||
[signs_bot:sign_cmnd|image]
|
||
|
||
### Знак "turn right"
|
||
|
||
Бот поворачивает направо, когда обнаруживает перед собой этот знак.
|
||
|
||
[signs_bot:sign_right|image]
|
||
|
||
### Знак "turn left"
|
||
|
||
Бот поворачивает налево, когда обнаруживает этот знак перед собой.
|
||
|
||
[signs_bot:sign_left|image]
|
||
|
||
### Знак "take item"
|
||
|
||
Бот берет предметы из сундука перед собой, а затем поворачивается.
|
||
Этот знак должен быть помещен на верхнюю часть сундука.
|
||
|
||
[signs_bot:sign_take|image]
|
||
|
||
### Знак "add item"
|
||
|
||
Бот кладет предметы в стоящий перед ним сундук, а затем разворачивается.
|
||
Этот знак должен быть размещен поверх сундука.
|
||
|
||
[signs_bot:sign_add|image]
|
||
|
||
### Знак "stop"
|
||
|
||
Бот будет останавливаться перед этим знаком до тех пор, пока знак не будет убран или
|
||
пока бот не будет выключен.
|
||
|
||
[signs_bot:sign_stop|image]
|
||
|
||
### Знак "add to cart" (minecart)
|
||
|
||
Бот кладет товары в стоящую перед ним мини-тележку, толкает тележку, а затем разворачивается
|
||
разворачивается. Этот знак должен быть размещен на рельсе в конечном положении тележки.
|
||
|
||
[signs_bot:sign_add_cart|image]
|
||
|
||
### Знак "взять из тележки" (minecart)
|
||
|
||
Бот берет предметы из стоящей перед ним мини-тележки, толкает тележку и затем
|
||
поворачивается. Этот знак должен быть размещен на рельсе в конечном положении тележки.
|
||
|
||
[signs_bot:sign_take_cart|image]
|
||
|
||
### Знак "take water" (xdecor)
|
||
|
||
Используется для набирания воды в ведро. Поместите знак на берегу, перед бассейном с неподвижной водой.
|
||
|
||
Предметы в слотах:
|
||
|
||
1 - пустое ведро
|
||
|
||
В результате в выбранном слоте инвентаря появится одно ведро с водой. По окончании,
|
||
бот поворачивается.
|
||
|
||
[signs_bot:water|image]
|
||
|
||
### Знак 'cook soup' (xdecor)
|
||
|
||
Используется для приготовления овощного супа в котелке. Котелок должен быть пустым и находиться
|
||
над легковоспламеняющимися материалами. Поместите знак перед казаном с одним полем
|
||
чтобы предотвратить возгорание деревянной вывески.
|
||
|
||
Предметы в слотах:
|
||
|
||
1 - ведро с водой"
|
||
2 - овощ № 1 (например, помидор)
|
||
3 - овощ № 2 (например, морковь)
|
||
4 - пустая миска (из модов farming или xdecor).
|
||
|
||
В результате в выбранном слоте инвентаря окажется одна миска с овощным супом.
|
||
Закончив, бот разворачивается.
|
||
|
||
[signs_bot:soup|image]
|
||
|
||
|
||
## Команды бота
|
||
|
||
Все команды также описаны в виде помощи в узле "Команда знака".
|
||
Все блоки или знаки, которые устанавливаются, берутся из инвентаря бота.
|
||
Все удаленные блоки или знаки будут добавлены обратно в инвентарь бота.
|
||
'<слот>' - это всегда внутренний стек инвентаря бота (1..8).
|
||
|
||
move <steps> - перейти на один или несколько шагов вперед
|
||
cond_move - перейти к ближайшему препятствию или знаку
|
||
turn_left - повернуть налево
|
||
turn_right - повернуть направо
|
||
turn_around - повернуться
|
||
backward - сделать шаг назад
|
||
turn_off - выключить робота / вернуться в коробку
|
||
pause <sec> - подождать одну или несколько секунд
|
||
move_up - двигаться вверх (не более 2 раз)
|
||
move_down - двигаться вниз
|
||
fall_down - упасть в яму/пропасть (до 10 блоков)
|
||
take_item <num> <slot> - взять один или несколько предметов из ящика
|
||
add_item <num> <slot> - положить один или несколько предметов в ящик
|
||
add_fuel <num> <slot> - положить топливо в печь
|
||
place_front <slot> <lvl> - поместить блок перед ботом
|
||
place_left <slot> <lvl> - поместить блок слева от бота
|
||
place_right <slot> <lvl> - поместить блок справа от бота
|
||
place_below <slot> - поднять робота и поместить блок под него
|
||
place_above <slot> - установить блок над роботом
|
||
dig_front <slot> <lvl> - убрать блок перед роботом
|
||
dig_left <slot> <lvl> - удалить блок слева
|
||
dig_right <slot> <lvl> - удалить блок справа
|
||
dig_below <slot> - удалить блок под роботом
|
||
dig_above <slot> - удалить блок над роботом
|
||
rotate_item <lvl> <шаги> - повернуть блок перед роботом
|
||
set_param2 <lvl> <param2> - установить параметр2 блока перед роботом
|
||
place_sign <slot> - установить знак
|
||
place_sign_behind <slot> - поставить знак позади робота
|
||
dig_sign <slot> - удалить знак
|
||
trash_sign <slot> - удалить знак, очистить данные и добавить в инвентарь.
|
||
stop - бот остановится, пока не будет убран щит
|
||
pickup_items <slot> - забрать предметы (в поле 3x3)
|
||
drop_items <num> <slot> - сбросить предметы
|
||
harvest - собирать урожай на поле 3x3 (фермерство)
|
||
cutting - срезать цветы на поле 3x3
|
||
sow_seed <слот> - увидеть/посадить поле 3x3
|
||
plant_sapling <слот> - посадить саженец перед роботом
|
||
pattern - сохранить свойства блока за знаком (куб 3x3x3) в качестве шаблона
|
||
copy <size> - сделать копию сохраненного шаблона размером 3x3x3
|
||
punch_cart - сбить тележку с шахтой
|
||
add_compost <slot> - положить 2 листа в компостную бочку
|
||
take_compost <slot> - взять компостный элемент из бочки
|
||
print <text> - Вывести сообщение чата для отладки
|
||
take_water <slot> - Взять воду из пустого ведра
|
||
fill_cauldron <slot> - Наполнить котел xdecor для супа
|
||
take_soup <slot> - Взять кипящий суп в пустую миску из котла
|
||
flame_on - Развести огонь
|
||
flame_off - Погасить огонь
|
||
|
||
[signs_bot_bot_inv.png|image]
|
||
|
||
### Techage специальные команды
|
||
|
||
ignite - Зажечь угольную зажигалку techage
|
||
low_batt <percent> - Выключить бот, если заряд батареи ниже
|
||
заданного значения в процентах (1..99)
|
||
jump_low_batt <percent> <label> - Переход к <ярлыку>, если заряд батареи ниже
|
||
заданного значения в процентах (1..99)
|
||
(см. раздел "Команды управления потоком".)
|
||
send_cmnd <receiver> <command> - Отправка команды techage на заданный узел.
|
||
Получатель адресуется по номеру узла.
|
||
Для команд, состоящих из двух или более слов,
|
||
используйте символ '*' вместо пробелов, например:
|
||
send_cmnd 3465 pull*default:dirt*2
|
||
|
||
[signs_bot_bot_inv.png|image]
|
||
|
||
### Команды управления потоком
|
||
|
||
-- команда перехода, <label> - слово из символов a-z или A-Z
|
||
jump <label>
|
||
|
||
-- метка перехода / начало функции
|
||
<label>:
|
||
|
||
-- возврат из функции
|
||
return
|
||
|
||
-- начало блока цикла, <num> - число 1..999
|
||
repeat <num>
|
||
|
||
-- конец блока цикла
|
||
end
|
||
|
||
-- вызов функции (с возвратом через команду 'return')
|
||
call <label>
|
||
|
||
|
||
[signs_bot_bot_inv.png|image]
|
||
|
||
### Дополнительные команды перехода
|
||
|
||
-- Проверьте, есть ли в сундуке <num> предметов, как в узле.
|
||
-- Если нет, перейдите к <метке>.
|
||
-- <slot> - это слот инвентаря бота (1..8)
|
||
-- укажите элемент, или 0 для любого элемента.
|
||
jump_check_item <num> <slot> <label>
|
||
|
||
-- См. раздел "Специальные команды Techage".
|
||
jump_low_batt <percent> <label>
|
||
|
||
|
||
[signs_bot_bot_inv.png|image]
|
||
|
||
### Управление потоком Примеры
|
||
|
||
#### Пример с функцией в начале:
|
||
|
||
-- перейти к метке 'main'
|
||
jump main
|
||
|
||
-- начальная точка функции с именем 'foo'
|
||
foo:
|
||
cmnd ...
|
||
cmnd ...
|
||
-- конец 'foo'. Перейти назад
|
||
return
|
||
|
||
-- основная программа
|
||
main:
|
||
cmnd ...
|
||
-- повторите все команды до 'end' 10 раз
|
||
repeat 10
|
||
cmnd ...
|
||
-- вызвать подфункцию 'foo'
|
||
call foo
|
||
cmnd ...
|
||
-- конец цикла 'repeat'
|
||
end
|
||
-- конец программы
|
||
exit
|
||
|
||
|
||
#### Пример с функцией в конце:
|
||
|
||
cmnd ...
|
||
-- повторите все команды до 'end' 10 раз
|
||
repeat 10
|
||
cmnd ...
|
||
-- вызвать подфункцию 'foo'
|
||
call foo
|
||
cmnd ...
|
||
-- конец цикла 'repeat'
|
||
end
|
||
-- конец программы
|
||
exit
|
||
|
||
-- начальная точка функции с именем'foo'
|
||
foo:
|
||
cmnd ...
|
||
cmnd ...
|
||
-- конец 'foo'. Перейти назад
|
||
return
|