Advertisement
Marlingaming

Turtle Base OS

Sep 10th, 2021 (edited)
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. --this program manages base turtles, and allows the user to quickly set a specialization for the turtle
  2. Turtle_Mode = "idle"
  3. Turtle_Target = {nil,nil,nil}
  4. Turtle_Action = nil
  5. ControlComputerID = nil
  6. Turtle_Role = "Basic"
  7. Turtle_RestSpot = {nil,nil,nil}
  8. Turtle_CommandProtocol = -1
  9. Turtle_WorkArea = {nil,nil,nil,nil}
  10. local TurtleX = nil
  11. local TurtleY = nil
  12. local TurtleZ = nil
  13. local Turtle_Heading = 1 --1= North, 2= East, 3= South, 4= West
  14. local
  15.  
  16. start()
  17.  
  18. function start()
  19. ConfigManager("Boot")
  20. if fuel < 20 then
  21. TurtleAction = "Refuel"
  22. Turtle_Target = Turtle_RestSpot
  23. TaskManager()
  24. else
  25. Boot()
  26. end
  27. end
  28.  
  29. function Boot()
  30. if Turtle_Role == "Basic" then
  31. DirectiveReceiver()
  32. else
  33. if fs.exists("AdvControl") == false then
  34. SetupRole()
  35. else
  36. shell.run("AdvControl")
  37. end
  38. end
  39. end
  40.  
  41. function DirectiveReceiver()
  42.  
  43. end
  44.  
  45. function TaskManager()
  46. local x, y, z = gps.locate()
  47. TurtleX = x
  48. TurtleY = y
  49. TurtleZ = z
  50. while true do
  51. if TurtleX == Turtle_Target[1] and TurtleY == Turtle_Target[2] and TurtleZ == Turtle_Target[3] then
  52. break
  53. else
  54. if TurtleX > Turtle_Target[1] then
  55. Turn(4)
  56. turtle.forward()
  57. elseif TurtleX < Turtle_Target[1] then
  58. Turn(2)
  59. turtle.forward()
  60. end
  61. if TurtleY > Turtle_Target[2] then
  62. turtle.down()
  63. elseif TurtleY < Turtle_Target[2] then
  64. turtle.up()
  65. end
  66. if TurtleZ > Turtle_Target[3] then
  67. Turn(3)
  68. turtle.forward()
  69. elseif TurtleZ < Turtle_Target[3] then
  70. Turn(1)
  71. turtle.forward()
  72. end
  73. end
  74. end
  75. if Turtle_Action =="Refuel" then
  76. FindChest("Coal")
  77. Turtle_Action = nil
  78. Turtle_Mode = "idle"
  79. Turtle_Target = {nil,nil,nil}
  80. elseif Turtle_Action == "Move" then
  81. Turtle_Action = nil
  82. Turtle_Mode = "idle"
  83. Turtle_Target = {nil,nil,nil}
  84. elseif Turtle_Action == "Scan" then
  85.  
  86. end
  87. DirectiveReceiver()
  88. end
  89.  
  90. function FindChest(Item)
  91. while true do
  92. if turtle.detect() == chest then
  93. turtle.suck(20)
  94. break
  95. else
  96. turtle.turnLeft()
  97. Turtle_Heading = Turtle_Heading + 1
  98. if Turtle_Heading > 4 then
  99. Turtle_Heading = 1
  100. end
  101. end
  102. end
  103. end
  104.  
  105. function Turn(Direction)
  106. while true do
  107. if Turtle_Heading > Direction then
  108. turtle.turnLeft()
  109. elseif Turtle_Heading < Direction then
  110. turtle.turnRight()
  111. else
  112. break
  113. end
  114. end
  115. end
  116.  
  117. function ConfigManager(Action)
  118. local file = nil
  119. if Action == "Boot" then
  120. file = fs.open("TurtleConfig","r")
  121. ControlComputerID = readLine(1)
  122. Turtle_Role = readLine(2)
  123. Turtle_RestSpot = readLine(3)
  124. Turtle_CommandProtocol = readLine(4)
  125. Turtle_WorkArea = readLine(5)
  126. elseif Action == "Save then
  127. file = fs.open("TurtleConfig","w")
  128. elseif Action == "New" then
  129. Setup()
  130. file = fs.open("TurtleConfig","w")
  131. file.writeLine(ControlComputerID)
  132. file.writeLine(Turtle_Role)
  133. file.writeLine(Turtle_RestSpot)
  134. file.writeLine(Turtle_CommandProtocol)
  135. file.writeLine(Turtle_WorkArea)
  136. end
  137. file.close
  138. end
  139.  
  140. function Setup()
  141. local x, y, z = gps.locate()
  142. Turtle_RestSpot = {x,y,z}
  143. Turtle_WorkArea = "n"
  144. rednet.broadcast("TurtleSetup",2000)
  145. repeat
  146. local id, message, protocol = rednet.receive()
  147. until message == "Ap_Turtle"
  148. ControlComputerID = id
  149. Turtle_CommandProtocol = protocol
  150. rednet.send(ControlComputerID,"ready",TurtleCommandProtocol)
  151. local message = rednet.receive()
  152. Turtle_Role = message
  153. end
  154.  
  155. function SetupRole()
  156. local file = fs.open("AdvControl","r")
  157. file.Close
  158. shell.run("pastebin","run","wtgkv33A")
  159. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement