Advertisement
leo1553

Untitled

Jul 29th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. local params = {...}
  2.  
  3. -- Validade Params
  4. if(tonumber(params[1]) < 1) then
  5. term.write("Param [".. params[1] .."] is invalid")
  6. return
  7. elseif(tonumber(params[2]) < 1) then
  8. term.write("Param [".. params[2] .."] is invalid")
  9. return
  10. elseif(tonumber(params[3]) < 1) then
  11. term.write("Param [".. params[3] .."] is invalid")
  12. return
  13. end
  14. params[1] = tonumber(params[1])
  15. params[2] = tonumber(params[2])
  16. params[3] = tonumber(params[3])
  17.  
  18. -- Variables
  19. local posX = 0
  20. local posY = 0
  21. local posZ = 0
  22. local rot = 0
  23. -- 0 = forward
  24. -- 1 = right
  25. -- 2 = back
  26. -- 3 = left
  27.  
  28. local turn = 0;
  29.  
  30. -- Moviment
  31. function DirectionOperator()
  32. if(rot < 2) then
  33. return 1;
  34. else
  35. return -1;
  36. end
  37. end
  38.  
  39. function Forward()
  40. if(turtle.forward()) then
  41. if(rot == 0) then
  42. posZ = posZ + 1;
  43. elseif(rot == 1) then
  44. posX = posX - 1;
  45. elseif(rot == 2) then
  46. posZ = posZ - 1;
  47. elseif(rot == 3) then
  48. posX = posX + 1;
  49. end
  50. end
  51. end
  52.  
  53. function Right()
  54. turtle.turnRight()
  55. rot = rot + 1
  56. if(rot > 3) then
  57. rot = 0
  58. end
  59. end
  60.  
  61. function Left()
  62. turtle.turnLeft()
  63. rot = rot - 1
  64. if(rot < 0) then
  65. rot = 3
  66. end
  67. end
  68.  
  69. function Up()
  70. if(turtle.up()) then
  71. posY = posY + 1
  72. end
  73. end
  74.  
  75. function Down()
  76. if(turtle.down()) then
  77. posY = posY - 1
  78. end
  79. end
  80.  
  81. -- Functions
  82. function Dig()
  83. if(posY + 1 < params[2]) then
  84. turtle.digUp()
  85. end
  86. if(posY - 1 >= 0) then
  87. turtle.digDown()
  88. end
  89. if(rot == 0) then
  90. if(posZ + 1 <= params[3]) then
  91. turtle.dig()
  92. end
  93. elseif(rot == 2) then
  94. if(posZ - 1 > 0) then
  95. turtle.dig()
  96. end
  97. end
  98. end
  99.  
  100. function EndRowRight()
  101. Right()
  102. turtle.dig()
  103. Forward()
  104. Right()
  105. end
  106.  
  107. function EndRowLeft()
  108. Left()
  109. turtle.dig()
  110. Forward()
  111. Left()
  112. end
  113.  
  114. function EndLevel()
  115. -- +1 already digged, +2 wont dig up, +3 will dig up
  116. if(posY + 3 < params[2]) then
  117. Up()
  118. turtle.digUp()
  119. Up()
  120. turtle.digUp()
  121. Up()
  122. elseif(posY + 2 < params[2]) then
  123. Up()
  124. turtle.digUp()
  125. Up()
  126. else
  127. return
  128. end
  129. Right()
  130. Right()
  131. end
  132.  
  133. function NextTurn()
  134. if(turn == 0) then
  135. if(posZ == params[3] or posZ == 1) then
  136. EndRowLeft()
  137. turn = 1
  138. --print("Turn set to 1")
  139. end
  140. else
  141. if(posZ == params[3] or posZ == 1) then
  142. EndRowRight()
  143. turn = 0
  144. --print("Turn set to 0")
  145. end
  146. end
  147. end
  148.  
  149. -- Dig Loop
  150. --::dig::
  151.  
  152. local levels = math.ceil(params[2] / 3)
  153. if(params[2] > 1) then
  154. turtle.digUp()
  155. Up()
  156. end
  157. turtle.dig()
  158. Forward()
  159.  
  160. for loopY = 1, levels do
  161. for loopX = 1, params[1] do
  162. for loopZ = 1, (params[3] - 1) do
  163. Dig()
  164. Forward()
  165. --print(loopZ .." ".. params[3] .." | ".. posX .." ".. posZ)
  166. end
  167. if(posY + 1 < params[2]) then
  168. turtle.digUp()
  169. end
  170. if(posY - 1 >= 0) then
  171. turtle.digDown()
  172. end
  173.  
  174. if(loopX ~= params[1]) then
  175. --print("NextTurn")
  176. NextTurn()
  177. end
  178. end
  179. if(loopY ~= levels) then
  180. EndLevel()
  181. end
  182. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement