Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local x = 0
- local y = 0
- local z = 0
- local direction = 0
- local width = 0
- local length = 0
- local height = 0
- local oldx = 0
- local oldz = 0
- local oldy = 0
- local olddir = 0
- function file()
- if not fs.exists("coord") then
- w = fs.open("coord","w")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("0")
- w.writeLine("-- 1 = x, 2 = z, 3 = y, 4 = direction")
- w.writeLine("-- 5 = oldx, 6 = oldz, 7 = oldy, 8 = olddir")
- w.close()
- end
- end
- function readsave()
- file()
- r = fs.open("coord","r")
- x = tonumber(r.readLine(1))
- z = tonumber(r.readLine(2))
- y = tonumber(r.readLine(3))
- direction = tonumber(r.readLine(4))
- oldx = tonumber(r.readLine(5))
- oldz = tonumber(r.readLine(6))
- oldy = tonumber(r.readLine(7))
- olddir = tonumber(r.readLine(8))
- r.close()
- end
- function save()
- s = fs.open("coord","w")
- s.writeLine(x)
- s.writeLine(z)
- s.writeLine(y)
- s.writeLine(direction)
- s.writeLine(oldx)
- s.writeLine(oldz)
- s.writeLine(oldy)
- s.writeLine(olddir)
- s.close()
- end
- function forward()
- if turtle.forward()==true then
- if direction==0 then
- z = z+1
- save()
- elseif direction==1 then
- x = x-1
- save()
- elseif direction==2 then
- z = z-1
- save()
- elseif direction==3 then
- x = x+1
- save()
- end
- else
- print("something is blocking my way")
- turtle.dig()
- turtle.attack()
- sleep(1)
- forward()
- end
- end
- function dig()
- turtle.dig()
- forward()
- end
- function down()
- if turtle.down()==true then
- y = y-1
- save()
- else
- while turtle.down()==false do
- turtle.attack()
- turtle.digDown()
- end
- y = y-1
- save()
- end
- end
- function up()
- if turtle.up()==true then
- y = y+1
- save()
- else
- while turtle.up()==false do
- turtle.attack()
- turtle.digUp()
- end
- y = y+1
- save()
- end
- end
- function Left()
- if turtle.turnLeft()==true then
- direction = direction - 1
- direction = direction % 4
- save()
- end
- end
- function Right()
- if turtle.turnRight()==true then
- direction = direction + 1
- direction = direction % 4
- save()
- end
- end
- file()
- readsave()
- save()
- print("enter desired width:")
- wid = io.read()
- print("enter desired length:")
- len = io.read()
- print("enter desired height:")
- high = io.read()
- function length()
- for i = 2, len do
- dig()
- bank()
- end
- Left()
- Left()
- for i = 2, len do
- dig()
- end
- Right()
- Right()
- end
- function width()
- for j = 2, wid do
- Left()
- dig()
- Right()
- length()
- end
- end
- function height()
- for m = 2, high do
- length()
- width()
- Right()
- for i = 1, x do
- dig()
- end
- Left()
- turtle.digDown()
- down()
- end
- length()
- width()
- end
- function face0()
- readsave()
- while direction~=0 do
- Right()
- readsave()
- print(direction)
- end
- print("facing direction 0")
- end
- function face1()
- readsave()
- while direction~=1 do
- Right()
- readsave()
- print(direction)
- end
- print("facing direction 1")
- end
- function face2()
- readsave()
- while direction~=2 do
- Right()
- readsave()
- print(direction)
- end
- print("facing direction 2")
- end
- function face3()
- readsave()
- while direction~=3 do
- Right()
- readsave()
- print(direction)
- end
- print("facing direction 3")
- end
- function xto0()
- readsave()
- if x>0 then
- face1()
- while x~=0 do
- forward()
- readsave()
- print("current cords".."("..x..","..z..")")
- end
- face0()
- print("arrived at 0 x coord")
- elseif x<0 then
- face3()
- while x~=0 do
- forward()
- readsave()
- print("current cords".."("..x..","..z..")")
- end
- face0()
- print("arrived at 0 x coord")
- elseif x==0 then
- face0()
- print("turtle already at x=0")
- end
- end
- function zto0()
- readsave()
- if z>0 then
- face2()
- while z~=0 do
- forward()
- readsave()
- print("current cords".."("..x..","..z..")")
- end
- face0()
- print("arrived at z=0 coord")
- elseif z<0 then
- face0()
- while z~=0 do
- forward()
- readsave()
- print("current cords".."("..x..","..z..")")
- end
- face0()
- print("arrived at z=0 coord")
- elseif z==0 then
- face0()
- print("turtle already at z=0")
- end
- end
- function yto0()
- readsave()
- if y>0 then
- while y~=0 do
- down()
- readsave()
- print("y ="..y)
- end
- print("arrived at y=0")
- elseif y<0 then
- while y~=0 do
- up()
- readsave()
- print("y ="..y)
- end
- print("arrived at y = 0")
- elseif y==0 then
- print("arived at y = 0")
- end
- end
- function bank()
- readsave()
- if turtle.getItemCount(16)>=1 then
- oldx = x
- oldz = z
- oldy = y
- olddir = direction
- save()
- print(oldx..oldz..oldy)
- print(x..z..y)
- xto0()
- zto0()
- yto0()
- face2()
- for banker = 1, 16 do
- turtle.select(banker)
- turtle.drop()
- end
- face0()
- end
- backoldx()
- backoldz()
- backoldy()
- backolddir()
- turtle.select(1)
- end
- function backoldx()
- readsave()
- if oldx>0 then
- face3()
- while x~=oldx do
- forward()
- readsave()
- end
- elseif oldx<0 then
- face1()
- while x~=oldx do
- forward()
- readsave()
- end
- end
- end
- function backoldz()
- readsave()
- if oldz>0 then
- face0()
- while z~=oldz do
- forward()
- readsave()
- end
- elseif oldz<0 then
- face2()
- while z~=oldz do
- forward()
- readsave()
- end
- end
- end
- function backoldy()
- readsave()
- if oldy>0 then
- while y~=oldy do
- up()
- readsave()
- end
- elseif oldy<0 then
- while y~=oldy do
- down()
- readsave()
- end
- end
- end
- function backolddir()
- readsave()
- while direction~=olddir do
- Left()
- end
- end
- height()
- xto0()
- zto0()
- yto0()
Advertisement
Add Comment
Please, Sign In to add comment