Гайды

[TechnoMagic 1.7.10] OpenComputers Создание робота для убийства мобов

Автор: Even1s · Обновлён:

Принцип работы

Данный гайд описывает создание робота для автоматического убийства мобов. Примечание: инструкция подходит для многих сборок, но автор использует сборку TechnoMagic. Отличия для других сборок будут отмечены отдельно.

Принцип работы: мобы спавнятся и притягиваются к роботу через материальный притяжатель. Робот убивает их и периодически складывает лут в сундук. Для удобства соединения лут направляется в другой сундук, от которого трубы ведут в систему ME и в таум-восстановитель. Из восстановителя меч возвращается к роботу. Цикл повторяется.

Сборка робота и установка OpenOS

1

Для сборки робота необходимы следующие компоненты (минимальные требования):

  • Системный блок 2
  • Процессор 1
  • Видеокарта 1
  • Память 1 (у автора 2 плашки, но можно использовать и одну)
  • Жёсткий диск 1
  • Дисковод
  • EEPROM (Lua BIOS)
  • Монитор 1
  • Клавиатура
  • Улучшение «контроллер инвентаря»
  • Улучшение «инвентарь»

Соберите робота в сборщике роботов. Запускать его сразу не обязательно; если запустить, ничего не произойдёт, но робот не сломается.

  1. Достаньте дискету с OpenOS.
  2. Запустите робота и введите команду install, затем openos и подтвердите установку.
  3. После установки дискету можно убрать.

Размещение блоков и настройка сервомеханизмов

Расстановка блоков может отличаться в зависимости от сборки. Вместо таум-восстановителя можно использовать любой блок, чинящий предмет, или хранилище, ведущее к нему.

Принципиально важно только местоположение сундука, остальное можно расставить по удобству.

Настройка сервомеханизмов:

  • Вместо артаны положите меч, которым будете пользоваться вы.
  • image.png.ee173078b3880caf0da05a2d91accb07.png
  • image.png.62cce7b638218c7a7e7dc9d04a4fedf0.png
  • В третий сервомеханизм установите фильтр, чтобы он забирал все предметы из таум-восстановителя.

Инструментарий робота

3

image.png.71f48496dcbf4c37e1885048f2c14680.png

Роботу необходим меч. Все предметы с мобов он должен собирать сам. Если по каким-то причинам робот не собирает предметы или вам нужно, чтобы он складывал их в сундук, поставьте рядом с ним кинетический притяжатель и голодный сундук или другой блок, всасывающий предметы.

Программирование робота

  1. Введите команду edit [название команды, которое вам нравится] (также можно использовать для дальнейших правок).
  2. Скопируйте код и вставьте его кнопкой Insert на клавиатуре или через настройки управления OpenComputers («вставить буфер обмена»).
  3. Для вызова команды введите её название.
Код программы
local robot = require("robot")local component = require("component")local inv = component.inventory_controller
local MIN_TOOL_CHARGE =0.6whiletruedofor i=1,200do
    o,p= robot.detect()if o==truethen
      robot.swing()else
      os.sleep(1)endendfor n=1,16do
    robot.select(n)
    robot.dropDown()endif robot.durability()< MIN_TOOL_CHARGE then
    robot.select(1)
    inv.equip()
    robot.dropDown()
    os.sleep(1)
    d = robot.compareTo(1)while d ==truedo
      os.sleep(1)
      d = robot.compareTo(1)end
    robot.select(1)
    inv.equip()endend

Разбор кода

Ниже приведено подробное описание работы кода. Если полное понимание работы робота не требуется, можно пропустить этот раздел.

local robot = require("robot")
local component = require("component")
local inv = component.inventory_controller
local MIN_TOOL_CHARGE = 0.6

Эта часть нужна для общей работы робота: чтобы он мог работать с инвентарём и функционировать корректно.

  for i=1,200 do
    o,p= robot.detect()
    if o==true then
      robot.swing()
    else
      os.sleep(1)
    end
  end

Здесь робот делает 200 ударов. Если мобов нет, он ждёт 1 сек (это немного лучше для оптимизации, но блок else можно убрать).

  for n=1,16 do
    robot.select(n)
    robot.dropDown()
  end

После этого робот сбрасывает все вещи, кроме меча.

  if robot.durability() < MIN_TOOL_CHARGE then
    robot.select(1)
    inv.equip()
    robot.dropDown()
    os.sleep(1)
    d = robot.compareTo(1)
    while d == true do
      os.sleep(1)
      d = robot.compareTo(1)
    end
    robot.select(1)
    inv.equip()
  end

Финальная часть кода. Если у меча осталось менее чем 0.6 прочности (значение можно менять в самом начале кода, изменив MIN_TOOL_CHARGE), то он сбрасывается вместе с остальными вещами. Если сервомеханизмы настроены правильно, меч попадает в таум-восстановитель, а затем возвращается к роботу. После этого робот экипирует меч.

Примечание: при написании кода автор вдохновлялся гайдом «Зябл» на ферму дерева, но адаптировал его для убийства мобов.

Похожие гайды