Krenair

Computercraft mining turtle - tunnel command

Apr 29th, 2013
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.84 KB | None | 0 0
  1. compid = 2
  2.  
  3. select = 1
  4. selectc = 5
  5. selectm = 8
  6.  
  7. g_minelength = 70
  8. g_minewidth = 4
  9. g_tundown = "y"
  10. g_tunup = "y"
  11.  
  12. function sprint(Text)
  13.         textutils.slowPrint(Text)
  14. end
  15.  
  16. function DoTop()
  17.         term.clear()
  18.         term.setCursorPos(1,1)
  19.         print("Tunnel system")
  20.         print("---------------------")
  21. end
  22.  
  23. function DoMenu()
  24.         term.setCursorPos(1,3)
  25.         if select == 1 then print("Start tunneling <-") else print("Start tunneling") end
  26.         if select == 2 then print("Tunnel config <-") else print("Tunnel config") end
  27.         if select == 3 then print("Movement/commands <-") else print("Movement/commands") end
  28.         if select == 4 then print("Refuel <-") else print("Refuel") end
  29.         if select == 5 then print("Exit <-") else print("Exit") end
  30.         print(" ")
  31.         print("Current fuel level: "..turtle.getFuelLevel())
  32. end
  33. function RunMenu()
  34.         while true do
  35.                 DoTop()
  36.                 DoMenu()
  37.  
  38.                 local id, key = os.pullEvent("key")
  39.  
  40.                 if key == 200 and select > 1 then
  41.                         select = select - 1
  42.                 elseif key == 208 and select < 5 then
  43.                         select = select + 1
  44.                 end
  45.  
  46.                 if key == 28 then
  47.                         if select == 5 then os.reboot()
  48.                                 elseif select == 1 then g_domine()
  49.                                 elseif select == 2 then RunConfMenu()
  50.                                 elseif select == 3 then RunMoveMenu()
  51.                                 elseif select == 4 then g_refuel()
  52.                         end
  53.                         break
  54.                 end  
  55.         end
  56. end
  57.  
  58. function DoConfMenu()
  59.         term.setCursorPos(1,3)
  60.         if selectc == 1 then print("Tunnel length ("..g_minelength..") <-") else print("Tunnel length ("..g_minelength..")") end
  61.         if selectc == 2 then print("Tunnel width ("..g_minewidth..") <-") else print("Tunnel width ("..g_minewidth..")") end
  62.         if selectc == 3 then print("Dig up("..g_tunup..") <-") else print("Dig up("..g_tunup..")") end
  63.         if selectc == 4 then print("Dig down("..g_tundown..") <-") else print("Dig down("..g_tundown..")") end
  64.         if selectc == 5 then print("Back <-") else print("Back") end
  65. end
  66. function RunConfMenu()
  67.         while true do
  68.                 DoTop()
  69.                 DoConfMenu()
  70.  
  71.                 local id, key = os.pullEvent("key")
  72.  
  73.                 if key == 200 and selectc > 1 then
  74.                         selectc = selectc - 1
  75.                 elseif key == 208 and selectc < 5 then
  76.                         selectc = selectc + 1
  77.                 end
  78.  
  79.                 if key == 28 then
  80.                         if selectc == 1 then g_setminelen()
  81.                                 elseif selectc == 2 then g_setminewidth()
  82.                                 elseif selectc == 3 then g_setminedir()
  83.                                 elseif selectc == 4 then g_setminedird()
  84.                                 elseif selectc == 5 then RunMenu()
  85.                         end
  86.                         break
  87.                 end  
  88.         end
  89. end
  90.  
  91. function DoMoveMenu()
  92.         term.setCursorPos(1,3)
  93.         if selectm == 1 then print("Dig <-") else print("Dig") end
  94.         if selectm == 2 then print("Dig up <-") else print("Dig up") end
  95.         if selectm == 3 then print("Dig down <-") else print("Dig down") end
  96.         if selectm == 4 then print("Turn left <-") else print("Turn left") end
  97.         if selectm == 5 then print("Turn right <-") else print("Turn right") end
  98.         if selectm == 6 then print("Move forward <-") else print("Move forward") end
  99.         if selectm == 7 then print("Move back <-") else print("Move back") end
  100.         if selectm == 8 then print("Back <-") else print("Back") end
  101. end
  102. function RunMoveMenu()
  103.         while true do
  104.                 DoTop()
  105.                 DoMoveMenu()
  106.  
  107.                 local id, key = os.pullEvent("key")
  108.  
  109.                 if key == 200 and selectm > 1 then
  110.                         selectm = selectm - 1
  111.                 elseif key == 208 and selectm < 8 then
  112.                         selectm = selectm + 1
  113.                 end
  114.  
  115.                 if key == 28 then
  116.                                 if selectm == 1 then turtle.dig()
  117.                         elseif selectm == 2 then turtle.digUp()
  118.                         elseif selectm == 3 then turtle.digDown()
  119.                         elseif selectm == 4 then turtle.turnLeft()
  120.                         elseif selectm == 5 then turtle.turnRight()
  121.                         elseif selectm == 6 then turtle.forward()
  122.                         elseif selectm == 7 then turtle.back()
  123.                         elseif selectm == 8 then RunMenu()
  124.                         end
  125.                         break
  126.                 end
  127.                 RunMoveMenu()
  128.         end
  129. end
  130.  
  131. function g_setminelen()
  132.         term.clear()
  133.         print("Please enter length to mine: ")
  134.         newlen = io.read()
  135.         num = tonumber(newlen)
  136.         if num == nil or num == "" then
  137.                 print("Invalid length!")
  138.         else
  139.                 if num < 1 then
  140.                         print("Length too short!")
  141.                 elseif num > 120 then
  142.                         print("Length too long!")
  143.                 else
  144.                         g_minelength = num
  145.                         print("Length set!")
  146.                         sleep(1)
  147.                         RunConfMenu()
  148.                 end
  149.         end
  150. end
  151.  
  152. function g_setminewidth()
  153.         term.clear()
  154.         print("Please enter width to mine: ")
  155.         newlen = io.read()
  156.         num = tonumber(newlen)
  157.         if num == nil or num == "" then
  158.                 print("Invalid length!")
  159.         else
  160.                 if num < 1 then
  161.                         print("Width too short!")
  162.                 elseif num > 60 then
  163.                         print("Width too long!")
  164.                 else
  165.                         g_minewidth = num
  166.                         print("Width set")
  167.                         sleep(1)
  168.                         RunConfMenu()
  169.                 end
  170.         end
  171. end
  172.  
  173.  
  174. function g_setminedir()
  175.         term.clear()
  176.         print("Mine up? [y/n] ")
  177.         newup = io.read()
  178.         if newup == "y" or newup == "Y" then
  179.                 g_tunup = "y"
  180.                 print("Okay, I will mine upwards!")
  181.                 sleep(1)
  182.         elseif newup == "n" or newup == "N" then
  183.                 g_tunup = "n"
  184.                 print("Fine, I wont mine upwards!")
  185.                 sleep(1)
  186.         else
  187.                 print("Invalid selection!?")
  188.                 sleep(1)
  189.                 g_setminedir()
  190.         end
  191.         RunConfMenu()
  192. end
  193.  
  194. function g_setminedird()
  195.         term.clear()
  196.         print("Mine down? [y/n] ")
  197.         newup = io.read()
  198.         if newup == "y" or newup == "Y" then
  199.                 g_tundown = "y"
  200.                 print("Okay, I will mine downwards!")
  201.                 sleep(1)
  202.         elseif newup == "n" or newup == "N" then
  203.                 g_tundown = "n"
  204.                 print("Fine, I wont mine downwards!")
  205.                 sleep(1)
  206.         else
  207.                 print("Invalid selection!?")
  208.                 sleep(1)
  209.                 g_setminedird()
  210.         end
  211.         RunConfMenu()
  212. end
  213.  
  214. function g_refuel()
  215.         term.clear()
  216.         turtle.select(1)
  217.         if turtle.refuel(64) == false then
  218.                 print("Invalid fuel in slot 1!")
  219.                 sleep(3)
  220.         end
  221.         RunMenu()
  222. end
  223.  
  224. function g_dropchest()
  225.         if turtle.getItemCount(15) < 1 then
  226.                 return false
  227.         end
  228.         if g_tundown == "y" then
  229.                 turtle.digDown()
  230.                 turtle.down()
  231.         end
  232.         turtle.digDown()
  233.         turtle.select(15)
  234.         turtle.placeDown()
  235.         sleep(1.5)
  236.         for i = 1, 14, 1 do
  237.                 turtle.select(i)
  238.                 turtle.dropDown()
  239.         end
  240.         turtle.select(15)
  241.         turtle.digDown()
  242.         turtle.select(1)
  243.         if g_tundown == "y" then
  244.                 turtle.up()
  245.         end
  246.         print("Chest placed!")
  247. end
  248.  
  249. function g_domine()
  250.         turtle.select(1)
  251.         term.clear()
  252.         if g_minelength < 1 then
  253.                 print("Please set mine length")
  254.                 sleep(2)
  255.                 RunMenu()
  256.                 return false;
  257.         end
  258.         sprint("Starting mining process...")
  259.         width = g_minewidth - 1
  260.         torch = 1
  261.         length = g_minelength
  262.         while length > 0 do
  263.                 torch = torch + 1
  264.                 turtle.dig()
  265.                 while turtle.forward() ~= true do
  266.                         turtle.dig()
  267.                         if g_tundown == "y" then turtle.digDown() end
  268.                         sleep(0.5)
  269.                 end
  270.                 if g_tunup == "y" then turtle.digUp() end
  271.                 if g_tundown == "y" then turtle.digDown() end
  272.                 if width > 0 then
  273.                         turtle.turnRight()
  274.                         for w = 1, width, 1 do
  275.                                 turtle.dig()
  276.                                 while turtle.forward() ~= true do
  277.                                         turtle.dig()
  278.                                         if g_tundown == "y" then turtle.digDown() end
  279.                                         sleep(0.5)
  280.                                 end
  281.                                 if g_tunup == "y" then turtle.digUp() end
  282.                                 if g_tundown == "y" then turtle.digDown() end
  283.                         end
  284.                         if torch >= 6 then
  285.                                 torch = 1
  286.                                 torchLevel = turtle.getItemCount(16)
  287.                                 if torchLevel > 1 then
  288.                                         turtle.select(16)
  289.                                         turtle.placeDown()
  290.                                         turtle.select(1)
  291.                                 end
  292.                         end
  293.                         turtle.turnLeft()
  294.                         length = length - 1
  295.             torch = torch + 1
  296.                         turtle.dig()
  297.                         while turtle.forward() ~= true do
  298.                                 turtle.dig()
  299.                                 if g_tundown == "y" then turtle.digDown() end
  300.                                 sleep(0.5)
  301.                         end
  302.                         if g_tunup == "y" then turtle.digUp() end
  303.                         if g_tundown == "y" then turtle.digDown() end
  304.                         turtle.turnLeft()
  305.                         for w = 1, width, 1 do
  306.                                 turtle.dig()
  307.                                 while turtle.forward() ~= true do
  308.                                         turtle.dig()
  309.                                         if g_tundown == "y" then turtle.digDown() end
  310.                                         sleep(0.5)
  311.                                 end
  312.                                 if g_tunup == "y" then turtle.digUp() end
  313.                                 if g_tundown == "y" then turtle.digDown() end
  314.                         end
  315.                         turtle.turnRight()
  316.                         length = length - 1
  317.                 end
  318.                 if turtle.getItemCount(13) > 0 then
  319.                         g_dropchest()
  320.                 end
  321.         end
  322.         turtle.turnLeft()
  323.         turtle.turnLeft()
  324.         for i = 1, g_minelength, 1 do
  325.                 while turtle.forward() ~= true do
  326.                         turtle.dig()
  327.                         if g_tundown == "y" then turtle.digDown() end
  328.                         sleep(0.5)
  329.                 end
  330.         end
  331.         turtle.turnLeft()
  332.         turtle.turnLeft()
  333.         sprint("Mining complete!")
  334.         sleep(2)
  335.         RunMenu()
  336. end
  337.  
  338. RunMenu()
Advertisement
Add Comment
Please, Sign In to add comment