Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Only for test purposes right now.
- w,h = term.getSize()
- function printCenter(string,ypos) -- Prints text on center of the screen.
- if ypos == nil then
- x,y = term.getCursorPos()
- term.setCursorPos(w/2 - #string/2, y+1)
- term.write(string)
- else
- term.setCursorPos(w/2 - #string/2, ypos)
- term.write(string)
- end
- end
- function decoration() -- Decoration on main menu.
- for i=1,h do
- term.setCursorPos(1,i)
- term.write(":")
- end
- term.setCursorPos(2,1)
- term.write(string.rep("-",w-1))
- term.setCursorPos(2,h)
- term.write(string.rep("-",w-1))
- for i=1,h do
- term.setCursorPos(w,i)
- term.write(":")
- end
- end
- function fuel() -- Displaying fuel level on main menu.
- tText = "Fuel Level: "
- tFuel = tostring(turtle.getFuelLevel())
- term.setCursorPos(w - #tFuel - #tText - 2,h - 1)
- term.write(tText)
- term.write(tFuel)
- end
- function mainMenu() -- Main menu.
- term.clear()
- decoration()
- fuel()
- printCenter("Miner V0.2",2)
- printCenter("[Enter] - Start to mine.",h/2)
- printCenter("[E] - Exit",h/2 + 2)
- while true do
- event, p1 = os.pullEvent()
- if event == "key" and p1 == keys.enter then
- running = 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- os.reboot()
- elseif event == "key" and p1 == keys.e then
- term.clear()
- term.setCursorPos(1,1)
- error()
- end
- end
- end
- function checkPos() -- Loads all cords(if they exist).
- if not fs.exists("mine/cords") then
- local file = fs.open("mine/cords","a")
- file.close()
- end
- local file = fs.open("mine/cords","r")
- line = file.readLine()
- if line == nil then line = 0 end
- turtleX = tonumber(line)
- line = file.readLine()
- if line == nil then line = 0 end
- turtleY = tonumber(line)
- line = file.readLine()
- if line == nil then line = 0 end
- running = tonumber(line)
- line = file.readLine()
- if line == nil then line = 0 end
- times = tonumber(line)
- line = file.readLine()
- if line == nil then line = 1 end
- tForw = tonumber(line)
- line = file.readLine()
- if line == nil then line = "front" end
- tSide = line
- line = file.readLine()
- if line == nil then line = 0 end
- dig = tonumber(line)
- file.close()
- end
- function savePos(x,y,running,times,tForw,tSide,dig) -- Saves all cords.
- local file = fs.open("mine/cords","w")
- file.write(x)
- file.write("\n")
- file.write(y)
- file.write("\n")
- file.write(running)
- file.write("\n")
- file.write(times)
- file.write("\n")
- file.write(tForw)
- file.write("\n")
- file.write(tSide)
- file.write("\n")
- file.write(dig)
- file.close()
- end
- function tForward() -- Moves forward.
- for i=1,tForw do
- turtleX = turtleX + 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- if not turtle.forward() then
- turtle.dig()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.forward()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- end
- end
- tForw = tForw + 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- end
- function tDown() -- Digs down.
- dig = 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- bottom = false
- repeat
- turtle.digDown()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- if not turtle.down() then
- dig = 0
- turtleY = turtleY - 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- bottom = true
- end
- turtleY = turtleY + 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- -- Checking for sides
- if tSide == "front" then
- tSide = "left"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnLeft()
- turtle.dig()
- tSide = "front"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnRight()
- tSide = "right"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnRight()
- turtle.dig()
- tSide = "front"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnLeft()
- elseif tSide == "left" then
- tSide = "front"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnRight()
- elseif tSide == "right" then
- tSide = "front"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnLeft()
- end
- until bottom == true
- end
- function tUp() -- Get's back up to surface.
- if turtleY <= 0 then
- return
- else
- repeat
- turtleY = turtleY - 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- if not turtle.up() then
- turtle.digUp()
- turtle.up()
- end
- until turtleY == 0
- end
- end
- function checkSide() -- Checks if turtle is facing front.
- if tSide == "front" then
- return
- elseif tSide == "left" then
- turtle.dig()
- tSide = "front"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnRight()
- elseif tSide == "right" then
- turtle.dig()
- tSide = "front"
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.turnLeft()
- end
- end
- function tBack() -- Returns up to surface.
- if turtleX <= 0 then
- return
- else
- repeat
- turtleX = turtleX - 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- turtle.back()
- until turtleX == 0
- end
- end
- function tDrop() -- Drops materials inside chest.
- for i=1,16 do
- turtle.select(i)
- turtle.dropDown()
- end
- end
- fs.makeDir("mine")
- checkPos()
- checkSide()
- sleep(1)
- if dig == 1 then -- Checks if turtle finished it's tDown function before chunks unloaded.
- checkSide()
- tDown()
- end
- if times ~= 10 then -- Turtle should loop this 10 times when first started.
- if running == 1 then
- repeat
- tUp()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tBack()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tDrop()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tForward()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- times = times + 1
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tDown()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tUp()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tBack()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- tDrop()
- savePos(turtleX,turtleY,running,times,tForw,tSide,dig)
- until times >= 10
- fs.delete("mine")
- else
- term.clear()
- mainMenu()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment