Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --y = 6+3 -- y level
- function estFuel(f,r,y)
- fuel = 8*f+2*r+2*y+2
- print("refueling to estimated level of "..fuel)
- turtle.select(1)
- while turtle.getFuelLevel() < fuel do
- if turtle.getItemCount(1) < 1 then
- if not turtle.suckDown() then
- print("can't find fuel in there")
- sleep(2)
- end
- end
- turtle.refuel(1)
- print("fuel level: "..turtle.getFuelLevel().." / "..fuel)
- end
- turtle.dropDown()
- end
- function tleft(turns)
- if turns == nil then
- turns = 1
- end
- for i = 1,turns do
- turtle.turnLeft()
- end
- end
- function tright(turns)
- if turns == nil then
- turns = 1
- end
- for i = 1,turns do
- turtle.turnRight()
- end
- end
- function move(dir, dist, dig)
- for d = 1, dist do
- if dir == "f" then
- while not turtle.forward() do
- if turtle.detect() then
- if (not peripheral.isPresent("front")) and dig then
- turtle.dig()
- end
- else
- turtle.attack()
- end
- sleep(0.2)
- end
- elseif dir == "u" then
- while turtle.detect() and dig do
- turtle.dig()
- sleep(0.2) -- wait for gravel/sand to settle
- end
- while not turtle.up() do
- if turtle.detectUp() then
- if not peripheral.isPresent("top") then
- turtle.digUp()
- end
- else
- turtle.attackUp()
- end
- sleep(0.2)
- end
- elseif dir == "d" then
- while turtle.detect() and dig do
- turtle.dig()
- sleep(0.2)
- end
- while not turtle.down() do
- if turtle.detectDown() then
- if not peripheral.isPresent("bottom") then
- turtle.digDown()
- end
- else
- turtle.attackDown()
- end
- end
- elseif dir == "b" then
- if not turtle.back() then
- tleft(2)
- while not turtle.forward() do
- if turtle.detect() then
- if not peripheral.isPresent("front") then
- turtle.dig()
- end
- else
- turtle.attack()
- end
- end
- tleft(2)
- end
- end
- end
- end
- -- read position from file
- fh = fs.open("disk/state","r")
- right = tonumber(fh.readLine())
- forward = tonumber(fh.readLine())
- y = tonumber(fh.readLine())
- fh.close()
- -- update position to file
- fh = fs.open("disk/state","w")
- newRight = right - 1
- newForward = forward
- if newRight == -1 then
- newRight = 15
- newForward = forward - 1
- end
- if newForward == -1 then
- newForward = 3
- end
- fh.writeLine(newRight)
- fh.writeLine(newForward)
- fh.writeLine(y)
- fh.close()
- -- refuel
- estFuel(forward, right, y)
- -- position
- if right == 15 then
- dig = true
- else
- -- dig = false
- dig = true
- end
- if forward > 0 then
- move("f",4*forward-1,dig)
- tright()
- move("f",right,dig)
- tleft()
- elseif (forward == 0) and (right == 0) then
- move("f",1,true)
- move("d",2,true)
- move("b",2,true)
- else
- tright()
- move("f",right,dig)
- tright()
- move("f",1,true)
- tleft(2)
- end
- -- dig out
- if (forward == 0) and (right == 0) then
- move("d",y-7,true)
- else
- move("d",y-5,true)
- end
- move("f",2,true)
- -- move("u",y-6,true)
- -- move("u",1,false)
- move("u",y-5,true)
- -- return
- -- if forward == 0 then
- -- move("f",1,false)
- -- end
- tleft()
- move("f",right,false)
- tleft()
- move("f",4*forward+1,false)
- -- dump inventory
- print("dumping")
- for s=16,1,-1 do
- if turtle.getItemCount(s) > 0 then
- turtle.select(s)
- while not turtle.dropDown() do
- sleep(0.5)
- end
- end
- end
- redstone.setOutput("front",true)
Advertisement
Add Comment
Please, Sign In to add comment