Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Tunnel x 2 - v2.2 --
- ----- Setup -----
- args = {...}
- slot = 1
- dis = 0
- chestPlaced = false
- chestNum = 0
- chest = false
- isResume = false
- fuel = turtle.getFuelLevel()
- turtle.select(slot)
- term.clear()
- term.setCursorPos(1,1)
- function printUsage()
- print("Usage:")
- print("tunnel2 <Length> [StopOnBlockAb]")
- end
- ----- Check if args valid -----
- if #args > 2 then
- printUsage()
- error()
- elseif #args < 1 then
- printUsage()
- error()
- elseif tonumber(args[1]) == nil then
- printUsage()
- print("Length must be a number!")
- error()
- end
- len = tonumber(args[1])
- if fuel < len*2 then
- print("Not enough fuel to go "..len.." blocks!")
- error()
- end
- ----- Functions -----
- function getVers(code)
- local response = http.get(
- "http://pastebin.com/raw.php?i="..code
- )
- if response then
- local sResponse = response.readAll()
- response.close()
- return sResponse
- else
- return false
- end
- end
- function seeCur()
- file = fs.open("tunnel2", "r")
- v = file.readAll()
- file.close()
- return v
- end
- function PrintCentered(sText)
- local w, h = term.getSize()
- local x, y = term.getCursorPos()
- x = math.max(math.floor((w / 2) - (#sText / 2)), 0)
- term.setCursorPos(x, y)
- print(sText)
- end
- function updateScreen()
- sleep(1)
- term.setBackgroundColor(colors.cyan)
- term.clear()
- term.setCursorPos(1, 4)
- PrintCentered("Updating...")
- print("\n\n")
- PrintCentered("[I ]")
- shell.run("pastebin get 2ybU4SQW tunnel3")
- sleep(3)
- term.clear()
- term.setCursorPos(1, 4)
- PrintCentered("Updating...")
- print("\n\n")
- PrintCentered("[I ]")
- sleep(0.5)
- term.setCursorPos(1, 4)
- PrintCentered("Updating...")
- print("\n\n")
- PrintCentered("[III ]")
- sleep(0.5)
- fs.delete("tunnel2")
- term.setCursorPos(1, 4)
- PrintCentered("Updating...")
- print("\n\n")
- PrintCentered("[IIIII ]")
- sleep(0.5)
- fs.move("tunnel3", "tunnel2")
- term.setCursorPos(1, 4)
- PrintCentered("Updating...")
- print("\n\n")
- PrintCentered("[IIIIIII ]")
- sleep(0.5)
- term.setCursorPos(1, 4)
- PrintCentered("Updating...")
- print("\n\n")
- PrintCentered("[IIIIIIIIII]")
- sleep(0.5)
- PrintCentered("Finished!")
- sleep(1)
- term.setBackgroundColor(colors.black)
- term.clear()
- term.setCursorPos(1,1)
- error()
- end
- function turnAround()
- turtle.turnRight()
- turtle.turnRight()
- end
- function BAEnd()
- turnAround()
- for i=1,dis do
- local success = turtle.forward()
- if not success then
- while true do
- success = turtle.forward()
- if success then break end
- end
- end
- end
- turnAround()
- print("Absence of block found!")
- error()
- end
- function mainDig()
- if turtle.detect() then
- turtle.digUp()
- if dis % 12 ~= 0 then
- turtle.digDown()
- end
- turtle.turnLeft()
- turtle.dig()
- turnAround()
- if chest then
- chest = false
- else
- turtle.dig()
- end
- turtle.turnLeft()
- turtle.dig()
- if turtle.detect() then
- while true do
- turtle.dig()
- if not turtle.detect() then
- break
- end
- end
- end
- local success = turtle.forward()
- if not success then
- while true do
- success = turtle.forward()
- if success then break end
- end
- end
- dis = dis + 1
- save(len, dis, chestNum)
- else
- if args[2] then
- BAEnd()
- else
- local success = turtle.forward()
- if not success then
- while true do
- success = turtle.forward()
- if success then break end
- end
- end
- dis = dis + 1
- save(len, dis, chestNum)
- end
- end
- end
- function placeTorch()
- turtle.select(16)
- turtle.digDown()
- turtle.placeDown()
- turtle.select(1)
- end
- function placeChest()
- chestPlaced = true
- chestNum = chestNum + 1
- chest = true
- turtle.turnRight()
- if turtle.detect() then
- turtle.dig()
- end
- turtle.select(15)
- turtle.place()
- for i=1,14 do
- turtle.select(i)
- turtle.drop()
- end
- turtle.select(slot)
- turtle.turnLeft()
- end
- function save(l, d, c)
- local file = fs.open("tunnel2Save", "w")
- file.writeLine(l)
- file.writeLine(d)
- file.writeLine(c)
- file.close()
- end
- function resume()
- isResume = true
- local save1 = fs.open("tunnel2Save", "r")
- len = tonumber(save1.readLine())
- dis = tonumber(save1.readLine())
- chestNum = tonumber(save1.readLine())
- if chestNum > 0 then
- chestPlaced = true
- end
- save1.close()
- term.clear()
- term.setCursorPos(1,1)
- print("Please turn me forward using the arrow keys, then press enter.")
- while true do
- local event, kp = os.pullEvent("key")
- if kp == 203 then
- turtle.turnLeft()
- elseif kp == 205 then
- turtle.turnRight()
- elseif kp == 28 then
- break
- end
- end
- term.clear()
- term.setCursorPos(1,1)
- save(len, dis, chestNum)
- for i=1,len - dis do
- mainDig()
- if dis % 12 == 0 then
- placeTorch()
- end
- item = turtle.getItemCount(14)
- if item > 0 then
- placeChest()
- end
- end
- turnAround()
- for i=1,dis do
- local success = turtle.forward()
- if not success then
- while true do
- success = turtle.forward()
- if success then break end
- end
- end
- end
- turnAround()
- fs.delete("tunnel2Save")
- print("Finished!")
- if chestPlaced then
- print("There are "..chestNum.." chest(s) in the tunnel.")
- end
- error()
- end
- ----- Main Chunk -----
- --Update Check--
- print("Checking for update...")
- cv = seeCur()
- nv = getVers("2ybU4SQW")
- if not nv then
- printError("Failed to connect to pastebin.")
- sleep(2)
- term.clear()
- term.setCursorPos(1,1)
- elseif cv == nv then
- print("No update found.")
- sleep(0.5)
- term.clear()
- term.setCursorPos(1,1)
- else
- print("New update found!")
- updateScreen()
- end
- term.clear()
- term.setCursorPos(1,1)
- --Save Check--
- if fs.exists("tunnel2Save") and isResume == false then
- print("Tunnel x 2 has found a save file. Do you want to continue previous dig?")
- local m = 0
- print("[ Yes ]")
- print(" No ")
- while true do
- local event, kp = os.pullEvent("key")
- oldx, oldy = term.getCursorPos()
- if m < 1 then m = 1 end
- if m > 2 then m = 2 end
- if kp == 200 then m = m - 1 end
- if kp == 208 then m = m + 1 end
- if kp == 28 and m == 1 then
- print("Resuming...")
- resume()
- end
- if kp == 28 and m == 2 then
- print("Deleting previous dig file...")
- fs.delete("tunnel2Save")
- print("Starting...")
- sleep(1)
- term.clear()
- term.setCursorPos(1,1)
- break
- end
- if m == 1 then
- term.setCursorPos(1, oldy - 1)
- term.clearLine()
- term.setCursorPos(1, oldy - 2)
- term.clearLine()
- print("[ Yes ]")
- print(" No ")
- end
- if m == 2 then
- term.setCursorPos(1, oldy - 1)
- term.clearLine()
- term.setCursorPos(1, oldy - 2)
- term.clearLine()
- print(" Yes ")
- print("[ No ]")
- end
- end
- else
- local file = fs.open("tunnel2Save", "w")
- file.close()
- end
- --Gain Resources--
- if not isResume then
- turtle.select(15)
- print("Please drop some chests above me.")
- while true do
- local bool = turtle.suckUp()
- if bool then break end
- end
- turtle.select(16)
- print("Please drop a stack of torches above me.")
- while true do
- local bool = turtle.suckUp()
- if bool then break end
- end
- end
- term.clear()
- term.setCursorPos(1,1)
- sleep(1)
- --Main Dig--
- turtle.select(slot)
- if not isResume then
- for i=1,len do
- mainDig()
- if dis % 12 == 0 then
- placeTorch()
- end
- item = turtle.getItemCount(14)
- if item > 0 then
- placeChest()
- end
- end
- turnAround()
- for i=1,dis do
- local success = turtle.forward()
- if not success then
- while true do
- success = turtle.forward()
- if success then break end
- end
- end
- end
- end
- turnAround()
- fs.delete("tunnel2Save")
- print("Finished!")
- if chestPlaced then
- print("There are "..chestNum.." chest(s) in the tunnel.")
- end
Advertisement
Add Comment
Please, Sign In to add comment