Содержание

Программки для черепашек из ComputerCraft

Имя черепашки

Прежде чем забивать в черепашек программы, их надо проименовать, иначе все введенные программы не сохранятся в ее памяти. Команда для проименования (в примере даем имя TurtleBot):

label set TurtleBot

Чтобы удалить имя:

label clear
</code
Чтобы узнать имя:
<code>
label get

Заправка топливом

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

refuel all

Туннель 3х3

Туннель 3х3, черепашка в центре. С параметром длины туннеля. Ставит факелы каждый 7-ой блок. При нехватке места внутри, ставит сундук слева от себя на пол туннеля и выгружается и дальше продолжает копать туннель. Туннель копается с проверками на сыпучесть. Факелы в первый слот. Сундуки во второй. Перед началам работ заправить ручками.

<spoiler|Код программы: tun3x3>

tArgs={...}
len=tonumber(tArgs[1])

i=0
k=0
m=0
h=0
svet=1

function digi(k)

if k==1 then
m=1
while m==1 do
if turtle.detect() then
turtle.dig()
sleep(0.5)
end
if turtle.detect()==false then
m=0
end
end
end

if k==2 then
m=1
while m==1 do
if turtle.detectUp() then
turtle.digUp()
sleep(0.5)
end
if turtle.detectUp()==false then
m=0
end
end
end

if k==3 then
m=1
while m==1 do
if turtle.detectDown() then
turtle.digDown()
sleep(0.5)
end
if turtle.detectDown()==false then
m=0
end
end
end

end

while i~=len do
digi(1)
turtle.forward()
digi(2)
digi(3)
turtle.turnLeft()
digi(1)
turtle.forward()
digi(2)
digi(3)
turtle.turnRight()
turtle.turnRight()
turtle.forward()
digi(1)
turtle.forward()
digi(2)
digi(3)
turtle.turnLeft()
turtle.turnLeft()
turtle.forward()
turtle.turnRight()

if turtle.getItemCount(16)>0 then
turtle.turnLeft()
turtle.down()
turtle.select(2)
turtle.place()

for h=1,14 do
turtle.select(h+2)
turtle.drop()
end
turtle.select(3)
turtle.turnRight()
turtle.up()
end

if svet==7 then
turtle.select(1)
turtle.placeDown()
svet=0
end

i=i+1
svet=svet+1

end

</spoiler> Страница с кодом для скачивания в черепашку: http://pastebin.com/by7QRyUQ В интерфейсе черепашки ввести:

pastebin get by7QRyUQ tun3x3

Пример команды:

tun3x3 40

Прокопает туннель 3x3x40 блоков

Вырубка деревьев 2х2

Вырубка деревьев 2х2 и возврат на землю. Устанавливать лицевой частью к левому нижнему блоку дерева.

<spoiler|Код программы: lumber>

k=true
i=0

turtle.dig()
turtle.forward()

while k do
turtle.dig()
turtle.turnRight()
turtle.dig()
turtle.forward()
turtle.turnLeft()
turtle.dig()
turtle.turnRight()
turtle.back()
turtle.turnLeft()
if turtle.detectUp() then
turtle.digUp()
turtle.up()
i=i+1
end
if turtle.detectUp()==false then
k=false
end

end

while i>0 do
turtle.down()
i=i-1
end

</spoiler> Страница с кодом для скачивания в черепашку: http://pastebin.com/5vHjusbg В интерфейсе черепашки ввести:

pastebin get 5vHjusbg lumber

Примеры не привожу, все и так очевидно…

Улучшенный excavate

Задаем длину, ширину и черепаха едет копать яму до бедрока. Если указать глубину, будет копать до заданной глубины. Кладет все в сундук. Восстанавливает свою работу после рестарта, перезапуска сервера/клиента.
Пример использования: ставим сундук, после него черепаху. Вводим команду quarry <lenght> <width> [<height>] (глубину задаем опционально)
Далее кладем топливо и жмем enter.
Программа оптимизирована, копает по 3 блока за 1 движение.
Во время работы может дозаправиться имеющимся в инвентаре топливом. Если такового нету, едет к сундуку попросить топлива :-). Если в сундуке нет места ожидает, пока не появится свободное.

<spoiler|Код программы: quarry>

-- version 1.1.0
local direction = {
        ["forw"]  = 1,
        ["right"] = 2,
        ["back"]  = 3,
        ["left"]  = 4,
}
local dir = direction.forw
local pos = {
        ["x"]   = 0,
        ["y"]   = 0,
        ["z"]   = 0,
}
 
local name = "quarry"
local done = false
globalState = 0
aState = 0 --состояние автомата
tmpState = 0
local lenght,width,height = 0,0,0
local xt,yt,zt,dt = 0,0,0,direction.forw
mode = 1
 
local function saveState()
        name = shell.getRunningProgram()
    local file = fs.open(name..".save","w")
        file.writeLine(mode)
        file.writeLine(globalState)
    file.writeLine(pos.x)
    file.writeLine(pos.y)
    file.writeLine(pos.z)
    file.writeLine(dir)
    file.writeLine(tmpState)
    file.writeLine(aState)
    file.writeLine(xt)
    file.writeLine(yt)
    file.writeLine(zt)
    file.writeLine(dt)
        file.writeLine(lenght)
    file.writeLine(width)
    file.writeLine(height)
        file.writeLine(done)
    file.close()
end
 
local function readState()
        name = shell.getRunningProgram()
        if not fs.exists(name..".save") then
                return false
        end
        local file = fs.open(name..".save","r")
        mode =          tonumber(file.readLine())
    globalState = tonumber(file.readLine())
    pos.x =     tonumber(file.readLine())
        pos.y =         tonumber(file.readLine())
        pos.z =         tonumber(file.readLine())
        dir =           tonumber(file.readLine())
        tmpState =      tonumber(file.readLine())
        aState =        tonumber(file.readLine())
        xt =            tonumber(file.readLine())
        yt =            tonumber(file.readLine())
        zt =            tonumber(file.readLine())
        dt =            tonumber(file.readLine())      
        lenght =        tonumber(file.readLine())
    width =     tonumber(file.readLine())
    height =    tonumber(file.readLine())
        done =          file.readLine()
        if done == "true" then
                done = true
        else
                done = false
        end
    file.close()
        return true
end
 
local function setStartup()
        if fs.exists("startup") then
--              if fs.exists("startup.old") then
                        fs.delete("startup")
--              else
--                      shell.run("move","startup","startup.old")
--              end
        end
        name = shell.getRunningProgram()
        local file = fs.open("startup","w")
        file.writeLine("shell.run(\""..name.."\")")
        file.close()
end
 
local function delStartup()
        if fs.exists("startup") then
                fs.delete("startup")
        end
--      if fs.exists("startup.old") then
--              shell.run("move","startup.old","startup")
--      end
        name = shell.getRunningProgram()
        if fs.exists(name..".save") then
                fs.delete(name..".save")
        end
end
 
function refuel(ammount)
        local fuelLevel = turtle.getFuelLevel()
        if fuelLevel == "unlimited" then
                return true
        end
        local needed = 0
        if ammount == nil then
                needed = math.abs(pos.x) + math.abs(pos.y) + math.abs(pos.z) + 3
        else
                needed = ammount
        end
        if turtle.getFuelLevel() < needed then
                for i=1,16 do
                        if turtle.getItemCount(i) > 0 then
                                turtle.select(i)
                                if turtle.refuel(64) then
                                        print("turtle get fuel")
                                        while turtle.getItemCount(i) > 0 and turtle.getFuelLevel() < needed do
                                                print("turtle get fuel")
                                                turtle.refuel(64)
                                        end
                                        if turtle.getFuelLevel() >= needed then
                                                turtle.select(1)
                                                return true
                                        end
                                end
                        end
                end
                turtle.select(1)
                return false
        end
        return true
end
 
local function inventoryFull()
        local bFull = true
        for n=1,16 do
                if turtle.getItemCount(n) == 0 then
                        bFull = false
                end
        end
        if bFull then
                print( "No empty slots left." )
                return true
        end
        return false
end
 
local function unload()
        print( "Unloading items..." )
        local n = 1
        if mode == 1 then
                if not turtle.detect() then
                        print("no detect chest")
                        while not turtle.detect() do
                                os.sleep(1)
                        end
                end
                while n <= 16 do
                        turtle.select(n)
                        if turtle.getItemCount(n) > 0 and not turtle.drop() then
                                print("Don't unload to chest")
                                os.sleep(5)
                        else
                                n = n + 1
                        end
                end
        else
                if not turtle.detectUp() then
                        print("no detect chest")
                        while not turtle.detectUp() do
                                os.sleep(1)
                        end
                end
                n = 2
                while n <= 16 do
                        turtle.select(n)
                        if turtle.getItemCount(n) > 0 and not turtle.dropUp() then
                                print("Don't unload to chest")
                                os.sleep(5)
                        else
                                n = n + 1
                        end
                end
        end
        turtle.select(1)
end
 
local goTo
 
local function returnToEnderChest()
        if globalState == 1 or globalState == 2 then
                globalState = 5
                saveState()
        end
        if globalState == 5 then
                turtle.select(1)
                while turtle.getItemCount(1) < 0 do
                        print("Don't found chest" )
                        print("Press any key to continue")
                        local input = read()
                end
                while true do
                        if turtle.detectUp() then       --обнаружен блок, сломать
                                if turtle.digUp() then
                                        --print("detect block")
                                else
                                        print("ERROR! Detect bedrock or unbreaking block.")
                                        error()
                                        return
                                end
                        elseif turtle.attackUp() then -- Сверху нет блока, проверяем есть ли там существо
                                print("detect monster or player")
                        else    -- Ставим сундук
                                if turtle.placeUp() then
                                        -- it's ok!
                                        globalState = 6
                                        saveState()
                                        break
                                else
                                        print("detect unknowing object")
                                        os.sleep(0.5)
                                end
                        end
                end
        end
        if globalState == 6 then
                unload()
                turtle.select(1)
                if turtle.getItemCount(1) > 0 then
                        turtle.dropUp()
                end
                turtle.digUp()
                globalState = 2
                saveState()
        end
end
 
local function returnToChest(drop)
        if globalState == 1 or globalState == 2 then
                xt = pos.x
                yt = pos.y
                zt = pos.z
                dt = dir
                globalState = 3
                saveState()
        end
        if globalState == 3 then
                print( "Returning to surface..." )
                goTo( 0,0,0,direction.back)
                if drop then
                        unload()
                end
                globalState = 4
                saveState()
        end
        if globalState == 4 then
                local fuelNeeded = (math.abs(xt) + math.abs(yt) + math.abs(zt) + 3)*2
                if not refuel( fuelNeeded ) then
                        print( "Waiting for fuel" )
                        while not refuel( fuelNeeded ) do
                                sleep(1)
                        end
                end
                print( "Resuming mining..." )
                goTo( xt,yt,zt,dt )
                globalState = 2
                xt = 0
                yt = 0
                zt = 0
                dt = direction.forw
                saveState()
        end    
end
 
local function returnSupplies()
        if mode == 1 then
                returnToChest(true)
        else
                returnToEnderChest()
        end
end
 
local function turnRight()
        dir=dir+1      
        if dir==5 then dir = direction.forw end
                saveState()
        turtle.turnRight()
end
 
local function turnLeft()
        dir=dir-1      
        if dir==0 then dir = direction.left end
                saveState()
        turtle.turnLeft()
end
 
local function checkBorder()
        if (math.abs(pos.x) >=  width) or (math.abs(pos.z) >= lenght) then
                print("going beyond a border")
                delStartup()
                error()
        end
end
 
local function down()
        while true do
                if turtle.detectDown() then    
                        if turtle.digDown() then
--                              print("detect block")
                        else
                                print("detect bedrock or unbreaking block")
                                return false
                        end
                elseif turtle.attackDown() then
                        print("detect monster or player")
                else   
                        local ty = pos.y
                        pos.y = pos.y - 1
                        saveState()
                        if turtle.down() then
--                              print("it's ok!")
                                checkBorder()
                                return true
                        else
                                print("detect unknowing object")
                                pos.y = ty
                                saveState()
                                os.sleep(0.5)
                        end
                end
        end
end
 
local function up()
        while true do
                if turtle.detectUp() then       --обнаружен блок, сломать
                        if turtle.digUp() then
--                              print("detect block")
                        else
                                print("detect bedrock or unbreaking block")
                                return false
                        end
                elseif turtle.attackUp() then -- Сверху нет блока, проверяем есть ли там существо
                        print("detect monster or player")
                else    -- Передвигаемся вверх
                        local ty = pos.y
                        pos.y = pos.y + 1
                        saveState()
                        if turtle.up() then
                                -- it's ok!
--                              print("it's ok!")
                                checkBorder()
                                return true
                        else
                                -- backup
                                print("detect unknowing object")
                                pos.y = ty
                                saveState()
                                os.sleep(0.5)
                        end
                end
        end
end
 
local function forward(mined)
        if mined then
                if turtle.detectUp() then
                        turtle.digUp()
                        if inventoryFull() then
                                returnSupplies()
                        end
                end
                if turtle.detectDown() then
                        turtle.digDown()
                        if inventoryFull() then
                                returnSupplies()
                        end
                end
        end
       
        while true do
                if turtle.detect() then --обнаружен блок, сломать
                        if turtle.dig() then
--                              print("detect block")
                                 if mined and inventoryFull() then
                                         returnSupplies()
                                 end
                        else
                                print("detect bedrock or unbreaking block")
                                return false
                        end
                elseif turtle.attack() then -- Впереди нет блока, проверяем есть ли там существо
                        print("detect monster or player")
                         if mined and inventoryFull() then
                                 returnSupplies()
                         end
                else    -- Передвигаемся вперед
                        if mined then -- Уберем гравий
                                while turtle.detectUp() do
                                        turtle.digUp()
                                        os.sleep(0.5)
                                end
                        end
                        local tz,tx = pos.z,pos.x
                        if dir == direction.forw then
                                pos.z=pos.z+1
                        elseif dir == direction.right then
                                pos.x=pos.x+1
                        elseif dir == direction.back then
                                pos.z=pos.z-1
                        elseif dir == direction.left then
                                pos.x=pos.x-1
                        end
                        saveState()
                        if turtle.forward() then
--                              print("it's ok!")
                                checkBorder()
                                return true
                        else
                                -- backup
                                if not turtle.detect() then    
                                        print("detect unknowing object")
                                end
                                pos.z = tz
                                pos.x = tx
                                saveState()
                                os.sleep(0.5)
                        end
                end
        end
end
 
local function detectBedrock() --объехать бедрок
        turnLeft()
        turnLeft()
        while not up() do
                if not forward() then
                        print("don't going to bedrock!")
                        delStartup()
                        error()
                        return false
                        -- не получилось объехать бедрок
                end
        end
        return true
end
 
function goTo( x, y, z, d)
        while pos.y < y do      -- идем вверх
                if not up() then
                        detectBedrock()
                end
        end
        if pos.x > x then      
                while dir ~= direction.left do
                        turnLeft()
                end
                while pos.x > x do
                        forward(false)
                end
        end
        if pos.x < x then
                while dir ~= direction.right do
                        turnRight()
                end
                while pos.x < x do
                        forward(false)
                end
        end
        if pos.z > z then
                while dir ~= direction.back do
                        turnRight()
                end
                while pos.z > z do
                        forward(false)
                end
        end
        if pos.z < z then
                while dir ~= direction.forw do
                        turnLeft()
                end
                while pos.z < z do
                        forward(false)
                end    
        end
        while pos.y > y do      -- идем вниз
                down()
        end
        while d ~= dir do
                turnLeft()
        end
end  
 
local function nextState()
        if aState == 0 then
                aState = 1
        elseif aState == 1 then
                if pos.z == lenght-1 and pos.x ~= width-1 then
                        aState = 2
                elseif pos.z == lenght-1 and pos.x == width-1 then
                        aState = 9
                end
        elseif aState == 2 then
                aState = 3
        elseif aState == 3 then
                if pos.z == 0 and pos.x ~= width-1 then
                        aState = 4
                elseif pos.z == 0 and pos.x == width-1 then
                        aState = 10
                end
        elseif aState == 4 then
                aState = 1
        elseif aState == 5 then
                if pos.z == lenght-1 and pos.x ~= 0 then
                        aState = 6
                elseif pos.z == lenght-1 and pos.x == 0 then
                        aState = 11
                end
        elseif aState == 6 then
                aState = 7
        elseif aState == 7 then
                if pos.z == 0 and pos.x ~= 0 then
                        aState = 8
                elseif pos.z == 0 and pos.x == 0 then
                        aState = 12
                end
        elseif aState == 8 then
                aState = 5
        elseif aState == 9 then
                aState = 7
        elseif aState == 10 then
                aState = 5
        elseif aState == 11 then
                aState = 3
        elseif aState == 12 then
                aState = 1
        end
        tmpState = 0
        saveState()
        return
end
 
local function ref()
        if not refuel() then
                print( "Not enough Fuel" )
                if mode == 1 then
                        returnSupplies()
                else
                        returnToEnderChest()
                        returnToChest(false)
                end
        end
end
 
local function lower()
        if turtle.detectUp() then
                turtle.digUp()
        end
        while tmpState ~= 3 do
                ref()
                tmpState = tmpState + 1
                if not down() then
                        done = true
                        break
                end
        end
end
 
local function main()
        while not done do
                if globalState == 2 then
                        if aState == 1 then
                                ref()
                                if not forward(true) then
                                        done = true
                                        break
                                end
                        elseif aState == 2 then
                                while tmpState ~= 3 do
                                        if tmpState == 0 then
                                                tmpState = tmpState + 1
                                                turnRight()
                                        elseif tmpState == 1 then
                                                ref()
                                                tmpState = tmpState + 1
                                                if not forward(true) then
                                                        done = true
                                                        break
                                                end
                                        elseif tmpState == 2 then
                                                tmpState = tmpState + 1
                                                turnRight()
                                        end
                                end
                        elseif aState == 3 then
                                ref()
                                if not forward(true) then
                                        done = true
                                        break
                                end
                        elseif aState == 4 then
                                while tmpState ~= 3 do
                                        if tmpState == 0 then
                                                tmpState = tmpState + 1
                                                turnLeft()
                                        elseif tmpState == 1 then
                                                ref()
                                                tmpState = tmpState + 1
                                                if not forward(true) then
                                                        done = true
                                                        break
                                                end
                                        elseif tmpState == 2 then
                                                tmpState = tmpState + 1
                                                turnLeft()
                                        end
                                end
                        elseif aState == 5 then
                                ref()
                                if not forward(true) then
                                        done = true
                                        break
                                end
                        elseif aState == 6 then
                                while tmpState ~= 3 do
                                        if tmpState == 0 then
                                                tmpState = tmpState + 1
                                                turnLeft()
                                        elseif tmpState == 1 then
                                                ref()
                                                tmpState = tmpState + 1
                                                if not forward(true) then
                                                        done = true
                                                        break
                                                end
                                        elseif tmpState == 2 then
                                                tmpState = tmpState + 1
                                                turnLeft()
                                        end
                                end            
                        elseif aState == 7 then
                                ref()
                                if not forward(true) then
                                        done = true
                                        break
                                end
                        elseif aState == 8 then
                                while tmpState ~= 3 do
                                        if tmpState == 0 then
                                                tmpState = tmpState + 1
                                                turnRight()
                                        elseif tmpState == 1 then
                                                ref()
                                                tmpState = tmpState + 1
                                                if not forward(true) then
                                                        done = true
                                                        break
                                                end
                                        elseif tmpState == 2 then
                                                tmpState = tmpState + 1
                                                turnRight()
                                        end
                                end            
                        elseif height+pos.y<3 then
                                done = true
                                break
                        elseif aState == 9 then
                                while dir ~= direction.back do
                                        turnLeft()
                                end    
                                lower()
                        elseif aState == 10 then
                                while dir ~= direction.forw do
                                        turnLeft()
                                end    
                                lower()        
                        elseif aState == 11 then
                                while dir ~= direction.back do
                                        turnLeft()
                                end    
                                lower()        
                        elseif aState == 12 then
                                while dir ~= direction.forw do
                                        turnLeft()
                                end    
                                lower()        
                        end
                        nextState()
                elseif globalState == 3 or globalState == 4 or globalState == 5 or globalState == 6 then
                        returnSupplies()
                end
        end
        saveState()
        print( "Returning to surface..." )
 
        -- Return to where we started
        goTo( 0,0,0,direction.back )
        if mode == 1 then
                unload()
        else
                returnToEnderChest()
        end
        goTo( 0,0,0,direction.forw )
        delStartup()
end
 
local function recover()
        if not readState() or globalState == 0 then
                print("Programm is not running")
                print( "Usage: quarry <lenght> <width> [<height>]" )
                return
        end
        if globalState == 1 then
                local done = false
                while tmpState ~= 1 do
                        ref()
                        if not down() then
                                done = true
                                break
                        end
                        tmpState=tmpState+1
                        saveState()
                end
                globalState = 2
                saveState()
        end
        if globalState >= 2 then
--              nextState()
                main()
        end
end
 
local function start()
        setStartup()
        globalState = 1 -- Поехали копать
        done = false
 
        while tmpState < 1 do
                ref()
                if not down() then
                        done = true
                        break
                end
                tmpState=tmpState+1
                saveState()
        end
 
        globalState = 2
        saveState()
        nextState()
        main()
end
 
function FuelInfo()
        local fuelLevel = turtle.getFuelLevel()
        local fuelNeed = 0
        local minFuel = lenght*width
        if fuelLevel ~= "unlimited" then
                if height == 256 then
                        minFuel = minFuel*64
                else
                        minFuel = minFuel*height
                end
                minFuel = math.ceil(minFuel/2)
                fuelNeed = minFuel - turtle.getFuelLevel()
                if fuelNeed < 0 then
                        fuelNeed = 0
                end
        end
        print( "Fuel level: "..turtle.getFuelLevel())
        print( "Need fuel: "..fuelNeed)
end
 
local function GetFuel()
        local fuelLevel = turtle.getFuelLevel()
        if fuelLevel == "unlimited" then
                return
        end
        local minFuel = lenght*width
        if height == 256 then
                minFuel = minFuel*64
        else
                minFuel = minFuel*height
        end
        minFuel = math.ceil(minFuel/2)
--      print( "Waiting for fuel level: "..minFuel)
        print( "Fuel level: "..math.ceil((turtle.getFuelLevel()*100)/minFuel).."%")
        local waiting=true
       
        parallel.waitForAll(
                function()
                        while waiting do
                                for i = 1,16 do
                                        if turtle.getItemCount(i)>0 then
                                                turtle.select(i)
                                                if turtle.refuel() then
                                                        print( "Fuel level: "..math.ceil((turtle.getFuelLevel()*100)/minFuel).."%")
                                                end
                                        end
                                end
                                os.sleep(0.5)
                        end
                end
                ,
                function()
                        print("press any key to run quarry")
                        local input = read()
                        waiting = false
                        term.clear()
                        term.setCursorPos( 1, 1 )
                        turtle.select(1)
                        if mode == 2 and turtle.getItemCount(1) < 1 then
                                print("Waiting for get chest to first slot")
                                while turtle.getItemCount(1) < 1 do
                                        os.sleep(1)
                                end
                        end
--                      print( "Fuel level: "..turtle.getFuelLevel())
                        print( "Excavating...")
                        start()
                        return
                end
        )
end
 
local tArgs = { ... }
if #tArgs == 0 then
        print( "Recovering...")
        recover()
        return
elseif #tArgs == 2 or #tArgs == 3 or #tArgs == 4 then
        lenght = tonumber( tArgs[1] )
        width  = tonumber( tArgs[2] )
        height = 256
        local arg = ""
        if lenght < 1 or width < 1 or lenght > 255 or width > 255 then
                print( "Quarry size must be positive" )
                return
        end
        if #tArgs == 3 then
                arg = tonumber( tArgs[3] )
                if tArgs[3] == "-e" then
                        mode = 2
                elseif tArgs[3] == "-f" then
                        FuelInfo()
                        return
                elseif arg ~= nill then
                        height = arg
                        if height < 1 or height > 255 then
                                print( "Quarry size must be positive" )
                                return
                        end
                else
                        print( "Usage: quarry <lenght> <width> [<height>] [<key>]; key: \"-e\", \"-f\"" )
                        return
                end
        elseif #tArgs == 4 then
                arg = tonumber( tArgs[3] )
                if arg ~= nill then
                        height = arg
                        if height < 1 or height > 255 then
                                print( "Quarry size must be positive" )
                                return
                        end
                else
                        print( "Usage: quarry <lenght> <width> [<height>] [<key>]; key: \"-e\", \"-f\"" )
                        return
                end
                if tArgs[4] == "-e" then
                        mode = 2
                elseif tArgs[4] == "-f" then
                        FuelInfo()
                        return
                else
                        print( "Usage: quarry <lenght> <width> [<height>] [<key>]; key: \"-e\", \"-f\"" )
                        return
                end
        end
        --starting
        GetFuel()
        return
else
        print( "Usage: quarry <lenght> <width> [<height>] [<key>]; key: \"-e\", \"-f\"" )
        return
end

</spoiler>

Страница с кодом для скачивания в черепашку: https://pastebin.com/xS8Fy4kG В интерфейсе черепашки ввести:

pastebin get xS8Fy4kG quarry

Пример:

quarry 10 10 20

Прокопает яму 10×10 блоков глубиной в 20 блоков

Всю инфу напиздил на просторах интернета. — Luciferus 2019/03/15 11:05