compid = 2
select = 1
selectc = 5
selectm = 8
g_minelength = 70
g_minewidth = 4
g_tundown = "y"
g_tunup = "y"
function sprint(Text)
textutils.slowPrint(Text)
end
function DoTop()
term.clear()
term.setCursorPos(1,1)
print("Tunnel system")
print("---------------------")
end
function DoMenu()
term.setCursorPos(1,3)
if select == 1 then print("Start tunneling <-") else print("Start tunneling") end
if select == 2 then print("Tunnel config <-") else print("Tunnel config") end
if select == 3 then print("Movement/commands <-") else print("Movement/commands") end
if select == 4 then print("Refuel <-") else print("Refuel") end
if select == 5 then print("Exit <-") else print("Exit") end
print(" ")
print("Current fuel level: "..turtle.getFuelLevel())
end
function RunMenu()
while true do
DoTop()
DoMenu()
local id, key = os.pullEvent("key")
if key == 200 and select > 1 then
select = select - 1
elseif key == 208 and select < 5 then
select = select + 1
end
if key == 28 then
if select == 5 then os.reboot()
elseif select == 1 then g_domine()
elseif select == 2 then RunConfMenu()
elseif select == 3 then RunMoveMenu()
elseif select == 4 then g_refuel()
end
break
end
end
end
function DoConfMenu()
term.setCursorPos(1,3)
if selectc == 1 then print("Tunnel length ("..g_minelength..") <-") else print("Tunnel length ("..g_minelength..")") end
if selectc == 2 then print("Tunnel width ("..g_minewidth..") <-") else print("Tunnel width ("..g_minewidth..")") end
if selectc == 3 then print("Dig up("..g_tunup..") <-") else print("Dig up("..g_tunup..")") end
if selectc == 4 then print("Dig down("..g_tundown..") <-") else print("Dig down("..g_tundown..")") end
if selectc == 5 then print("Back <-") else print("Back") end
end
function RunConfMenu()
while true do
DoTop()
DoConfMenu()
local id, key = os.pullEvent("key")
if key == 200 and selectc > 1 then
selectc = selectc - 1
elseif key == 208 and selectc < 5 then
selectc = selectc + 1
end
if key == 28 then
if selectc == 1 then g_setminelen()
elseif selectc == 2 then g_setminewidth()
elseif selectc == 3 then g_setminedir()
elseif selectc == 4 then g_setminedird()
elseif selectc == 5 then RunMenu()
end
break
end
end
end
function DoMoveMenu()
term.setCursorPos(1,3)
if selectm == 1 then print("Dig <-") else print("Dig") end
if selectm == 2 then print("Dig up <-") else print("Dig up") end
if selectm == 3 then print("Dig down <-") else print("Dig down") end
if selectm == 4 then print("Turn left <-") else print("Turn left") end
if selectm == 5 then print("Turn right <-") else print("Turn right") end
if selectm == 6 then print("Move forward <-") else print("Move forward") end
if selectm == 7 then print("Move back <-") else print("Move back") end
if selectm == 8 then print("Back <-") else print("Back") end
end
function RunMoveMenu()
while true do
DoTop()
DoMoveMenu()
local id, key = os.pullEvent("key")
if key == 200 and selectm > 1 then
selectm = selectm - 1
elseif key == 208 and selectm < 8 then
selectm = selectm + 1
end
if key == 28 then
if selectm == 1 then turtle.dig()
elseif selectm == 2 then turtle.digUp()
elseif selectm == 3 then turtle.digDown()
elseif selectm == 4 then turtle.turnLeft()
elseif selectm == 5 then turtle.turnRight()
elseif selectm == 6 then turtle.forward()
elseif selectm == 7 then turtle.back()
elseif selectm == 8 then RunMenu()
end
break
end
RunMoveMenu()
end
end
function g_setminelen()
term.clear()
print("Please enter length to mine: ")
newlen = io.read()
num = tonumber(newlen)
if num == nil or num == "" then
print("Invalid length!")
else
if num < 1 then
print("Length too short!")
elseif num > 120 then
print("Length too long!")
else
g_minelength = num
print("Length set!")
sleep(1)
RunConfMenu()
end
end
end
function g_setminewidth()
term.clear()
print("Please enter width to mine: ")
newlen = io.read()
num = tonumber(newlen)
if num == nil or num == "" then
print("Invalid length!")
else
if num < 1 then
print("Width too short!")
elseif num > 60 then
print("Width too long!")
else
g_minewidth = num
print("Width set")
sleep(1)
RunConfMenu()
end
end
end
function g_setminedir()
term.clear()
print("Mine up? [y/n] ")
newup = io.read()
if newup == "y" or newup == "Y" then
g_tunup = "y"
print("Okay, I will mine upwards!")
sleep(1)
elseif newup == "n" or newup == "N" then
g_tunup = "n"
print("Fine, I wont mine upwards!")
sleep(1)
else
print("Invalid selection!?")
sleep(1)
g_setminedir()
end
RunConfMenu()
end
function g_setminedird()
term.clear()
print("Mine down? [y/n] ")
newup = io.read()
if newup == "y" or newup == "Y" then
g_tundown = "y"
print("Okay, I will mine downwards!")
sleep(1)
elseif newup == "n" or newup == "N" then
g_tundown = "n"
print("Fine, I wont mine downwards!")
sleep(1)
else
print("Invalid selection!?")
sleep(1)
g_setminedird()
end
RunConfMenu()
end
function g_refuel()
term.clear()
turtle.select(1)
if turtle.refuel(64) == false then
print("Invalid fuel in slot 1!")
sleep(3)
end
RunMenu()
end
function g_dropchest()
if turtle.getItemCount(15) < 1 then
return false
end
if g_tundown == "y" then
turtle.digDown()
turtle.down()
end
turtle.digDown()
turtle.select(15)
turtle.placeDown()
sleep(1.5)
for i = 1, 14, 1 do
turtle.select(i)
turtle.dropDown()
end
turtle.select(15)
turtle.digDown()
turtle.select(1)
if g_tundown == "y" then
turtle.up()
end
print("Chest placed!")
end
function g_domine()
turtle.select(1)
term.clear()
if g_minelength < 1 then
print("Please set mine length")
sleep(2)
RunMenu()
return false;
end
sprint("Starting mining process...")
width = g_minewidth - 1
torch = 1
length = g_minelength
while length > 0 do
torch = torch + 1
turtle.dig()
while turtle.forward() ~= true do
turtle.dig()
if g_tundown == "y" then turtle.digDown() end
sleep(0.5)
end
if g_tunup == "y" then turtle.digUp() end
if g_tundown == "y" then turtle.digDown() end
if width > 0 then
turtle.turnRight()
for w = 1, width, 1 do
turtle.dig()
while turtle.forward() ~= true do
turtle.dig()
if g_tundown == "y" then turtle.digDown() end
sleep(0.5)
end
if g_tunup == "y" then turtle.digUp() end
if g_tundown == "y" then turtle.digDown() end
end
if torch >= 6 then
torch = 1
torchLevel = turtle.getItemCount(16)
if torchLevel > 1 then
turtle.select(16)
turtle.placeDown()
turtle.select(1)
end
end
turtle.turnLeft()
length = length - 1
torch = torch + 1
turtle.dig()
while turtle.forward() ~= true do
turtle.dig()
if g_tundown == "y" then turtle.digDown() end
sleep(0.5)
end
if g_tunup == "y" then turtle.digUp() end
if g_tundown == "y" then turtle.digDown() end
turtle.turnLeft()
for w = 1, width, 1 do
turtle.dig()
while turtle.forward() ~= true do
turtle.dig()
if g_tundown == "y" then turtle.digDown() end
sleep(0.5)
end
if g_tunup == "y" then turtle.digUp() end
if g_tundown == "y" then turtle.digDown() end
end
turtle.turnRight()
length = length - 1
end
if turtle.getItemCount(13) > 0 then
g_dropchest()
end
end
turtle.turnLeft()
turtle.turnLeft()
for i = 1, g_minelength, 1 do
while turtle.forward() ~= true do
turtle.dig()
if g_tundown == "y" then turtle.digDown() end
sleep(0.5)
end
end
turtle.turnLeft()
turtle.turnLeft()
sprint("Mining complete!")
sleep(2)
RunMenu()
end
RunMenu()