Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. local drone = component.proxy(component.list("drone")())
  2.  
  3. local FARM_DIRECTION_NS = 0
  4. local FARM_DIRECTION_EW = -1
  5. local FARM_WIDTH = 8
  6. local FARM_HEIGHT = 8
  7.  
  8. local function sleep(timeout)
  9. checkArg(1, timeout, "number", "nil")
  10. local deadline = computer.uptime() + (timeout or 0)
  11. repeat
  12. computer.pullSignal(deadline - computer.uptime())
  13. until computer.uptime() >= deadline
  14. end
  15.  
  16. local function moveLeft(a)
  17. sleep(0.5)
  18. if FARM_DIRECTION_EW ~= 0 then
  19. move(0, -a, 0)
  20. else
  21. move(-a, 0, 0)
  22. end
  23. sleep(0.5)
  24. end
  25.  
  26. local function moveRight(a)
  27. sleep(0.5)
  28. if FARM_DIRECTION_EW ~= 0 then
  29. move(0, a, 0)
  30. else
  31. move(a, 0, 0)
  32. end
  33. sleep(0.5)
  34. end
  35.  
  36. local function moveForward(a)
  37. sleep(0.5)
  38. move(a * FARM_DIRECTION_EW, a * FARM_DIRECTION_NS, 0)
  39. sleep(0.5)
  40. end
  41.  
  42. local function moveBackward(a)
  43. sleep(0.5)
  44. move(-a * FARM_DIRECTION_EW, -a * FARM_DIRECTION_NS, 0)
  45. sleep(0.5)
  46. end
  47.  
  48. local function checkE()
  49. local en = computer.energy()
  50. return en
  51. end
  52.  
  53. local function drop()
  54. drone.drop(2)
  55. end
  56.  
  57. local function dropAll()
  58. for i=4,2,-1
  59. do
  60. drone.select(i)
  61. drop()
  62. end
  63. drone.select(1)
  64. end
  65.  
  66. local function move(x,y,z)
  67. drone.move(x,y,z)
  68. travelx = travelx + x
  69. travely = travely + y
  70. travelz = travelz + z
  71. end
  72.  
  73. local function swing()
  74. for i=5,0,-1 do
  75. drone.swing(i)
  76. end
  77. sleep(0.2)
  78. end
  79.  
  80. local function swingHor()
  81. for i=1,5,1 do
  82. drone.swing(i)
  83. end
  84. sleep(0.2)
  85. end
  86.  
  87. local function suck(x)
  88. drone.suck(x)
  89. end
  90.  
  91. local function suckAll()
  92. for i=0,5,1 do
  93. suck(i)
  94. end
  95. end
  96.  
  97. local function placeD()
  98. drone.place(1)
  99. end
  100.  
  101. local function plant()
  102. drone.setStatusText("PLANTING")
  103. drone.select(1)
  104. move(-8,1,0)
  105. sleep(2)
  106. placeD()
  107.  
  108. move(-1,0,0)
  109. sleep(0.3)
  110. placeD()
  111.  
  112. move(0,0,-1)
  113. sleep(0.3)
  114. placeD()
  115.  
  116. move(1,0,0)
  117. sleep(0.3)
  118. placeD()
  119. returnHome()
  120. end
  121.  
  122. local function harvest()
  123. drone.setStatusText("CUTTING")
  124. moveLeft(20)
  125.  
  126. for i=1,4,1 do
  127. for i=1,8,1 do
  128. suckAll()
  129. swingHor()
  130. moveForward(1)
  131. end
  132. moveRight(1)
  133. for i=1,8,1 do
  134. suckAll()
  135. swingHor()
  136. moveBackward(1)
  137. end
  138. moveRight(1)
  139. end
  140.  
  141. returnHome()
  142. dropAll()
  143. sleep(2)
  144. end
  145.  
  146. local function resetP()
  147. travelx, travely, travelz = 0,0,0
  148. end
  149.  
  150. function returnHome()
  151. travelx = travelx * -1
  152. travely = travely * -1
  153. travelz = travelz * -1
  154. sleep(1)
  155. move(travelx,travely,travelz)
  156. sleep(2)
  157. resetP()
  158. end
  159.  
  160.  
  161. local function setup()
  162. resetP()
  163. job = 0
  164. drone.setStatusText("CHECKING")
  165. drone.select(1)
  166. for i=1,40,1 do
  167. if not drone.compare(0, true) then
  168. break
  169. end
  170. moveForward(1)
  171. end
  172. returnHome()
  173. end
  174.  
  175. --start
  176. resetP()
  177. job = 0
  178. drone.setStatusText("ROM\nOK.v4.14.")
  179. sleep(1)
  180.  
  181. -- Main loop
  182.  
  183. setup()
  184. harvest()
  185. drone.setStatusText(tostring(job))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement