Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local a = {...}
- local num_of_lines_x = tonumber(a[1])
- local num_of_blocks_z = tonumber(a[2])
- local num_of_layers_y = tonumber(a[3]) / 3
- a = nil
- local num_all = num_of_lines_x * num_of_blocks_z - 1
- local numRub, saplingName = _, 16
- -- =============================== Н А В И Г А Ц И Я ============================== --
- local x, z, y, b, dx ,dz = 0, 0, 0, 0, 0, 1
- local function forward(num)
- if not num then num = 1 end
- for i = 1, num do
- while not turtle.forward() do turtle.attack() turtle.dig() end
- end
- x = x + dx * num
- z = z + dz * num
- end
- local function turnLeft()
- b = (b + 3)%4
- turtle.turnLeft()
- if b == 0 then dz = 1; dx = 0
- elseif b == 1 then dx = 1; dz = 0
- elseif b == 2 then dz = -1; dx = 0
- else dx = -1; dz = 0 end
- end
- local function turnRight()
- b = (b + 1)%4
- turtle.turnRight()
- if b == 0 then dz = 1; dx = 0
- elseif b == 1 then dx = 1; dz = 0
- elseif b == 2 then dz = -1; dx = 0
- else dx = -1; dz = 0 end
- end
- local function turnAround()
- b = (b + 2)%4
- for i = 1, 2 do
- turtle.turnLeft()
- end
- dx = dx * (-1)
- dz = dz * (-1)
- end
- local function turn(side)
- if side == 0 and b == 3 then
- turtle.turnRight()
- b = side
- elseif side == 3 and b == 0 then
- turtle.turnLeft()
- b = side
- else
- while (b < side) do
- turtle.turnRight()
- b = b + 1
- end
- while (b > side) do
- turtle.turnLeft()
- b = b - 1
- end
- end
- if b == 0 then dz = 1; dx = 0
- elseif b == 1 then dx = 1; dz = 0
- elseif b == 2 then dz = -1; dx = 0
- else dx = -1; dz = 0 end
- end
- local function up(num)
- if not num then num = 1 end
- for i = 1, num do
- while not turtle.up() do turtle.attackUp() turtle.digUp() end
- end
- y = y - num
- end
- local function down(num)
- if not num then num = 1 end
- for i = 1, num do
- while not turtle.down() do turtle.attackDown() turtle.digDown() end
- end
- y = y + num
- end
- -- ============================== Ф У Н К Ц И И ============================= --
- -- Возврат домой
- local function home(noreturn)
- local x1 = x
- local z1 = z
- local y1 = y
- local b1 = b
- up(y1)
- if x1 > 0 then
- turn(3)
- forward(x1)
- end
- turn(2)
- forward(z1)
- for slot = 1 , 15 do
- turtle.select(slot)
- turtle.drop()
- end
- turtle.select(1)
- turnAround()
- if not noreturn then
- forward(z1)
- if x1 > 0 then
- turn(1)
- forward(x1)
- end
- turn(b1)
- down(y1)
- end
- end
- -- ======================== Г Л А В Н Ы Й Ц И К Л ======================== --
- turtle.digUp()
- turtle.digDown()
- for k1 = 1, num_of_layers_y do
- for i = 1, num_all + 1 do
- if turtle.getItemCount(15) > 0 then
- home(false)
- end
- turtle.dig()
- forward()
- turtle.digUp()
- turtle.digDown()
- if i%num_of_blocks_z == 0 and i < num_all then
- if (z ~= 0 and k1%2 == 1) or (z == 0 and k1%2 ~= 1) then
- turnRight()
- turtle.dig()
- forward()
- turnRight()
- else
- turnLeft()
- turtle.dig()
- forward()
- turnLeft()
- end
- turtle.digUp()
- turtle.digDown()
- end
- end
- if k1 < num_of_layers_y then
- turnAround()
- for d = 1, 3 do
- down()
- turtle.digDown()
- end
- end
- end
- home(true)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement