JustDoesGames

Turtle

Jan 1st, 2019
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.58 KB | None | 0 0
  1.  
  2. local version = "v1_0_6"
  3. local version_raw = "v1.0.6"
  4. local clr = function() term.clear() end
  5. local setText = function(col) term.setTextColor(colors[col]) end
  6. local setBack = function(col) term.setBackColor(colors[col]) end
  7. local cp = function(x,y) term.setCursorPos(x,y) end
  8. local sx,sy = term.getSize()
  9. local running = true
  10. local selected = 1
  11. local m_0 = {"Turle Programs", "Options (Comming Soon!)", "Lua", "Restart"}
  12. local m_0_status = {true, false, true, true}
  13. local m_1 = {"Normal Tunnel", "Tunnel v2.0", "Tunnel Down", "3x1 Tunnel", "Manual Control", "Back"}
  14. local m_1_status = {true, true, true, true, false, true}
  15. local c_menu = m_0
  16. local c_menu_status = m_0_status
  17. local updat = true
  18.  
  19. function main()
  20.     if fs.exists(version) == false or version == "beta" then
  21.         if version ~= "beta" then
  22.             fs.makeDir(version)
  23.         end
  24.         PN()
  25.     end
  26.     while running do
  27.         if updat == true or updat == nil then
  28.             setText("white")
  29.             drawScreen()
  30.         end
  31.         cp(1,1)
  32.         print("TURTOS "..version_raw.." ")
  33.         for i=1, #c_menu do
  34.             cp(3,i+2)
  35.             if i == selected then
  36.                 setText("white")
  37.                 write("> ")
  38.                 if c_menu_status[selected] == false then
  39.                     setText("gray")
  40.                 else
  41.                     setText("white") -- IMPORTANT
  42.                 end
  43.                 write(c_menu[i])
  44.                 setText("white")
  45.                 print(" <")
  46.             else
  47.                 setText("gray")
  48.                 print("  ", c_menu[i], "  ")
  49.                 setText("white")
  50.             end
  51.         end
  52.         a,i = os.pullEvent("key")
  53.         if i == keys.w or i == keys.up then
  54.             if selected ~= 1 then selected = selected - 1 end
  55.         elseif i == keys.s or i == keys.down then
  56.             if selected ~= #c_menu then selected = selected + 1 end
  57.         elseif i == keys.e or i == keys.enter then
  58.             if selected == #c_menu then
  59.                 if c_menu == m_0 then
  60.                     os.shutdown()
  61.                 else
  62.                     c_menu = m_0
  63.                 end
  64.                 selected = 1
  65.                 c_menu_status = m_0_status
  66.             elseif c_menu == m_0 then
  67.                 if selected == 1 then
  68.                     c_menu = m_1
  69.                     c_menu_status = m_1_status
  70.                     selected = 1
  71.                 elseif selected == 2 then
  72.                     --
  73.                 elseif selected == 3 then
  74.                     clr()
  75.                     cp(1,1)
  76.                     running = false
  77.                 end
  78.             elseif c_menu == m_1 then
  79.                 pre_tunnel(selected)
  80.             end
  81.         end
  82.     end
  83. end
  84.  
  85. function drawScreen()
  86.     clr()
  87.     cp(1,1)
  88.     for i=1, sx do
  89.         write("@") -- IMPORTANT
  90.     end
  91.     cp(1,sy)
  92.     for i=1, sx do
  93.         write("@") -- IMPORTANT
  94.     end
  95.     for i=1, sy-2 do
  96.         cp(1,i+1)
  97.         write("@") -- IMPORTANT
  98.     end
  99.     for i=1, sy-2 do
  100.         cp(sx,i+1)
  101.         write("@") -- IMPORTANT
  102.     end
  103. end
  104.  
  105. function fuelCheck()
  106.     if turtle.getFuelLevel() == 0 then
  107.         turtle.refuel(1)
  108.     end
  109.     if turtle.getFuelLevel() == 0 then
  110.         print("Needs More Fuel! Feed Me!!!")
  111.         repeat
  112.             turtle.refuel(1)
  113.             sleep(.1)
  114.         until turtle.getFuelLevel() ~= 0
  115.         if turtle.getFuelLevel() ~= 0 then
  116.             print("OM NOM NOM. FUAL MAKE ME STRONG AGAIN!")
  117.             print("You feed me "..turtle.getFuelLevel().." Units!")
  118.         end
  119.     end
  120. end
  121.  
  122. function pre_tunnel(select)
  123.     if select == 5 then
  124.         --turtle_manual()
  125.     else
  126.         drawScreen()
  127.         cp(3,3)
  128.         write("Distance: ")
  129.         inp = tonumber(read())
  130.         if type(inp) == "number" then
  131.             if select == 1 then
  132.                 tunnel(inp)
  133.             elseif select == 2 then
  134.                 tunnel_2(inp)
  135.             elseif select == 3 then
  136.                 tunnel_down(inp)
  137.             elseif select == 4 then
  138.                 tunnel_3x1(inp)
  139.             end
  140.         else
  141.             cp(3,4)
  142.             print("Distance was not a number or invalid!")
  143.             sleep(1)
  144.         end
  145.     end
  146. end
  147.  
  148. function tunnel(dis)
  149.     clr()
  150.     cp(1,1)
  151.     print("Tunneling for "..dis.." Block(s) long")
  152.     sleep(.5)
  153.     shell.run("tunnel "..dis)
  154.     sleep(.01)
  155.     for i=1, 2 do turtle.turnLeft() sleep(.01) end
  156.     turtle.up()
  157.     repeat
  158.         turtle.digUp()
  159.         sleep(.2)
  160.     until turtle.detect() == false
  161.     turtle.up()
  162.     sleep(.01)
  163.     shell.run("tunnel "..dis)
  164.     for i=1, 2 do turtle.turnLeft() sleep(.01) end
  165.     for i=1, 2 do turtle.down() sleep(.01) end
  166. end
  167.  
  168. function tunnel_2(dis)
  169.     clr()
  170.     cp(1,1)
  171.     print("Tunneling for "..dis.." Block(s) long")
  172.     sleep(.5)
  173.     for i=1, dis do
  174.         turtle.turnRight()
  175.         for i=1, 4 do
  176.             if i ~= 4 then
  177.                 repeat
  178.                     turtle.digUp()
  179.                     sleep(.1)
  180.                 until turtle.detectUp() == false
  181.             end
  182.             repeat
  183.                 turtle.dig()
  184.                 sleep(.1)
  185.             until turtle.detect() == false
  186.             fuelCheck()
  187.             if 1 ~= 4 then
  188.                 turtle.up()
  189.             end
  190.         end
  191.         for i=1, 2 do turtle.turnLeft() sleep(.01) end
  192.         for i=1, 4 do
  193.             repeat
  194.                 turtle.dig()
  195.                 sleep(.1)
  196.             until turtle.detect() == false
  197.             fuelCheck()
  198.             if i ~= 4 then
  199.                 turtle.down()
  200.             end
  201.         end
  202.         turtle.turnRight()
  203.         if i ~= dis then
  204.             repeat
  205.                 turtle.dig()
  206.                 sleep(.2)
  207.             until turtle.detect() == false
  208.             turtle.forward()
  209.         end
  210.     end
  211.     for i=1, dis-1 do
  212.         turtle.back()
  213.     end
  214.     for i=1, 3 do turtle.down() sleep(.01) end
  215. end
  216.  
  217. function tunnel_down(dis)
  218.     clr()
  219.     cp(1,1)
  220.     print("Tunneling for "..dis.." Block(s) long")
  221.     sleep(.5)
  222.     for i=1, dis do
  223.         turtle.digDown()
  224.         fuelCheck()
  225.         if dis ~= 1 then
  226.             turtle.down()
  227.         end
  228.     end
  229.     for i=1, dis do
  230.         fuelCheck()
  231.         if dis ~= 1 then
  232.             turtle.up()
  233.         end
  234.     end
  235. end
  236.  
  237. function tunnel_3x1(dis)
  238.     clr()
  239.     cp(1,1)
  240.     print("Tunneling for "..dis.." Block(s) long")
  241.     sleep(.5)
  242.     for i=1, dis do
  243.         turtle.turnRight()
  244.         repeat
  245.             turtle.dig()
  246.             sleep(.1)
  247.         until turtle.detect() == false
  248.         for i=1, 2 do turtle.turnLeft() sleep(.1) end
  249.         repeat
  250.             turtle.dig()
  251.             sleep(.1)
  252.         until turtle.detect() == false
  253.         turtle.turnRight()
  254.         repeat
  255.             turtle.dig()
  256.             sleep(.2)
  257.         until turtle.detect() == false
  258.         fuelCheck()
  259.         if i ~= dis then
  260.             turtle.forward()
  261.         end
  262.     end
  263.     for i=1, dis-1 do
  264.         fuelCheck()
  265.         turtle.back()
  266.     end
  267. end
  268.  
  269. function turtle_manual()
  270.     local runin = true
  271.     clr()
  272.     cp(1,1)
  273.     local direct = "forward"
  274.     print("'wasd' or arrow keys will work")
  275.     print("'e' or enter to break or destroy")
  276.     print("'q' to exit")
  277.     print("")
  278.     print("")
  279.     print("q      w       e       .")
  280.     print("     a s d           . . .")
  281.     while runin do
  282.         local a,i,z = os.pullEvent("key")
  283.         if i == keys.w or i == keys.up and z == true then
  284.             if direct ~= "forward" then
  285.                 if direct == "right" then
  286.                     turtle.turnLeft()
  287.                     direct = "forward"
  288.                 else
  289.                     turtle.turnRight()
  290.                     if direct == "back" then direct = "right" else direct = "forward" end
  291.                 end
  292.             else
  293.                 turtle.forward()
  294.             end
  295.         elseif i == keys.s or i == keys.down and z == true then
  296.             if direct ~= "back" then
  297.                 if direct == "right" then
  298.                     turtle.turnLeft()
  299.                     direct = "back"
  300.                 else
  301.                     turtle.turnRight()
  302.                     if direct == "back" then direct = "right" else direct = "forward" end
  303.                 end
  304.             else
  305.                 turtle.forward()
  306.             end
  307.         elseif i == keys.d or i == keys.right and z == true then
  308.             if direct ~= "right" then
  309.                 if direct == "forward" then
  310.                     turtle.turnRight()
  311.                     direct = "right"
  312.                 else
  313.                     turtle.turnLeft()
  314.                     if direct == "back" then direct = "left" else direct = "right" end
  315.                 end
  316.             else
  317.                 turtle.forward()
  318.             end
  319.         elseif i == keys.a or i == keys.left and z == true then
  320.             if direct ~= "left" then
  321.                 if direct == "forward" then
  322.                     turtle.turnLeft()
  323.                     direct = "left"
  324.                 else
  325.                     turtle.turnRight()
  326.                     if direct == "back" then direct = "left" else direct = "right" end
  327.                 end
  328.             else
  329.                 turtle.forward()
  330.             end
  331.         elseif i == keys.e or i == keys.enter and z == true then
  332.             if turtle.detect() == true then
  333.                 turtle.dig()
  334.             end
  335.         elseif i == keys.q then
  336.             runin = false
  337.         end
  338.     end
  339. end
  340.  
  341. function PN() -- PATCH NOTES
  342.     clr()
  343.     cp(1,1)
  344.     print("===================")
  345.     -- PATCH NOTES HERE --
  346.     print("* Fixed 3x1 tunneling error")
  347.     print("* Fixed fuel displaying constantly")
  348.     print("* Tweaked a few settings")
  349.     print("===================")
  350.     print("")
  351.     sleep(1)
  352.     print("Press any key to continue")
  353.     os.pullEvent()
  354.     sleep(.3)
  355. end
  356.  
  357. main()
Add Comment
Please, Sign In to add comment