Advertisement
Dragoon209

turtleMove

Dec 18th, 2023 (edited)
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.14 KB | Software | 0 0
  1. rednet.open("left")
  2. rednet.broadcast('computer: ' .. os.getComputerLabel(), 'debug')
  3.  
  4.  
  5. rednet.broadcast('Program Start', 'debug')
  6.  
  7. function fr()
  8.     local result = turtle.forward()
  9.     rednet.broadcast("Moving Forward", "debug")
  10.     rednet.broadcast(result, "debug")
  11.     return(result)
  12. end
  13.  
  14. function tl()
  15.     local result = turtle.turnLeft()
  16.     rednet.broadcast("Turning Left", "debug")
  17.     rednet.broadcast(result, "debug")
  18.     return(result)
  19. end
  20.  
  21. function tr()
  22.     local result = turtle.turnRight()
  23.     rednet.broadcast("Turning Right", "debug")
  24.     rednet.broadcast(result, "debug")
  25.     return(result)
  26. end
  27.  
  28. function ta()
  29.     local result1 = turtle.turnRight()
  30.     local result2 = turtle.turnRight()
  31.     local result = false
  32.     rednet.broadcast("Turn Around Bright Eyes", "debug")
  33.     if (result1 and result2)
  34.         then
  35.             rednet.broadcast("true", "debug")
  36.             result = true
  37.         end
  38.     return(result)
  39. end
  40.  
  41. function bk()
  42.     local result = turtle.back()
  43.     rednet.broadcast("Moving Back", "debug")
  44.     rednet.broadcast(result, "debug")
  45.     return(result)
  46. end
  47.  
  48. function up()
  49.     local result = turtle.up()
  50.     rednet.broadcast("Moving On Up!", "debug")
  51.     rednet.broadcast(result, "debug")
  52.     return(result)
  53. end
  54.  
  55. function dn()
  56.     local result = turtle.down()
  57.     rednet.broadcast("Getting Down", "debug")
  58.     rednet.broadcast(result, "debug")
  59.     return(result)
  60. end
  61.  
  62. function checkLeft()
  63.     tl()
  64.     local result = turtle.detect()
  65.     return result
  66. end
  67.  
  68. function replace(slot)
  69.     local result1 = turtle.dig()
  70.     local result2 = turtle.select(slot)
  71.     local result3 = turtle.place()
  72.     rednet.broadcast("Replacing...", "debug")
  73. --    rednet.send(2, "dig:" .. result1 .. " select:" .. result2 .. " place:" .. result3)
  74. end
  75.  
  76. function nextDigit()
  77.     local result1 = turtle.turnRight()
  78.     local result2 = turtle.forward()
  79.     local result3 = turtle.turnLeft()
  80.     rednet.broadcast("Next Digit", "debug")
  81. --    rednet.send(2, "right:" .. result1 .. " fwd:" .. result2 .. " left:" .. result3)
  82. end
  83.  
  84. function goHome()
  85.     rednet.broadcast("Mama, I'm Coming Home", "debug")
  86.     local floor = true
  87.     while floor do floor = dn() end
  88.  
  89.     local count = 0
  90.  
  91.     while count <= 30 do
  92.         local has_block, data = turtle.inspect()
  93.         if data.name == "minecraft:diorite"
  94.         then
  95.             rednet.broadcast("found home", "debug")
  96.             return true
  97.         else
  98.             local success = fr()
  99.             if success == false then
  100.                 local result = checkLeft()
  101.                 if result == false
  102.                     then
  103.                     fr()
  104.                 else
  105.                     tr()
  106.                 end
  107.  
  108.             end
  109.         end
  110.  
  111.         count = count+1
  112.     end
  113.  
  114.         rednet.broadcast("No path found. Halting.", "debug")
  115.         return false
  116. end
  117.  
  118. function checkHome()
  119.     rednet.broadcast("Checking for home...", "debug")
  120.     ta()
  121.     local has_block, data = turtle.inspect()
  122.    
  123.     if data.name == "minecraft:diorite"
  124.     then
  125.         rednet.broadcast("Home alone!", "debug")
  126.         return true
  127.     else
  128.         rednet.broadcast("oh no! No home!", "debug")
  129.         return false
  130.     end
  131.  
  132.     ta()
  133. end
  134.  
  135. function updateScores()
  136.     rednet.broadcast("Updating scores", "debug")
  137.     local result1 = checkHome()
  138.  
  139.     if result1 == false
  140.     then
  141.         local result2 = goHome()
  142.         if result2 == false
  143.         then
  144.             rednet.broadcast("Update score failed.", "debug")
  145.             return false
  146.         end
  147.     end
  148.  
  149.  
  150.     local scores = {}
  151.     scores[1] = math.random(0,9999)
  152.     scores[2] = math.random(0,9999)
  153.     rednet.broadcast(scores[1], "debug")
  154.     rednet.broadcast(scores[2], "debug")    
  155.     local length = {}
  156.     length[1] = string.len(scores[1])
  157.     length[2] = string.len(scores[2])
  158.     rednet.broadcast("length1:" .. length[1], "debug")
  159.     rednet.broadcast("length2:" .. length[2], "debug")
  160.     local digits = {}
  161.     for i=1, 8 do
  162.         digits[i] = 1
  163.     end
  164.    
  165.     digits[4] = string.sub(scores[1],string.len(scores[1])) + 3
  166.     if string.len(scores[1]) > 1 then digits[3] = string.sub(scores[1], string.len(scores[1])-1, string.len(scores[1])-1) + 3 end
  167.     if string.len(scores[1]) > 2 then digits[2] = string.sub(scores[1], string.len(scores[1])-2, string.len(scores[1])-2) + 3 end
  168.     if string.len(scores[1]) > 3 then digits[1] = string.sub(scores[1], string.len(scores[1])-3, string.len(scores[1])-3) + 3 end
  169.    
  170.     digits[8] = string.sub(scores[2],string.len(scores[2])) + 3
  171.     if string.len(scores[2]) > 1 then digits[7] = string.sub(scores[2], string.len(scores[2])-1, string.len(scores[2])-1) + 3 end
  172.     if string.len(scores[2]) > 2 then digits[6] = string.sub(scores[2], string.len(scores[2])-2, string.len(scores[2])-2) + 3 end
  173.     if string.len(scores[2]) > 3 then digits[5] = string.sub(scores[2], string.len(scores[2])-3, string.len(scores[2])-3) + 3 end
  174.    
  175.     tr()
  176.     fr()
  177.     ta()
  178.     up()
  179.     up()
  180.     replace(digits[1])
  181.     nextDigit()
  182.     replace(digits[2])
  183.     nextDigit()
  184.     replace(digits[3])
  185.     nextDigit()
  186.     replace(digits[4])
  187.     tr()
  188.     replace(digits[5])
  189.     nextDigit()
  190.     replace(digits[6])
  191.     nextDigit()
  192.     replace(digits[7])
  193.     nextDigit()
  194.     replace(digits[8])
  195.     dn()
  196.     dn()
  197.     tl()
  198.     fr()
  199.     fr()
  200.     fr()
  201.     fr()
  202.     tl()
  203.     fr()
  204.     fr()
  205.     fr()
  206.     checkHome()
  207.     ta()    
  208. end
  209.  
  210. function waitMsg()
  211.     local ID, msg = rednet.receive()
  212.     print(msg)
  213.     rednet.broadcast("received: " .. msg, "debug")
  214.     if msg=="fr" then fr() end
  215.     if msg=="tl" then tl() end
  216.     if msg=="tr" then tr() end
  217.     if msg=="ta" then ta() end
  218.     if msg=="bk" then bk() end
  219.     if msg=="goHome" then goHome() end
  220.     if msg=="checkHome"
  221.         then
  222.             if checkHome()
  223.                 then
  224.                     print("already Home")
  225.                     rednet.broadcast("alread home", "debug")
  226.                 end
  227.         end
  228.     if msg=="replace" then replace() end
  229.     if msg=="updateScores" then updateScores() end
  230.  
  231.     rednet.broadcast("success", "debug")
  232. end
  233.  
  234. while true do waitMsg() end
Tags: lua
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement