Advertisement
readix

Untitled

Feb 23rd, 2021
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local direction = 0 -- direction
  2. local drapeauBedrock = false -- indicateur pour savoir si on est arrivé à la bedrock
  3. local profondeur = 0 -- indique de combien on a creusé
  4. local longueur = 9 -- indique la longueur (x) de la zone à miner
  5. local largeur = 9 -- indique la largeur (y) de la zone à miner
  6. local xPosition = 0 -- indique la position courante en x
  7. local zPosition = 0 -- indique la position courante en z
  8. local niveauFuelMini = 5 -- niveau de déplacements auquel on doit refaire le plein de fuel
  9. local niveauCharbonMini = 5 -- quantité de charbons restants à laquelle on doit refaire le plein de charbon
  10.  
  11. local premierSlot = 4 -- premier slot où se trouve le minerai ramassé
  12. local dernierSlot = 13 -- dernier slot à surveiller pour enclencher le vidage de l'inventaire
  13. local enderchestSlot = 14 -- slot où se trouve l'enderchest pour les minerais
  14. local enderchestCharbonSlot = 15 -- slot où se trouve l'enderchest pour les minerais
  15. local charbonSlot = 16 -- slot ou est stocké le charbon
  16.  
  17. local plan = {} -- tableau pour stocker les coordonnées relatives des puits de minage.
  18.  
  19. local args = {...}
  20. local xDepart = tonumber(args[1])
  21. local zDepart = tonumber(args[2])
  22.  
  23.  
  24.  
  25. function compare_mine() -- fonction qui compare et mine, tourne à droite et direction++
  26.  
  27. local slot = 0
  28. local resultat = false
  29.  
  30. for slot=1,3 do
  31. turtle.select(slot)
  32. if turtle.compare() or resultat then
  33. resultat = true
  34. end
  35. end
  36.  
  37. if resultat == false then
  38. turtle.dig()
  39. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  40. print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  41. videInventaire()
  42. end
  43. end
  44.  
  45. turtle.turnRight()
  46. direction=direction+1
  47.  
  48. end
  49.  
  50. function verifFuel() -- vérifie si on a assez de fuel (déplacements) en réserve.
  51. -- 1 charbon = 96 deplacements
  52. -- On vérifie le niveau de fuel
  53. local niveauFuel = turtle.getFuelLevel()
  54. if (niveauFuel ~= "unlimited") then
  55. if (niveauFuel < niveauFuelMini) then
  56. -- On a besoin de faire le plein
  57. turtle.select(charbonSlot)
  58. if turtle.getItemCount(charbonSlot) < niveauCharbonMini then
  59. rechargeCharbon() -- on refait le plein de charbon
  60. end
  61. turtle.refuel(1) -- on recharge pour 96 deplacements
  62. end
  63. end
  64. end
  65.  
  66. function rechargeCharbon() -- permet de refaire le plein en charbon
  67.  
  68. turtle.dig()
  69.  
  70. if turtle.getItemCount(dernierSlot-1) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  71. print("vidage inventaire rech_charbon1; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  72. videInventaire()
  73. end
  74.  
  75. turtle.select(enderchestCharbonSlot)
  76. turtle.place()
  77. turtle.select(charbonSlot)
  78. turtle.suck()
  79.  
  80. turtle.select(enderchestCharbonSlot)
  81. turtle.dig()
  82.  
  83. end
  84.  
  85. function videInventaire() -- vide l'inventaire de la tortue dans l'enderchest dédié à ça
  86.  
  87. local slot
  88. turtle.dig()
  89. turtle.select(enderchestSlot)
  90. turtle.place()
  91. for slot=premierSlot,dernierSlot do
  92. turtle.select(slot)
  93. while turtle.getItemCount(slot) > 0 do
  94. turtle.drop(turtle.getItemCount(slot))
  95. if turtle.getItemCount(slot) > 0 then
  96. sleep(0.5)
  97. end
  98. end
  99. end
  100.  
  101. turtle.select(enderchestSlot)
  102. turtle.dig()
  103.  
  104. end
  105.  
  106. function calcPlan() -- calcule les emplacements des puits de minage
  107.  
  108. local x, z, temp, xTemp
  109. temp = 1
  110. -- pour forcer à miner le point de départ
  111. plan[temp] = {}
  112. plan[temp][1] = 0
  113. plan[temp][2] = 0
  114. temp = temp + 1
  115.  
  116. -- on boucle sur les colonnes
  117. for z=0,largeur do
  118. x = 0
  119. print("z : "..z)
  120.  
  121. --on calcule le x du 1er premier puit de minage pour la colonne z
  122. x = 5 - (z*2) +x
  123. while x < 0 do
  124. x = x + 5
  125. end
  126. plan[temp] = {}
  127. plan[temp][1] = x
  128. plan[temp][2] = z
  129. temp = temp + 1
  130. print("x : "..x)
  131.  
  132. -- et ensuite on trouve automatiquement les autres emplacements de la colonne z
  133. while x <= longueur do
  134. x = x + 5
  135. if x <= longueur then
  136. plan[temp] = {}
  137. plan[temp][1] = x
  138. plan[temp][2] = z
  139. temp = temp + 1
  140. print("x : "..x)
  141. end
  142. end
  143. z = z + 1
  144. end
  145. end
  146.  
  147. function deplacement(r,s) -- pour aller à des coordonnées précises
  148.  
  149. local nbX
  150. local nbZ
  151.  
  152. -- On commence par se déplacer en x
  153. print("r : "..r.." ; s : "..s)
  154. print("xPosition : "..xPosition.." ; zPosition : "..zPosition)
  155.  
  156. r = tonumber(r)
  157. s = tonumber(s)
  158.  
  159. if r > xPosition then
  160. nbX = r - xPosition
  161. print("dans r>= xposition")
  162. while direction ~= 0 do -- ici on se met dans la bonne direction
  163. turtle.turnRight()
  164. direction=direction+1
  165. if direction == 4 then direction = 0 end
  166. end
  167. elseif r < xPosition then
  168. nbX = xPosition - r
  169. print("dans xposition > r")
  170. while direction ~= 2 do -- ici on se met dans la bonne direction
  171. turtle.turnRight()
  172. direction=direction+1
  173. if direction == 4 then direction = 0 end
  174. end
  175. end
  176.  
  177. if r ~= xPosition then
  178. print("nbX : "..nbX)
  179. while nbX > 0 do
  180. if not turtle.forward() then
  181. turtle.dig() -- ici, on n'a pas réussi à avancer, donc on creuse devant soit pour dégager le passage
  182. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  183. print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  184. videInventaire()
  185. end
  186. turtle.forward()
  187. end
  188. if direction == 0 then xPosition = xPosition + 1 else xPosition = xPosition - 1 end
  189. verifFuel()
  190. nbX = nbX - 1
  191. end
  192. end
  193.  
  194. -- Ensuite on fait le déplacement en z
  195.  
  196. if s > zPosition then
  197. nbZ = s - zPosition
  198.  
  199. while direction ~= 1 do -- ici on se met dans la bonne direction
  200. turtle.turnRight()
  201. direction=direction+1
  202. if direction == 4 then direction = 0 end
  203. end
  204. elseif s < zPosition then
  205. nbZ = zPosition - s
  206.  
  207. while direction ~= 3 do -- ici on se met dans la bonne direction
  208. turtle.turnRight()
  209. direction=direction+1
  210. if direction == 4 then direction = 0 end
  211. end
  212. end
  213.  
  214. if s ~= zPosition then
  215. while nbZ > 0 do
  216. if not turtle.forward() then
  217. turtle.dig() -- ici, on n'a pas réussi à avancer, donc on creuse devant soit pour dégager le passage
  218. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  219. print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  220. videInventaire()
  221. end
  222. turtle.forward()
  223. end
  224. if direction == 1 then zPosition = zPosition + 1 else zPosition = zPosition - 1 end
  225. verifFuel()
  226. nbZ = nbZ - 1
  227. end
  228. end
  229.  
  230. --on se remet en direction "zéro"
  231. while direction ~= 0 do
  232. turtle.turnRight()
  233. direction=direction+1
  234. if direction == 4 then direction = 0 end
  235. end
  236.  
  237. end
  238.  
  239.  
  240.  
  241.  
  242. --********************************************--
  243. --********** Programme principal *************--
  244. --********************************************--
  245.  
  246. calcPlan() -- on calcule les emplacements des puits de forage
  247.  
  248. --for k,v in pairs(plan) do print(k.." "..v[1].." "..v[2]) end
  249.  
  250. local p, pmax = 1, #plan
  251.  
  252. while p <= pmax do
  253.  
  254. drapeauBedrock = false --avant tout, on reset ce flag
  255. deplacement(plan[p][1],plan[p][2]) -- puis on se déplace sur le 1er puit à forer
  256. turtle.digDown() --creuse le bloc dessous
  257. sleep(0.2)
  258. turtle.down() --descend d'un cran
  259. profondeur = profondeur+1
  260. verifFuel()
  261.  
  262. while drapeauBedrock == false do
  263.  
  264. -- ici, direction = 0
  265. while direction~=4 do
  266. --compare et mine, tourne à droite et direction++
  267. compare_mine()
  268. end
  269. direction=0
  270.  
  271. if turtle.detectDown() == true then -- on vérifie si il y a un bloc en dessous
  272. if turtle.digDown() == false then -- si on n'arrive pas à creuser en dessous, alors c'est la bedrock
  273. drapeauBedrock = true -- donc je met le drapeau à true pour sortir de la boucle
  274. print("bedrock !")
  275. else
  276. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  277. print("vidage inventaire princ1; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  278. videInventaire()
  279. end
  280. turtle.down()
  281. profondeur = profondeur+1
  282. verifFuel()
  283. end
  284. else -- si il n'y a pas de bloc alors c'est de l'air, de l'eau ou de la lave
  285. turtle.down() -- alors on descend simplement (la tortue ne craint pas la lave ou l'eau) et on continue à miner
  286. profondeur = profondeur+1
  287. verifFuel()
  288. end
  289.  
  290. end
  291.  
  292. print("fin de la boucle "..profondeur)
  293. -- ici je remonte à la surface
  294. while profondeur ~= 0 do
  295. turtle.up()
  296. profondeur = profondeur-1
  297. verifFuel()
  298. end
  299.  
  300. p = p + 1
  301. end
  302.  
  303. deplacement(0,0) -- retour au point de départ
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement