Перейти к публикации

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

Не так давно решил я немного нафармить обсидиана, но прыгать по озерам лавы, тушить её водой, а потом долго и нудно собирать как-то не то.
Хотелось автоматизировать этот процесс. Да есть специальные генераторы обсидиана, но там требуются расходники в виде красной пыли или другого горючего материала, что для меня было неприемлимо. Поэтому был собран первый прототип генератора обсидиана. 

 

Портатип генератора обсидианта Version 1.0


В комплект к роботу требуется некая емкость для которая будет хранить лаву (я использовал барабан на 256 литров из мода Extra Utilities) и ведро охладителя (обычная вода). В робота необходимо вставить:

RXYFI89.png

  • Системный блок Т-2
  • Монитор Т-1
  • Клавиатура
  • Видеокарта Т-1
  • ЦП Т-1
  • Память Т-2.5 (2 штуки)
  • EEPROM (Lua BIOS)
  • Жесткий диск Т-1 (OpenOS)
  • Улучшение "Инвентарь"
  • Бак для жидкостей"
  • Улучшение "Контроллер бака"

Так же не забываем про бур/молот который может выбирать сразу территорию 3х3. Для работы необходима постройка как на скрине.

cgik7Ct.png

Ставим как на скрине сундук и зарядку, выдаем роботу в 1 слот охладитель, во второй бочку с лавой. Рекомендую заменить дно этой установки на какой то материал прочнее обсидиана, на крайняк обсидианом, причем в 2 слоя. Дело в том, что иногда происходит сбой в буре (зачастую из за ошибок сервера), из за чего он вскапывает не только по горизонтали но и по вертикали. Вы же не хотите в один прекрасный день обнаружить что от вашего генератора растекается лава по всему домику.
Устанавливаем следующую программу:

--1 слот ведро воды
--2 слот бочка лавы
--апгрейды: контроллер бочки, бочка, инвентарь

local com = require("component")
local r = require("robot")
local tc = com.tank_controller

local function go() while not r.forward() do os.sleep(0) end end
local function goUp() while not r.up() do os.sleep(0) end end
local function goDown() while not r.down() do os.sleep(0) end end


local function dropFluid(slot)
  r.select(slot)
  if tc.drain() then --1000 мл
    r.fillDown()
  else
    if slot == 1 then
      r.select(2)
    else
      r.select(1)
    end
    tc.fill()
    dropFluid(slot)
  end
end

goDown()
r.swingDown(0)
repeat 
  r.fillDown()
  print('обнуление!')
until r.tankLevel() == 0


while true do
  
  go() r.turnLeft() dropFluid(2)
  go() r.turnLeft() dropFluid(2)
  go() dropFluid(2)
  go() r.turnLeft() dropFluid(2)
  go() dropFluid(2)
  go() r.turnLeft() dropFluid(2)
  go() dropFluid(2)
  go() r.turnLeft() dropFluid(2)
  go() r.turnLeft() go()
  r.turnAround() dropFluid(2)
  
  goUp()
  os.sleep(1)
  r.select(1)
  dropFluid(1)
  os.sleep(1)
  r.drainDown()
  tc.fill()
  goDown()
  r.swingDown(0)
  
  if r.count(3) == 64 then
    print('опустошаю инвентарь')
    goUp()
    for i=3, r.inventorySize() do
      if r.count(i) > 0 then
        r.select(i)
        r.dropUp(64)
      end
    end
    os.sleep(5)
    goDown()
  end
  if r.durability() < 0.1 then
    os.exit()
  end  
end


ВНИМАНИЕ! Для тех кто копирует, внимательно после вставки проглядите код, там могут встретиться такие символы "?" из за этого программа не запустится (тапки кидать в кривой html код)
Запускаем программу и наслаждаемся результатом.

lG5mXVR.gif


Прогон на время с разными бурами (Синий бур из Graviation Suite и Бур из Immersive Engineering) показал слабый результат, стак обсидиана за 2 минуты и 30~35 секунд.
Меня такой результат вполне устраивал, но потом мне @Romanok2805 показал свою версию похожего генератора.
Описывать его я не буду, поясню что смысл работы того генератора, он черпает ведром лаву из бочки, выливает её рядом с источником воды, меняет ведро на бур и разрушает обсидиан. И так по кругу.

Генератор обсидианта Version 2.0

 

Немного подумав и внеся пару раз изменения в программу, добились нереального результата: стак обсидиана за 14~16 секунд!
Итак, конфигурация робота:

cvqGiLw.png

  • Системный блок Т-1
  • Монитор Т-1
  • Клавиатура
  • Видеокарта Т-1
  • ЦП Т-1
  • Память Т-1.5 (2 штуки)
  • EEPROM (Lua BIOS)
  • Жесткий диск Т-1 (OpenOS)
  • Улучшение "Инвентарь"
  • Контейнер для улучшения Т-1 (в него устанавливается Бак для жидкостей)

Код программы:

--обсидиановый майнер с внешней бочкой
--скоростной!

local r = require("component").robot
local slots = r.inventorySize()

local function drop()
  for i=1, slots do
    if r.count(i) > 0 then
      r.select(i)
      r.drop(1)
    end
  end
  r.select(1)
end

while r.drain(0) do
  r.fill(3)
  r.swing(3)
  if r.count(slots) > 0 then
    drop()
  end
end
drop()

Установка:

SVnWqoe.png


Под роботом разместите бочку, над роботом сундук. Сзади можно установить зарядку. Сбоку рядом с роботом разлить воду, а рядом с местом где будет ставиться лава убрать 1 блок, чтобы вода туда стекала. Роботу вручите самую быструю кирку, желательно с чарами на эффективность. При желании можете напихать в робота прокачанных апгрейдов опыта, чтобы увеличить скорость разрушения блоков, но тут уже конфигурацию робота и как апгрейды прокачать, сами продумаете.

 

Генератор обсидиана Version 2.1

 

Данная установка красиво выглядит, но довольно большая и бочка бросается в глаза сильно. Можно избавиться от бочки, забирая лаву из неё напрямую из инвентаря робота, но тогда сложность робота повысится и программа изменится.
Итак, конфигурация робота точно такая же как у первого генератора.
Код программы:

--обсидиановый майнер с внутренней бочкой
--скоростной!

local r = require("component").robot
local tc = require("component").tank_controller
local slots = r.inventorySize()

local function drop()
  for i=2, slots do
    if r.count(i) > 0 then
      r.select(i)
      r.drop(1)
    end
  end
  r.select(1)
end

while tc.drain() do
  r.fill(3)
  r.swing(3)
  if r.count(slots) > 0 then
    drop()
  end
end
drop()

Установка:
Все так же как и в предыдущем варианте, только бочку необходимо в 1 слот положить.

sOSg0sT.png

 

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

weKQTTZ.gif


Всем удачи, копайте обсидиант быстрее, чем вам сосед :)

P.S. Большое спасибо за демонстрацию и помощь в написании программы @Romanok2805
 

Изменено пользователем Asior
Правка анимации
  • Like 5

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×