Перейти к содержанию
Авторизация  
BarBoss

Спиральный карьер для робота

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

Сделал было робота-карьериста вырубающего сплошной массив, но оказалось, что на ИТ он малоэффективен. Основная добыча - кобла. Горизонтов руд, как на МТ, здесь нет.  Если нет чанклоадера, то карьер вообще бесполезен. Всё равно приходится стоять рядом и пасти его.

Испробовал вариант проще. Это модификация широко известной "бесконечной комнаты", которая роет горизонт высотой 3 блока по спирали от центра. С  небольшим изменением - добавлен ограничитель радиуса и, самое главное, робот роет не сплошной горизонт, а движется по спирали, оставляя между витками стенку толщиной в два блока. Дополнительным ограничением является износ кирки (я использую самые простые - бронзовые). Сломав кирку он останавливается и ждёт, когда её заменят.  Дополнительным бонусом "спиральной" траектории является то, что робот нырнув в лаву или воду с большой вероятностью вернётся в мои цепкие лапы. :)

 

Робот использован простой. Второй уровень, память Т2.5, 1 инвентарь и генератор. Желателен  контейнер 3-го уровня - туда можно поместить апгрейд "опыт". Ангельский апгрейд тоже не помешает - робот сможет поставить сундук в лаву или навесу и нормально разгрузиться. Иначе он лут просто выбросит.

 

Вот сама програмуля:

 

 

 

-- В последний, 16 слот,несколько сундуков (чем больше, тем лучше).
-- В предпоследний, 15 слот, топливо (любое, которое горит);


local long = 25 -- ограничитель - радиус спирали
local r = require("robot")

local component = require("component")
local g = component.generator

local leng = 3

local i = 0
local j = 0

function eat()
local selectedSlot = r.select()
--begin
r.select(15)
g.insert(8)
r.select(selectedSlot)
end

function fillChest()
local selectedSlot = r.select()
local k = 0
--begin
r.select(16)
r.placeDown()
for k = 1, 14 do
r.select(k)
r.dropDown()
end
r.select(selectedSlot)
end

function checkInv()
--begin
if r.count(14) > 0 then
fillChest()
end
end

function forward()
checkInv()
repeat
r.swing()
until not r.detect()
while not r.forward() do os.sleep(0.2) end
r.swingUp()
r.swingDown()
end

--begin

forward()
r.turnRight()
forward()
r.turnRight()

-- while true do
for k = 1, long do
print("Current tunnel length: "..leng)

if g.count() < 1 then
eat()
end

for j = 1, 2 do
for i = 1, tonumber(leng) - 1 do
forward()
end

r.turnRight()
end
-- для спирали добавил два шага вперёд
leng = leng + 3
end

 

 

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

Изменено пользователем BarBoss

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


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

Я тоже себе с месяц назад подправил этот код до спирали. Рад что не я один так подумал. Только радиус ограничения не ставил и использовал бур как инструмент (бур разрядился и робот приостанавливает работу). Сейчас еще можно и генератор не ставить т.к. энергии у робота и так много, а от генератора он все равно не успевает заряжаться.

Изменено пользователем KelLiN

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

×
×
  • Создать...