Advertisement
100xdonaldx001

Computercraft Stripmine2 (Turtle) (German)

Apr 29th, 2015
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.11 KB | None | 0 0
  1. --start: block der verhindert das der hautpfad unterborchen wird
  2. function Sicherheitspfad()
  3. if turtle.detectDown() == false then -- wen kein block unter der turel ist
  4. turtle.select(1) -- slot 1 auswaehlen
  5. turtle.placeDown() -- und unter die turel setzten
  6. end
  7. end
  8. --end: block der verhindert das der hautpfad unterborchen wird
  9.  
  10. --start: hier wird der Hauptgang gegraben
  11. function Mittelgang()
  12. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  13. Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  14. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  15.  
  16. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  17. Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  18. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  19.  
  20. Fackel() -- fackel auf der rechten seite setzten
  21. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  22. Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  23. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  24. end
  25. --end: hier wird der Hauptgang gegraben
  26.  
  27. --start: baut einen Seitengang
  28. function Seitengang()
  29. for b = 0, 4, 1 do -- grabe dich in den gang
  30. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  31. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  32. end
  33.  
  34. turtle.turnRight() -- umdrehen
  35. turtle.turnRight() -- umdrehen
  36. for b = 0, 4, 1 do -- komm zur mitte zurueck
  37. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  38. end
  39. end
  40. --end: baut einen Seitengang
  41.  
  42. --start: geht 1 block nach vorne
  43. function NachVorne()
  44. while turtle.detect() do -- prueft ob ein block vor der turel ist
  45. turtle.dig()
  46. sleep(0.25)
  47. end
  48.  
  49. while(turtle.forward() == false) do --wenn er nicht fahren konnte
  50. turtle.dig() -- einmal abbauen
  51. turtle.attack() -- einmal zuschlagen
  52. end
  53. end
  54. --end: geht 1 block nach vorne
  55.  
  56. --start: beim abbauen uebersich ob kies nachfaell, wen ja solange abbauen bis nichts mehr kommt
  57. function KiesUp()
  58. while turtle.detectUp() do -- prueft ob ueber ihm noch etwas ist
  59. turtle.digUp() -- haut den block ueber sich ab
  60. sleep(0.25) -- wartet, funktioniert nur wen der block direck nachfaellt ist ein block
  61. end
  62. end
  63. --end: beim abbauen uebersich ob kis nachfaell, wen ja solange abbauen bis nichts mehr kommt
  64.  
  65. --start: plaziert die Fackel
  66. function Fackel()
  67. if (turtle.back()) then-- plaziert die fackel wen er 1 block zurueck fahren konnte
  68. turtle.select(16) -- waehlt die Fackeln aus
  69. turtle.placeUp() -- plaziert die Fackel ueber sich
  70. NachVorne() -- geht wieder nach vorne
  71. end
  72. turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  73. end
  74. --end: plaziert die Fackel
  75.  
  76. --start: Steuerung fuer Hauptgang und Seitengang
  77. function Strip()
  78. Mittelgang() -- hier wird der Hauptgang gegraben
  79. turtle.turnRight() -- startposition fuer die linke seite
  80. Seitengang() -- graebt den ersten seitengang und kommt zurueck zur mitte
  81. Seitengang() -- graebt den zweiten seitengang und kommt zurueck zur mitte
  82. end
  83. --end: Steuerung fuer Hauptgang und Seitengang
  84.  
  85. --start: entleere das inventar in die endertruhe
  86. function enderTruhe()
  87. if (endertruhe == 0) then -- wen keine kiste ausgewaehlt ist nicht in endertruhe leeren
  88. return
  89. end
  90. while turtle.detect() do -- die Truhe braucht platz um hingestell werden zu koennen also wird solange gegraben bis platz da ist
  91. turtle.dig()
  92. sleep(0.5)
  93. end
  94. turtle.select(15) -- Truhe auswaehlen
  95. turtle.place() -- Truhe plazieren
  96. for k = 1,14 do -- k dient hier als zaehler um jeden platz leer zu machen
  97. turtle.select(k)
  98. if turtle.getItemCount(k) == 0 then
  99. break -- hier wird abgebrochen wenn der slot leer ist
  100. -- eine schneller entladung der kist ist somit gegeben ^^
  101. end
  102. turtle.drop() -- legt die items in aus dem slot in die truhe
  103. end
  104. turtle.select(15) -- waehlt slot 15 aus
  105. turtle.dig() -- und nimmt die truhe wieder auf
  106. turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  107. end
  108. --end: entleere das inventar in die endertruhe
  109.  
  110. --start: graebt den Tunnel solange wie eingegeben wurde
  111. function tunnel()
  112. bildschirmRun() -- bereinigt den Bildschirm beim Start des Tunnelgrabens
  113. kistenabstand = 3 -- nach diesem gang wird das 1 mal die truhe geleert
  114. for aktuellergang = 1, ganganzahl, 1 do -- schleife die soviele gaenge macht wie eingeben
  115. Strip() -- hier wird der hauptgang mit einem Tunnel links und rechts gegraben
  116. -- entwerder nur nach links drehen oder nach links drehen und die kiste setzten
  117. if (aktuellergang == kistenabstand and aktuellergang ~= ganganzahl) then
  118. turtle.turnLeft() -- gehe einmal nach links
  119. kistenabstand = kistenabstand + 3 -- kistenabstand wieder 3 hoch
  120. enderTruhe() -- entleer die in die Enertrue
  121. elseif (aktuellergang == ganganzahl) then -- letzter gang nach rechts gehen und in die Truhe entlehren
  122. turtle.turnRight() -- zurueck in gang drehen fuer die fahrt zur Ausgangsposition
  123. enderTruhe() -- es war der letzte gang, sprich stell die kist das letzte mal und entleeren
  124. else
  125. turtle.turnLeft() -- gehe nur einmal nach lings und mach mit dem hauptgan weiter
  126. end
  127. statusBildschirm(aktuellergang) -- Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde (aktuellergang muss uebergeben werden)
  128. end
  129. end
  130. --end: graebt den Tunnel solange wie eingegeben wurde
  131.  
  132. --start: Zurueck zur Ausgangsposition
  133. function back()
  134. for a = 1,ganganzahl * 3 do
  135. NachVorne()
  136. end
  137. end
  138. --end: Zurueck zur Ausgangsposition
  139.  
  140. --start: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
  141. function statusBildschirm(aktuellergang)
  142. -- start: Zeigt das Fuel-Level an
  143. term.setCursorPos( 1, 3)
  144. term.clearLine()
  145. fuellevel = turtle.getFuelLevel()
  146. print("Fuel-Level: " .. fuellevel)
  147.  
  148. -- start: Zeigt die anzahl der Fakeln an
  149. term.setCursorPos( 1, 5)
  150. term.clearLine()
  151. fackeln = turtle.getItemCount(16)
  152. print("Fackeln : " .. fackeln)
  153.  
  154. term.setCursorPos(1,7)
  155. term.clearLine()
  156. print("Gang " .. aktuellergang .. " von " .. ganganzahl .. " wurde fertiggestellt!")
  157. end
  158. --end: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
  159.  
  160.  
  161. --START: Programmsteuerung eingabe
  162. --start: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
  163. local function checkStatus()
  164. local blink = 0 -- wird benoetigt fuer das blinken der Warnung das das Fuellevel nidrig ist
  165. while true do --prueft endlos den status
  166. time() -- zeit die Uhrzeit oben rechts an
  167.  
  168. -- start: Zeigt das Fuel-Level an
  169. term.setCursorPos( 1, 3)
  170. term.clearLine()
  171. fuellevel = turtle.getFuelLevel()
  172. if (fuellevel < 500 and blink == 0) then
  173. print("Fuel-Level: " .. fuellevel .. " !! Warnung !!")
  174. blink = 1 -- setz blinken der Warnung zurueck
  175. else
  176. print("Fuel-Level: " .. fuellevel)
  177. blink = 0 -- setz blinken der Warnung zurueck
  178. end
  179. -- end: Zeigt das Fuel-Level an
  180. -- start: Zeigt die aufladung des Fuel-Level an
  181. term.setCursorPos( 1, 7)
  182. term.clearLine()
  183. term.clearLine()
  184. ladeeinheiten = turtle.getItemCount(13) -- Einheiten zum Aufladen aus slot 13
  185. if (ladeeinheiten == 1) then
  186. print("Hinweis: Fuelaufladung um eine Einheit")
  187. elseif (ladeeinheiten > 1) then
  188. print("Hinweis: Fuelaufladung um " .. ladeeinheiten .. " Einheiten")
  189. end
  190. -- end: Zeigt die aufladung des Fuel-Level an
  191.  
  192. -- start: Pruefung fuer die Endertruhe
  193. term.setCursorPos( 1, 4)
  194. term.clearLine()
  195. endertruhe = turtle.getItemCount(15)
  196. if (endertruhe == 1) then
  197. print("Endertruhe: Ja")
  198. endertruhe = 1 --braucht man nicht ist nur zur sicherheit
  199. elseif (endertruhe > 1) then
  200. print("Endertruhe: Bitte nur 1 Kiste")
  201. endertruhe = 0
  202. else
  203. print("Endertruhe: Nein")
  204. endertruhe = 0
  205. end
  206. -- end: Pruefung fuer die Endertruhe
  207.  
  208. -- start: Zeigt die anzahl der Fakeln an
  209. term.setCursorPos( 1, 5)
  210. term.clearLine()
  211. fackeln = turtle.getItemCount(16)
  212. if (fackeln == 0) then
  213. print("Fackeln : Keine")
  214. elseif (fackeln == 1) then
  215. print("Fackeln : " .. fackeln .. " (Eingabe 0 = ein Gang)")
  216. else
  217. print("Fackeln : " .. fackeln .. " (Eingabe 0 = " .. fackeln .." Gaenge)")
  218. end
  219. -- end: Zeigt die anzahl der Fakeln an
  220.  
  221. term.setCursorPos(36, 12) -- setzt angezeigte curser zurueck zur eingabe
  222. sleep(0.4) -- minecraft minute dauert 0.8 Sekunden
  223. end
  224. end
  225. --end: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
  226.  
  227. --start: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999
  228. local function eingabeTunnellaenge()
  229. while true do -- ergibt eine endlosschleife bis man auf return kommt
  230. term.setCursorPos(1, 12) -- setzt den curser hier her
  231. term.clearLine() -- loescht eventuell den Hilfetext
  232. term.setCursorPos(1, 12) -- setzt den curser hier her
  233. print("Anzahl Gaenge? (0 = Fackelanzahl) :") -- anzeige des Hilfetextes
  234. term.setCursorPos(36, 12) -- setzt position auf eingabe
  235.  
  236. local inputstring = read() -- auswertung der eingabe
  237. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  238. ganganzahl = tonumber(inputstring) --macht aus dem Strin ein zahl
  239. if (ganganzahl >= 0 and ganganzahl <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  240. if (ganganzahl == 0) then
  241. ganganzahl = fackeln
  242. end
  243. return -- wenn alles ok ist, beende die eingabe
  244. end
  245. end
  246. term.setCursorPos(1, 12) -- setzt den curser hier her
  247. term.clearLine()
  248. print("0 = Fakelanzahl oder 1-999 moeglich")
  249. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  250. end
  251. end
  252. --end: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999
  253.  
  254. --start: Uhrzeit und Tag in Minecraft auslesen und anzeigen
  255. function time()
  256. term.setCursorPos( 29, 1) -- position auf Zeit setzten
  257. local day -- locale Variable fuer den Tag in Minecraft
  258. local zeit -- locale Variable fuer die Uhrzeit in Minecraft
  259. day = os.day() -- nicht im Gebrauch!
  260. zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format
  261. if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr
  262. print("Zeit: " .. zeit) -- vor 10 Uhr, es geht um die laenge
  263. else
  264. print("Zeit: " .. zeit) -- nach 10 Uhr
  265. end
  266. end
  267. --start: Uhrzeit und Tag in Minecraft auslesen und anzeigen
  268. --end: Programmsteuerung eingabe
  269.  
  270. --start: bereinigt den Bildschirm und baut das eingabe Fenster auf
  271. function bildschirmStart()
  272. shell.run("clear") -- löscht allties auf dem Bildschirm
  273. print("Systemhinweis")
  274. print("=======================================")
  275. term.setCursorPos(1,6)
  276. term.clearLine()
  277. print("---------------------------------------")
  278. term.setCursorPos(1,11)
  279. print("---------------------------------------")
  280. end
  281. --end: bereinigt den Bildschirm und baut das eingabe Fenster auf
  282.  
  283. --start: zeigt an das die Turel fertig sit
  284. function zeigtFertig()
  285. term.setCursorPos(1,10) -- zeile 10 fuer anzeige bereinigen
  286. term.clearLine() -- zeile 10 fuer anzeige bereinigen
  287. print("!!!Fertig - Programm beendet!!!") -- fertig meldung
  288. term.setCursorPos(1,12) -- letzte zeile bereinigen
  289. term.clearLine() -- letzte zeile bereinigen
  290. end
  291. --end: zeigt an das die Turel fertig sit
  292.  
  293. --start: bereinigt den Bildschirm wen die turtel loslaeuft
  294. function bildschirmRun()
  295. term.setCursorPos(1,7)
  296. term.clearLine()
  297. term.setCursorPos(1,12)
  298. term.clearLine()
  299. turtle.select(1) -- waehlt zum start slot 1 aus
  300. end
  301. --end: bereinigt den Bildschirm wen die turtel loslaeuft
  302.  
  303. --**Hauptprogrammsteuerung
  304. --Setzen der globale Variablen (diese sind ueberall verfuegbar)
  305. endertruhe = 0 -- Endertruhe = nein
  306. fackeln = 0 -- Fackeln = 0
  307. ganganzahl = 0 -- Anzahl Gaenge = 0
  308. fuellevel = 0 -- Fuel-Level = 0
  309.  
  310. -- bereinigt den Bildschirm und baut das eingabe Fenster auf
  311. bildschirmStart()
  312.  
  313. -- fuerht 2 funktionen gleichzeitig aus, eingab und aktuellisuerung der Fakeln, Endertruhe, und Fullevel
  314. parallel.waitForAny(eingabeTunnellaenge, checkStatus)
  315.  
  316. --Laed die Turtel vor dem start wieder auf wen etwas in slot 13 abgelegt wurde
  317. turtle.select(13) -- Slot 13 auswaehlen
  318. turtle.refuel(turtle.getItemCount(13)) -- auffuellung mit der anzahl Items in Slot 13
  319.  
  320. -- hier wird der tunnel gegraben
  321. if (ganganzahl ~= 0) then -- mach das nur wen du auch wirklich was gemacht hast
  322. tunnel() -- vielleicht so oder doch ueber einen extra status anzeige
  323. back() -- hier komm die turtel wieder zurueck zum ausgangspunkt
  324. end
  325. --zeit an das die Turtel fertig ist
  326. zeigtFertig()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement