Napfsuelze1984

Stripmine20

Oct 19th, 2015
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.20 KB | None | 0 0
  1. -- ** Stripmining Programm **
  2. -- ** �© 2013 SemOnLP **
  3. -- ** Modified by Anordiel **
  4. -- **************************
  5. -- Changelog
  6. -- 09.09.13 - V1.0 = Veroeffentlicht
  7. -- 12.02.14 - V2.0 = Einstellungen speichern, neue Anzeige
  8.  
  9. --start: block der verhindert das der hautpfad unterborchen wird
  10. function Sicherheitspfad()
  11. if turtle.detectDown() == false then -- wen kein block unter der turel ist
  12. turtle.select(1) -- slot 1 auswaehlen
  13. turtle.placeDown() -- und unter die turel setzten
  14. end
  15. end
  16. --end: block der verhindert das der hautpfad unterborchen wird
  17.  
  18. --start: hier wird der Hauptgang gegraben
  19. function Mittelgang()
  20. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  21. -- Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  22. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  23.  
  24. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  25. -- Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  26. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  27.  
  28. Fackel("mitte") -- fackel auf der rechten seite setzten
  29. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  30. -- Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  31. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  32. end
  33. --end: hier wird der Hauptgang gegraben
  34.  
  35. --start: baut einen Seitengang
  36. function Seitengang()
  37. for i = 1, laengeSeitengang, 1 do -- grabe dich in den gang
  38. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  39. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  40.  
  41. if (i % fackelnSeitengang == 0 and fackelnSeitengang ~= 0) then -- wenn fackeln gesetzt werden sollen und diese dem abastand entsprechen
  42. Fackel("seite")
  43. end
  44. end
  45.  
  46. turtle.turnRight() -- umdrehen
  47. turtle.turnRight() -- umdrehen
  48. for i = 1, laengeSeitengang, 1 do -- komm zur mitte zurueck
  49. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  50. end
  51. end
  52. --end: baut einen Seitengang
  53.  
  54. --start: geht 1 block nach vorne
  55. function NachVorne()
  56. while turtle.detect() do -- prueft ob ein block vor der turel ist
  57. turtle.dig()
  58. end
  59.  
  60. while(turtle.forward() == false) do --wenn er nicht fahren konnte
  61. turtle.dig() -- einmal abbauen
  62. turtle.attack() -- einmal zuschlagen
  63. end
  64. end
  65. --end: geht 1 block nach vorne
  66.  
  67. --start: beim abbauen uebersich ob kies nachfaell, wen ja solange abbauen bis nichts mehr kommt
  68. function KiesUp()
  69. while turtle.detectUp() do -- prueft ob ueber ihm noch etwas ist
  70. turtle.digUp() -- haut den block ueber sich ab
  71. sleep(0.25) -- wartet, funktioniert nur wen der block direck nachfaellt ist ein block
  72. end
  73. end
  74. --end: beim abbauen uebersich ob kis nachfaell, wen ja solange abbauen bis nichts mehr kommt
  75.  
  76. --start: plaziert die Fackel
  77. function Fackel(gang) -- ueber gibt gang oder seite
  78. if (fakelanzahl1 ~= 0) then
  79. turtle.select(slotFackeln1) -- waehlt die Fackeln aus
  80. fakelanzahl1 = fakelanzahl1 -1
  81. elseif (fakelanzahl2 ~= 0) then
  82. slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  83. turtle.select(slotFackeln2) -- waehlt die Fackeln aus
  84. fakelanzahl2 = fakelanzahl2 -1
  85. elseif (fakelanzahl3 ~= 0) then
  86. slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  87. slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  88. turtle.select(slotFackeln3) -- waehlt die Fackeln aus
  89. fakelanzahl3 = fakelanzahl3 -1
  90. else
  91. slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  92. slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  93. slotFackeln3 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  94. return -- keine fackeln mehr mach nichts
  95. end
  96.  
  97. if (gang == "seite") then
  98. turtle.placeUp() -- plaziert die Fackel ueber sich
  99. turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  100. else
  101. if (turtle.back()) then-- plaziert die fackel wen er 1 block zurueck fahren konnte
  102. turtle.placeUp() -- plaziert die Fackel ueber sich
  103. NachVorne() -- geht wieder nach vorne
  104. end
  105. end
  106. turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  107. end
  108. --end: plaziert die Fackel
  109.  
  110. --start: Steuerung fuer Hauptgang und Seitengang
  111. function Strip()
  112. Mittelgang() -- hier wird der Hauptgang gegraben
  113. turtle.turnRight() -- startposition fuer die linke seite
  114. Seitengang() -- graebt den ersten seitengang und kommt zurueck zur mitte
  115. Seitengang() -- graebt den zweiten seitengang und kommt zurueck zur mitte
  116. end
  117. --end: Steuerung fuer Hauptgang und Seitengang
  118.  
  119. --start: entleere das inventar in die endertruhe
  120. function enderTruhe()
  121. if (endertruhe == 0) then -- wen keine kiste ausgewaehlt ist nicht in endertruhe leeren
  122. return
  123. end
  124. while turtle.detect() do -- die Truhe braucht platz um hingestell werden zu koennen also wird solange gegraben bis platz da ist
  125. turtle.dig()
  126. sleep(0.5)
  127. end
  128. turtle.select(slotEndertruhe) -- Truhe auswaehlen
  129. turtle.place() -- Truhe plazieren
  130. for i = 1,16 do -- k dient hier als zaehler um jeden platz leer zu machen
  131. turtle.select(i)
  132. if (turtle.getItemCount(i) == 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then -- stop beachte die fackeln umzusetzend
  133. break -- hier wird abgebrochen wenn der slot leer ist
  134. -- eine schneller entladung der kist ist somit gegeben ^^
  135. elseif (turtle.getItemCount(i) ~= 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then
  136. turtle.drop() -- legt die items in aus dem slot in die truhe
  137. end
  138. end
  139. turtle.select(slotEndertruhe) -- waehlt slot 15 aus
  140. turtle.dig() -- und nimmt die truhe wieder auf
  141. turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  142. end
  143. --end: entleere das inventar in die endertruhe
  144.  
  145. --start: graebt den Tunnel solange wie eingegeben wurde
  146. function tunnel()
  147. statusBildschirm(0) -- bereinigt den Bildschirm beim Start des Tunnelgrabens
  148. kistenabstand = entleerungEndertruhe -- nach diesem gang wird das 1 mal die truhe geleert
  149. for aktuellergang = 1, ganganzahl, 1 do -- schleife die soviele gaenge macht wie eingeben
  150. Strip() -- hier wird der hauptgang mit einem Tunnel links und rechts gegraben
  151. -- entwerder nur nach links drehen oder nach links drehen und die kiste setzten
  152. if (aktuellergang == kistenabstand and aktuellergang ~= ganganzahl) then
  153. turtle.turnLeft() -- gehe einmal nach links
  154. kistenabstand = kistenabstand + entleerungEndertruhe -- kistenabstand wieder 3 hoch
  155. enderTruhe() -- entleer die in die Enertrue
  156. elseif (aktuellergang == ganganzahl) then -- letzter gang nach rechts gehen und in die Truhe entlehren
  157. turtle.turnRight() -- zurueck in gang drehen fuer die fahrt zur Ausgangsposition
  158. enderTruhe() -- es war der letzte gang, sprich stell die kist das letzte mal und entleeren
  159. else
  160. turtle.turnLeft() -- gehe nur einmal nach lings und mach mit dem hauptgan weiter
  161. end
  162. statusBildschirm(aktuellergang) -- Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde (aktuellergang muss uebergeben werden)
  163. end
  164. end
  165. --end: graebt den Tunnel solange wie eingegeben wurde
  166.  
  167. --start: Zurueck zur Ausgangsposition
  168. function back()
  169. for a = 1,ganganzahl * 3 do
  170. NachVorne()
  171. end
  172. end
  173. --end: Zurueck zur Ausgangsposition
  174.  
  175. --start: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
  176. function statusBildschirm(aktuellergang)
  177. -- start: Zeigt das Fuel-Level an
  178. term.setCursorPos( 1, 3)
  179. term.clearLine()
  180. fuellevel = turtle.getFuelLevel()
  181. print("Fuel-Level: " .. fuellevel)
  182.  
  183. term.setCursorPos( 1, 4)
  184. term.clearLine()
  185. if (endertruhe == 1) then
  186. print("Endertruhe: Ja")
  187. else
  188. print("Endertruhe: Nein")
  189. end
  190.  
  191. -- start: Zeigt die anzahl der Fakeln an
  192. term.setCursorPos( 1, 5)
  193. term.clearLine()
  194. fackeln = fakelanzahl1 + fakelanzahl2 + fakelanzahl3
  195. print("Fackeln : " .. fackeln)
  196.  
  197. term.setCursorPos(1,7)
  198. term.clearLine()
  199. if (aktuellergang > 0) then
  200. print("Gang " .. aktuellergang .. " von " .. ganganzahl .. " wurde fertiggestellt!")
  201. else -- wen das programm startet
  202. term.setCursorPos(1,8)
  203. term.clearLine()
  204. term.setCursorPos(1,9)
  205. term.clearLine()
  206. term.setCursorPos(1,10)
  207. term.clearLine()
  208. term.setCursorPos(1,12)
  209. term.clearLine()
  210. turtle.select(1) -- waehlt zum start slot 1 aus
  211. end
  212. end
  213. --end: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
  214.  
  215.  
  216. --START: Programmsteuerung eingabe
  217. --start: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
  218. local function checkStatus()
  219. slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"}
  220. slotsAnzeige[slotEndertruhe] = "e"
  221. slotsAnzeige[slotFackeln1] = "f"
  222. slotsAnzeige[slotFackeln2] = "f"
  223. slotsAnzeige[slotFackeln3] = "f"
  224. slotsAnzeige[slotAutofuel] = "a"
  225.  
  226. local blink = 0 -- wird benoetigt fuer das blinken der Warnung das das Fuellevel nidrig ist
  227. while true do --prueft endlos den status
  228. time() -- zeit die Uhrzeit oben rechts an
  229.  
  230. -- start: Zeigt das Fuel-Level an
  231. term.setCursorPos( 1, 3)
  232. term.clearLine()
  233. fuellevel = turtle.getFuelLevel()
  234. if (fuellevel < 500 and blink == 0) then
  235. print("Fuel-Level: " .. fuellevel .. " !! Warnung !!")
  236. blink = 1 -- setz blinken der Warnung zurueck
  237. else
  238. print("Fuel-Level: " .. fuellevel)
  239. blink = 0 -- setz blinken der Warnung zurueck
  240. end
  241. -- end: Zeigt das Fuel-Level an
  242. -- start: Zeigt die aufladung des Fuel-Level an
  243. term.setCursorPos( 1, 7)
  244. term.clearLine()
  245. term.clearLine()
  246. ladeeinheiten = turtle.getItemCount(tonumber(slotAutofuel)) -- Einheiten zum Aufladen aus slot 13
  247. if (ladeeinheiten == 1) then
  248. print("Hinweis: !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
  249. print("Fuelaufladung um eine Einheit !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
  250. print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
  251. print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
  252. elseif (ladeeinheiten > 9) then
  253. print("Hinweis: !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
  254. print("Fuelaufladung um " .. ladeeinheiten .. " Einheiten !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
  255. print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
  256. print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
  257. elseif (ladeeinheiten > 1) then
  258. print("Hinweis: !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
  259. print("Fuelaufladung um " .. ladeeinheiten .. " Einheiten !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
  260. print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
  261. print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
  262. else
  263. print(" !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
  264. print(" !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
  265. print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
  266. print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
  267. end
  268. -- end: Zeigt die aufladung des Fuel-Level an
  269.  
  270. -- start: Pruefung fuer die Endertruhe
  271. term.setCursorPos( 1, 4)
  272. term.clearLine()
  273. endertruhe = turtle.getItemCount(tonumber(slotEndertruhe))
  274. if (endertruhe == 1) then
  275. print("Endertruhe: Ja")
  276. endertruhe = 1 --braucht man nicht ist nur zur sicherheit
  277. elseif (endertruhe > 1) then
  278. print("Endertruhe: Bitte nur 1 Kiste")
  279. endertruhe = 0
  280. else
  281. print("Endertruhe: Nein")
  282. endertruhe = 0
  283. end
  284. -- end: Pruefung fuer die Endertruhe
  285.  
  286. -- start: Zeigt die anzahl der Fakeln an
  287. term.setCursorPos( 1, 5)
  288. term.clearLine()
  289. fackeln = turtle.getItemCount(tonumber(slotFackeln1)) + turtle.getItemCount(tonumber(slotFackeln2)) + turtle.getItemCount(tonumber(slotFackeln3))
  290. if (fackeln == 0) then
  291. print("Fackeln : Keine")
  292. elseif (fackeln == 1) then
  293. print("Fackeln : " .. fackeln .. " (Eingabe 0 = ein Gang)")
  294. else
  295. print("Fackeln : " .. fackeln .. " (Eingabe 0=" .. fackeln .." Gaenge)")
  296. end
  297. -- end: Zeigt die anzahl der Fakeln an
  298.  
  299. term.setCursorPos(38,3)
  300. print("!a")
  301. term.setCursorPos(38,4)
  302. print("!e")
  303. term.setCursorPos(38,5)
  304. print("!f")
  305. term.setCursorPos(36, 12) -- setzt angezeigte curser zurueck zur eingabe
  306. sleep(0.4) -- minecraft minute dauert 0.8 Sekunden
  307. end
  308. end
  309. --end: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
  310.  
  311. --start: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999 oder einstellungen
  312. local function eingabeTunnellaenge()
  313. while true do -- ergibt eine endlosschleife bis man auf return kommt
  314. term.setCursorPos(1, 12) -- setzt den curser hier her
  315. term.clearLine() -- loescht eventuell den Hilfetext
  316. term.setCursorPos(1, 12) -- setzt den curser hier her
  317. print("Anzahl Gaenge? (e = Einstellungen):") -- anzeige des Hilfetextes
  318.  
  319. term.setCursorPos(36, 12) -- setzt position auf eingabe
  320.  
  321. local inputstring = read() -- auswertung der eingabe
  322. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  323. ganganzahl = tonumber(inputstring) --macht aus dem Strin ein zahl
  324. if (ganganzahl >= 0 and ganganzahl <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  325. if (ganganzahl == 0) then
  326. ganganzahl = fackeln
  327. end
  328. einstellung = 0
  329. return -- wenn alles ok ist, beende die eingabe
  330. end
  331. end
  332.  
  333. if (inputstring == "e") then
  334. einstellung = 1
  335. return -- einstellung aender
  336. else
  337. term.setCursorPos(1, 12) -- setzt den curser hier her
  338. term.clearLine()
  339. print("0 = Fakelanzahl oder 1-999 moeglich")
  340. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  341. end
  342. end
  343. end
  344. --end: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999 oder einstellungen
  345.  
  346. --start: eingabe der einstellungen fuer das programm
  347. local function einstellungen()
  348. for i = 3, 10, 1 do -- loesch den bilschirm ab der dritten zeile
  349. term.setCursorPos(1,i) -- zeile fuer anzeige bereinigen
  350. term.clearLine() -- zeile fuer anzeige bereinigen
  351. end
  352.  
  353. term.setCursorPos(1,12) -- zeile fuer anzeige bereinigen
  354. term.clearLine() -- zeile fuer anzeige bereinigen
  355.  
  356.  
  357. -- anzeige fuer die einstellungen
  358. term.setCursorPos(1, 3) -- setzt den curser in zeile 3
  359. print("Slot Endertruhe : " .. slotEndertruhe) -- anzeige des Hilfetextes
  360. term.setCursorPos(1, 4) -- setzt den curser in zeile 3
  361. print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes
  362. term.setCursorPos(1, 5) -- setzt den curser in zeile 3
  363. print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes
  364. term.setCursorPos(1, 6) -- setzt den curser in zeile 3
  365. print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes
  366. term.setCursorPos(1, 7) -- setzt den curser in zeile 3
  367. print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes
  368. term.setCursorPos(1, 8) -- setzt den curser in zeile 3
  369. print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes
  370. term.setCursorPos(1, 9) -- setzt den curser in zeile 3
  371. print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes
  372. term.setCursorPos(1, 10) -- setzt den curser in zeile 3
  373. print("Entleerung Enderchest : " .. entleerungEndertruhe) -- anzeige des Hilfetextes
  374.  
  375. corsor = 3 -- eingabeposition, wird gebraucht bei der zeitanzeige
  376. einstellungenEndertruhe()
  377. term.setCursorPos(1, 3) -- setzt den curser in zeile 3
  378. print("Slot Endertruhe : " .. slotEndertruhe) -- anzeige des Hilfetextes
  379.  
  380. corsor = 4 -- eingabeposition, wird gebraucht bei der zeitanzeige
  381. einstellungenFackeln1()
  382. term.setCursorPos(1, 4) -- setzt den curser in zeile 3
  383. print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes
  384.  
  385. corsor = 5 -- eingabeposition, wird gebraucht bei der zeitanzeige
  386. einstellungenFackeln2()
  387. term.setCursorPos(1, 5) -- setzt den curser in zeile 3
  388. print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes
  389.  
  390. corsor = 6 -- eingabeposition, wird gebraucht bei der zeitanzeige
  391. einstellungenFackeln3()
  392. term.setCursorPos(1, 6) -- setzt den curser in zeile 3
  393. print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes
  394.  
  395. corsor = 7 -- eingabeposition, wird gebraucht bei der zeitanzeige
  396. einstellungenAutofuel()
  397. term.setCursorPos(1, 7) -- setzt den curser in zeile 3
  398. print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes
  399.  
  400. corsor = 8 -- eingabeposition, wird gebraucht bei der zeitanzeige
  401. einstellungenLaengeSeitengang()
  402. term.setCursorPos(1, 8) -- setzt den curser in zeile 3
  403. print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes
  404.  
  405. corsor = 9 -- eingabeposition, wird gebraucht bei der zeitanzeige
  406. einstellungenFackelnSeitengang()
  407. term.setCursorPos(1, 9) -- setzt den curser in zeile 3
  408. print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes
  409.  
  410. corsor = 10 -- eingabeposition, wird gebraucht bei der zeitanzeige
  411. einstellungenEntleerungEnderchest()
  412. term.setCursorPos(1, 10) -- setzt den curser in zeile 3
  413. print("Entleerung Enderchest : " .. entleerungEndertruhe) -- anzeige des Hilfetextes
  414. end
  415.  
  416. --end: eingabe der einstellungen fuer das programm
  417.  
  418. --start: eingabe der einstellungen fuer das programm
  419. function einstellungenEndertruhe()
  420. while true do -- ergibt eine endlosschleife bis man auf return kommt
  421. term.setCursorPos(1, 12) -- setzt den curser hier her
  422. term.clearLine() -- loescht eventuell den Hilfetext
  423. term.setCursorPos(1, 12) -- setzt den curser hier her
  424. print("Slot fuer die Endertruhe") -- anzeige des Hilfetextes
  425.  
  426. term.setCursorPos(1, 3) -- setzt den curser in zeile 3
  427. term.clearLine()
  428. print("Slot Endertruhe :") -- anzeige des Hilfetextes
  429. term.setCursorPos(26, 3) -- setzt position auf eingabe
  430.  
  431.  
  432. local inputstring1 = read() -- auswertung der eingabe
  433. if (tonumber(inputstring1) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  434. slotEndertruhe = tonumber(inputstring1) --macht aus dem Strin ein zahl
  435. if (slotEndertruhe >= 0 and slotEndertruhe <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  436. if (slotEndertruhe == 0) then
  437. slotEndertruhe = 15
  438. end
  439. return -- wenn alles ok ist, beende die eingabe
  440. end
  441. end
  442.  
  443. term.setCursorPos(1, 12) -- setzt den curser hier her
  444. term.clearLine()
  445. print("Nur Slot 1 bis 16 moeglich, 0=Standard")
  446. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  447. end
  448. end
  449.  
  450. --start: eingabe der einstellungen fuer das programm
  451. function einstellungenFackeln1()
  452. while true do -- ergibt eine endlosschleife bis man auf return kommt
  453. gleichslot = 0 -- erstmal keine ueberlagerung
  454. term.setCursorPos(1, 12) -- setzt den curser hier her
  455. term.clearLine() -- loescht eventuell den Hilfetext
  456. term.setCursorPos(1, 12) -- setzt den curser hier her
  457. print("Slot eins fuer die Fackeln") -- anzeige des Hilfetextes
  458.  
  459. term.setCursorPos(1, 4) -- setzt den curser in zeile 3
  460. term.clearLine()
  461. print("Slot eins fuer Fackeln :") -- anzeige des Hilfetextes
  462. term.setCursorPos(26, 4) -- setzt position auf eingabe
  463.  
  464.  
  465. local inputstring = read() -- auswertung der eingabe
  466. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  467. slotFackeln1 = tonumber(inputstring) --macht aus dem Strin ein zahl
  468. if (slotFackeln1 >= 0 and slotFackeln1 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  469. if (slotFackeln1 == 0) then
  470. slotFackeln1 = 16
  471. end
  472.  
  473. if (slotFackeln1 ~= slotEndertruhe) then -- gleicher slot wie die endertruhe
  474. return -- wenn alles ok ist, beende die eingabe
  475. else
  476. gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
  477. end
  478. end
  479. end
  480.  
  481.  
  482. term.setCursorPos(1, 12) -- setzt den curser hier her
  483. term.clearLine()
  484. if (gleichslot == 1) then
  485. print("Slot bereits in Verwendung")
  486. else
  487. print("Nur Slot 1 bis 16 moeglich, 0=Standard")
  488. end
  489. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  490. end
  491. end
  492. --end:
  493. --start: eingabe der einstellungen fuer das programm
  494. function einstellungenFackeln2()
  495. while true do -- ergibt eine endlosschleife bis man auf return kommt
  496. gleichslot = 0 -- erstmal keine ueberlagerung
  497. term.setCursorPos(1, 12) -- setzt den curser hier her
  498. term.clearLine() -- loescht eventuell den Hilfetext
  499. term.setCursorPos(1, 12) -- setzt den curser hier her
  500. print("Slot zwei fuer die Fackeln") -- anzeige des Hilfetextes
  501.  
  502. term.setCursorPos(1, 5) -- setzt den curser in zeile 3
  503. term.clearLine()
  504. print("Slot zwei fuer Fackeln :") -- anzeige des Hilfetextes
  505. term.setCursorPos(26, 5) -- setzt position auf eingabe
  506.  
  507.  
  508. local inputstring = read() -- auswertung der eingabe
  509. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  510. slotFackeln2 = tonumber(inputstring) --macht aus dem Strin ein zahl
  511. if (slotFackeln2 >= 0 and slotFackeln2 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  512. if (slotFackeln2 == 0) then
  513. slotFackeln2 = 12
  514. end
  515.  
  516. if (slotFackeln2 ~= slotEndertruhe and slotFackeln2 ~= slotFackeln1) then -- gleicher slot wie die endertruhe
  517. return -- wenn alles ok ist, beende die eingabe
  518. else
  519. gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
  520. end
  521. end
  522. end
  523.  
  524. term.setCursorPos(1, 12) -- setzt den curser hier her
  525. term.clearLine()
  526. if (gleichslot == 1) then
  527. print("Slot bereits in Verwendung")
  528. else
  529. print("Nur Slot 1 bis 16 moeglich, 0=Standard")
  530. end
  531. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  532. end
  533. end
  534. --end:
  535. --start: eingabe der einstellungen fuer das programm
  536. function einstellungenFackeln3()
  537. while true do -- ergibt eine endlosschleife bis man auf return kommt
  538. term.setCursorPos(1, 12) -- setzt den curser hier her
  539. term.clearLine() -- loescht eventuell den Hilfetext
  540. term.setCursorPos(1, 12) -- setzt den curser hier her
  541. print("Slot drei fuer die Fackeln") -- anzeige des Hilfetextes
  542.  
  543. term.setCursorPos(1, 6) -- setzt den curser in zeile 3
  544. term.clearLine()
  545. print("Slot drei fuer Fackeln :") -- anzeige des Hilfetextes
  546. term.setCursorPos(26, 6) -- setzt position auf eingabe
  547.  
  548.  
  549. local inputstring = read() -- auswertung der eingabe
  550. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  551. slotFackeln3 = tonumber(inputstring) --macht aus dem Strin ein zahl
  552. if (slotFackeln3 >= 0 and slotFackeln3 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  553. if (slotFackeln3 == 0) then
  554. slotFackeln3 = 8
  555. end
  556. if (slotFackeln3 ~= slotEndertruhe and slotFackeln3 ~= slotFackeln1 and slotFackeln3 ~= slotFackeln2) then -- gleicher slot wie die endertruhe
  557. return -- wenn alles ok ist, beende die eingabe
  558. else
  559. gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
  560. end
  561. end
  562. end
  563.  
  564. term.setCursorPos(1, 12) -- setzt den curser hier her
  565. term.clearLine()
  566. if (gleichslot == 1) then
  567. print("Slot bereits in Verwendung")
  568. else
  569. print("Nur Slot 1 bis 16 moeglich, 0=Standard")
  570. end
  571. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  572. end
  573. end
  574. --end:
  575.  
  576. --start: eingabe der einstellungen fuer das programm
  577. function einstellungenAutofuel()
  578. while true do -- ergibt eine endlosschleife bis man auf return kommt
  579. term.setCursorPos(1, 12) -- setzt den curser hier her
  580. term.clearLine() -- loescht eventuell den Hilfetext
  581. term.setCursorPos(1, 12) -- setzt den curser hier her
  582. print("Slot fuer Autofuelaufladung beim Start") -- anzeige des Hilfetextes
  583.  
  584. term.setCursorPos(1, 7) -- setzt den curser in zeile 3
  585. term.clearLine()
  586. print("Slot Autofuelaufladung :") -- anzeige des Hilfetextes
  587. term.setCursorPos(26, 7) -- setzt position auf eingabe
  588.  
  589.  
  590. local inputstring = read() -- auswertung der eingabe
  591. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  592. slotAutofuel = tonumber(inputstring) --macht aus dem Strin ein zahl
  593. if (slotAutofuel >= 0 and slotAutofuel <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  594. if (slotAutofuel == 0) then
  595. slotAutofuel = 13
  596. end
  597. if (slotAutofuel ~= slotEndertruhe and slotAutofuel ~= slotFackeln1 and slotAutofuel ~= slotFackeln2 and slotAutofuel ~= slotFackeln3) then -- gleicher slot wie die endertruhe
  598. return -- wenn alles ok ist, beende die eingabe
  599. else
  600. gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
  601. end
  602. end
  603. end
  604.  
  605. term.setCursorPos(1, 12) -- setzt den curser hier her
  606. term.clearLine()
  607. if (gleichslot == 1) then
  608. print("Slot bereits in Verwendung")
  609. else
  610. print("Nur Slot 1 bis 16 moeglich, 0=Standard")
  611. end
  612. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  613. end
  614. end
  615. --end:
  616.  
  617.  
  618. --start: eingabe der einstellungen fuer das programm
  619. function einstellungenLaengeSeitengang()
  620. while true do -- ergibt eine endlosschleife bis man auf return kommt
  621. term.setCursorPos(1, 12) -- setzt den curser hier her
  622. term.clearLine() -- loescht eventuell den Hilfetext
  623. term.setCursorPos(1, 12) -- setzt den curser hier her
  624. print("Laenge eines Seitenganges") -- anzeige des Hilfetextes
  625.  
  626. term.setCursorPos(1, 8) -- setzt den curser in zeile 3
  627. term.clearLine()
  628. print("Laenge der Seitengaenge:") -- anzeige des Hilfetextes
  629. term.setCursorPos(26, 8) -- setzt position auf eingabe
  630.  
  631.  
  632. local inputstring = read() -- auswertung der eingabe
  633. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  634. laengeSeitengang = tonumber(inputstring) --macht aus dem Strin ein zahl
  635. if (laengeSeitengang >= 0 and laengeSeitengang <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  636. if (laengeSeitengang == 0) then
  637. laengeSeitengang = 5
  638. end
  639. return -- wenn alles ok ist, beende die eingabe
  640. end
  641. end
  642.  
  643. term.setCursorPos(1, 12) -- setzt den curser hier her
  644. term.clearLine()
  645. print("Nur 0 bis 999 moeglich, 0=Standard")
  646. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  647. end
  648. end
  649. --end:
  650.  
  651. --start: eingabe der einstellungen fuer das programm
  652. function einstellungenFackelnSeitengang()
  653. while true do -- ergibt eine endlosschleife bis man auf return kommt
  654. term.setCursorPos(1, 12) -- setzt den curser hier her
  655. term.clearLine() -- loescht eventuell den Hilfetext
  656. term.setCursorPos(1, 12) -- setzt den curser hier her
  657. print("Abstand zwischen Fakeln im Seitengang") -- anzeige des Hilfetextes
  658.  
  659. term.setCursorPos(1, 9) -- setzt den curser in zeile 3
  660. term.clearLine()
  661. print("Fakeln in Seitengaenge :") -- anzeige des Hilfetextes
  662. term.setCursorPos(26, 9) -- setzt position auf eingabe
  663.  
  664.  
  665. local inputstring = read() -- auswertung der eingabe
  666. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  667. fackelnSeitengang = tonumber(inputstring) --macht aus dem Strin ein zahl
  668. if (fackelnSeitengang <= laengeSeitengang) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  669. if (fackelnSeitengang == 0) then
  670. fackelnSeitengang = 0
  671. end
  672. return -- wenn alles ok ist, beende die eingabe
  673. else
  674. term.setCursorPos(1, 12) -- setzt den curser hier her
  675. term.clearLine()
  676. print("Seitenganz waere zu kurz")
  677. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  678. end
  679. end
  680. end
  681. end
  682. --end:
  683.  
  684. --start: eingabe der einstellungen fuer das programm
  685. function einstellungenEntleerungEnderchest()
  686. while true do -- ergibt eine endlosschleife bis man auf return kommt
  687. term.setCursorPos(1, 12) -- setzt den curser hier her
  688. term.clearLine() -- loescht eventuell den Hilfetext
  689. term.setCursorPos(1, 12) -- setzt den curser hier her
  690. print("Anzahl Gaenge bis zur leerung") -- anzeige des Hilfetextes
  691.  
  692. term.setCursorPos(1, 10) -- setzt den curser in zeile 3
  693. term.clearLine()
  694. print("Entleerung Enderchest :") -- anzeige des Hilfetextes
  695. term.setCursorPos(26, 10) -- setzt position auf eingabe
  696.  
  697.  
  698. local inputstring = read() -- auswertung der eingabe
  699. if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
  700. entleerungEndertruhe = tonumber(inputstring) --macht aus dem Strin ein zahl
  701. if (entleerungEndertruhe >= 0 and entleerungEndertruhe <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
  702. if (entleerungEndertruhe == 0) then
  703. entleerungEndertruhe = 3 -- standard
  704. end
  705. return -- wenn alles ok ist, beende die eingabe
  706. end
  707. end
  708.  
  709. term.setCursorPos(1, 12) -- setzt den curser hier her
  710. term.clearLine()
  711. print("Nur 0 bis 999 moeglich, 0=Standard")
  712. sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
  713. end
  714. end
  715. --end:
  716.  
  717.  
  718. --start: Uhrzeit und Tag in Minecraft auslesen und anzeigen
  719. function time()
  720. term.setCursorPos(1, 1) -- position auf Zeit setzten
  721. local day -- locale Variable fuer den Tag in Minecraft
  722. local zeit -- locale Variable fuer die Uhrzeit in Minecraft
  723. day = os.day() -- nicht im Gebrauch!
  724. zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format
  725. if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr
  726. print("Systemhinweis Zeit: " .. zeit) -- vor 10 Uhr, es geht um die laenge
  727. else
  728. print("Systemhinweis Zeit: " .. zeit) -- nach 10 Uhr
  729. end
  730. end
  731. --end: Uhrzeit und Tag in Minecraft auslesen und anzeigen
  732. local function timeshow()
  733. while true do --prueft endlos den status
  734. term.setCursorPos(1, 1) -- position auf Zeit setzten
  735. local day -- locale Variable fuer den Tag in Minecraft
  736. local zeit -- locale Variable fuer die Uhrzeit in Minecraft
  737. day = os.day() -- nicht im Gebrauch!
  738. zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format
  739. if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr
  740. print("Einstellungen Zeit: " .. zeit) -- vor 10 Uhr, es geht um die laenge
  741. else
  742. print("Einstellungen Zeit: " .. zeit) -- nach 10 Uhr
  743. end
  744.  
  745. term.setCursorPos(26, corsor) -- setzt angezeigte curser zurueck zur eingabe
  746. sleep(0.4) -- minecraft minute dauert 0.8 Sekunden
  747. end
  748. end
  749.  
  750. --end: Programmsteuerung eingabe
  751.  
  752. --start: bereinigt den Bildschirm und baut das eingabe Fenster auf
  753. function bildschirmStart()
  754. shell.run("clear") -- l�������¶scht allties auf dem Bildschirm
  755. print("Systemhinweis")
  756. print("=======================================")
  757. term.setCursorPos(1,6)
  758. term.clearLine()
  759. print("---------------------------------------")
  760. term.setCursorPos(1,11)
  761. print("---------------------------------------")
  762. end
  763. --end: bereinigt den Bildschirm und baut das eingabe Fenster auf
  764.  
  765. --start: zeigt an das die Turel fertig sit
  766. function zeigtFertig()
  767. term.setCursorPos(1,10) -- zeile 10 fuer anzeige bereinigen
  768. term.clearLine() -- zeile 10 fuer anzeige bereinigen
  769. print("!!!Fertig - Programm beendet!!!") -- fertig meldung
  770. term.setCursorPos(1,12) -- letzte zeile bereinigen
  771. term.clearLine() -- letzte zeile bereinigen
  772. end
  773. --end: zeigt an das die Turel fertig sit
  774.  
  775. function einstellungenSpeichern()
  776. config = fs.open("strip.conf", "w") -- oeffent die config datei
  777. config.writeLine("slotEndertruhe = " .. slotEndertruhe)
  778. config.writeLine("slotFackeln1 = " .. slotFackeln1)
  779. config.writeLine("slotFackeln2 = " .. slotFackeln2)
  780. config.writeLine("slotFackeln3 = " .. slotFackeln3)
  781. config.writeLine("slotAutofuel = " .. slotAutofuel)
  782. config.writeLine("fackelnSeitengang = " .. fackelnSeitengang)
  783. config.writeLine("laengeSeitengang = " .. laengeSeitengang)
  784. config.writeLine("entleerungEndertruhe = " .. entleerungEndertruhe)
  785. config.close() -- schlie��t die einstellungen
  786. end
  787.  
  788.  
  789. function einstellungenLesen()
  790. config = fs.open("strip.conf", "r")
  791. if config then
  792. line = config.readLine()
  793. slotEndertruhe = tonumber(string.sub(line,24,30))
  794. line = config.readLine()
  795. slotFackeln1 = tonumber(string.sub(line,24,30))
  796. line = config.readLine()
  797. slotFackeln2 = tonumber(string.sub(line,24,30))
  798. line = config.readLine()
  799. slotFackeln3 = tonumber(string.sub(line,24,30))
  800. line = config.readLine()
  801. slotAutofuel = tonumber(string.sub(line,24,30))
  802. line = config.readLine()
  803. fackelnSeitengang = tonumber(string.sub(line,24,30))
  804. line = config.readLine()
  805. laengeSeitengang = tonumber(string.sub(line,24,30))
  806. line = config.readLine()
  807. entleerungEndertruhe = tonumber(string.sub(line,24,30))
  808. config.close()
  809. else
  810. slotEndertruhe = 15 -- Slot fuer die Endertruhe
  811. slotFackeln1 = 16 -- Slot fuer Fakeln 1
  812. slotFackeln2 = 12 -- Slot fuer Fakeln 2 stop
  813. slotFackeln3 = 8 -- Slot fuer Fakeln 3 stop
  814. slotAutofuel = 13 -- Slot fuer Autofuel
  815. fackelnSeitengang = 0 -- fackeln im seitengang, 0=keine
  816. laengeSeitengang = 5 -- laenge des seitengangs 0 = 5
  817. entleerungEndertruhe = 3 --nach wieielen gaengen wird die Endertruhe geleert, Standart 3 stop
  818. end
  819. end
  820.  
  821.  
  822. --**Hauptprogrammsteuerung
  823. --Setzen der globale Variablen (diese sind ueberall verfuegbar)
  824. endertruhe = 0 -- Endertruhe = nein
  825. fackeln = 0 -- Fackeln = 0
  826. ganganzahl = 0 -- Anzahl Gaenge = 0
  827. fuellevel = 0 -- Fuel-Level = 0
  828. einstellung = 0 -- keine einstellungen vornehmen
  829. slotEndertruhe = 0 -- Slot fuer die Endertruhe
  830. slotFackeln1 = 0 -- Slot fuer Fakeln 1
  831. slotFackeln2 = 0 -- Slot fuer Fakeln 2 stop
  832. slotFackeln3 = 0 -- Slot fuer Fakeln 3 stop
  833. fakelanzahl1 = 0 -- anzahl der fakeln in slot 1 nach dem start
  834. fakelanzahl2 = 0 -- anzahl der fakeln in slot 2 nach dem start
  835. fakelanzahl3 = 0 -- anzahl der fakeln in slot 3 nach dem start
  836. slotAutofuel = 0 -- Slot fuer Autofuel
  837. fackelnSeitengang = 0 -- fackeln im seitengang, 0=keine
  838. laengeSeitengang = 0 -- laenge des seitengangs 0 = 5
  839. entleerungEndertruhe = 0 --nach wieielen gaengen wird die Endertruhe geleert, Standart 3
  840. slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"}
  841. corsor = 0 -- line of the cursor
  842. -- bereinigt den Bildschirm und baut das eingabe Fenster auf
  843. bildschirmStart()
  844. einstellungenLesen()
  845. -- fuerht 2 funktionen gleichzeitig aus, eingab und aktuellisuerung der Fakeln, Endertruhe, und Fullevel
  846.  
  847. parallel.waitForAny(eingabeTunnellaenge, checkStatus)
  848. while (einstellung == 1) do
  849. parallel.waitForAny(einstellungen,timeshow) -- bearbeitung der einstellung
  850. einstellungenSpeichern()
  851. bildschirmStart()
  852. einstellungenLesen()
  853. parallel.waitForAny(eingabeTunnellaenge, checkStatus)
  854. end
  855.  
  856. --Laed die Turtel vor dem start wieder auf wen etwas in slot 13 abgelegt wurde und merke die fakeln
  857. turtle.select(slotAutofuel) -- Slot 13 auswaehlen
  858. turtle.refuel(turtle.getItemCount(slotAutofuel)) -- auffuellung mit der anzahl Items in Slot 13
  859.  
  860. fakelanzahl1 = turtle.getItemCount(slotFackeln1)
  861. fakelanzahl2 = turtle.getItemCount(slotFackeln2)
  862. fakelanzahl3 = turtle.getItemCount(slotFackeln3)
  863.  
  864.  
  865. -- hier wird der tunnel gegraben
  866. if (ganganzahl ~= 0) then -- mach das nur wen du auch wirklich was gemacht hast
  867. tunnel() -- vielleicht so oder doch ueber einen extra status anzeige
  868. back() -- hier komm die turtel wieder zurueck zum ausgangspunkt
  869. end
  870. --zeit an das die Turtel fertig ist
  871. zeigtFertig()
Add Comment
Please, Sign In to add comment