Перейти к содержимому

jammer312

Пользователи
  • Публикации

    54
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Все публикации пользователя jammer312

  1. Не последняя версия, но все же. Работает даже на роботе с минимальными комплектующими,однако нужен апгрейд инвентаря(но с двумя вставками памяти, не тестировал на роботе с одной вставкой). ОБНОВЛЕНИЕ Добавлена функция подзарядки робота через генератор, используя топлива, котое робот выкапывает в процессе работы. Программа сама определяет наличие генератора, если его нету, то работает как предыдущая версия. Инструкция: поставить робота, дать ему инструмент, поставить сзади него сундук запустить с 3 аргументами из командной строки( если сохранили как minequarry, то надо вводить "minequarry x y z", где x,y и z - значения, выбранные вами) первый аргумент определяет ширину второй аргумент - длину третий - глубину робот копает вперед-вправо-вниз ( то есть стоит над верхним левом ближнем углу рабочей зоны(параллелепипеда , который будет выкапывать)), всегда рабочая зона начинается с блока под роботом включительно. Для предотвращения потери ценных ресурсов робот копает в штатном режиме, пока последние 2 слота инвентаря не заполнены, однако, это можно изменить(slotstocheck отвечает за это, находится в начале программы). Проверяются 2 слота вместо одного, так как из некоторых блоков может выпадать по 2 вида ресурса(как из блока кварца кристаллы оного и пыль). Как только в них появляется хоть 1 предмет, робот возвращается в начальную позицию и выгружает весь инвентарь в сундук. Также, в конце работы робот возвращается в исходное положение и выгружает предметы Плюсы: программа неприхотлива, работает даже на простых роботах минимум настроек, точная отработка, эффективность( ну уж получше excavate из CC) робот не остановится, пока не выкопает каждый блок или не разрядится робот будет убивать мобов, на которых наткнется Минусы: Если неправильно задать координаты, и робот врежется в нерушимый блок, он в него упрется и не будет продолжать работу робот может разрядиться, если его не заряжать у сундука, в который будет помещаться выкопанное роботом робот не умеет менять инструменты Просьба, оставляйте свои отзывы о полезности программы, пишите в комментариях найденные баги и неточности, пожелания, я буду все это учитывать. Прога: if require("component").isAvailable("generator") then generator=require("component").generator end withg=(generator~=nil) slots=16 slotstocheck=2 robot=require("robot") coords={x=0,y=0,z=0,side=1} extcoords={x=0,y=0,z=0,side=1} sx={0,1,0,-1} sy={1,0,-1,0} --1,2,3,4 --tl -- coords.side = (coords.side + 3)%4 --tr -- coords.side = (coords.side + 1)%4 --ta -- coords.side = (coords.side + 2)%4 --all -- if coords.side == 0 then coords.side =4 end function go() while not robot.forward() do robot.swing()end coords.x=coords.x + sx[coords.side];coords.y = coords.y + sy[coords.side] end function godown() while not robot.down() do robot.swingDown()end coords.z = coords.z - 1 end function goup() while not robot.up() do robot.swingUp()end coords.z = coords.z + 1 end function check() return robot.count(slots-(slotstocheck-1)) > 0 end function turnLeft() robot.turnLeft(); coords.side = (coords.side + 3)%4;if coords.side == 0 then coords.side =4 end; end function turnRight() robot.turnRight(); coords.side = (coords.side + 1)%4; if coords.side == 0 then coords.side =4 end; end function tosurf() extcoords.x=coords.x extcoords.y=coords.y extcoords.z=coords.z extcoords.side=coords.side while coords.z ~= 0 do goup() end while coords.side ~= 3 do turnRight() end while coords.y ~= 0 do go() end turnRight(); while coords.x ~= 0 do go() end turnLeft(); end function back() while coords.z ~= extcoords.z do godown() end while coords.side~= 1 do turnRight() end while coords.y ~= extcoords.y do go() end turnRight(); while coords.x ~= extcoords.x do go() end while coords.side ~= extcoords.side do turnRight() end end function clearinv() alreadyhave=false for invcounter=1,slots do robot.select(invcounter) if withg then suc,error=generator.insert() if (error=="selected slot does not contain fuel" or alreadyhave) then robot.drop() else alreadyhave=true end else robot.drop() end end robot.select(1) sort() end function sort() curs=1 for q=1,slots do if robot.count(q) > 0 then robot.select(q);robot.transferTo(curs);curs=curs+1 end end robot.select(1) end function prevent() if check() then tosurf() clearinv() back() end end function digrow(n) prevent() robot.swingUp() prevent() robot.swingDown() for k=1,n do prevent() go() prevent() robot.swingUp() prevent() robot.swingDown() end end function digdim(x,y) godown() godown() for n=1,y do if tl then turnLeft() else turnRight() end digrow(ex) if tl then turnRight() else turnLeft() end tl = not tl if n==y then print("ok") else go() end end turnRight(); turnRight(); tl= not tl end x,y,z=... tl=false x=x+0 y=y+0 z=z+0 ex=x-1 fullz=(z-z%3)/3 print("Fullz = " .. fullz) for i=1,fullz do digdim(x,y) godown() end if fullz*3==z then elseif fullz*3+1==z then goup();goup();digdim(tl,x,y) else goup();digdim(tl,x,y) end tosurf() clearinv()
×
×
  • Создать...