Advertisement
Guest User

Untitled

a guest
Sep 19th, 2015
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.52 KB | None | 0 0
  1. -- ** Stripmining Programm **
  2. -- ** © 2013 SemOnLP **
  3. -- **************************
  4. -- Changelog
  5. -- 09.09.13 - V1.0 = Veroeffentlicht
  6. -- 12.02.14 - V2.0 = Einstellungen speichern, neue Anzeige
  7. -- 23.07.14 - V2.1 = Fehler beim Fackeln setzten im Seitengang
  8.  
  9. --start: block der verhindert das der hautpfad unterbrochen wird
  10.  
  11.  
  12. local component = require("component")
  13. local shell = require("shell")
  14. local term = require("term")
  15. local fs = require("filesystem")
  16. local robot = require("robot")
  17. local parallel = require("parallel")
  18.  
  19. function Sicherheitspfad()
  20. if robot.detectDown() == false then -- wen kein block unter der turel ist
  21. robot.select(1) -- slot 1 auswaehlen
  22. robot.placeDown() -- und unter die turel setzten
  23. end
  24. end
  25.  
  26.  
  27. --end: block der verhindert das der hautpfad unterborchen wird
  28.  
  29. --start: hier wird der Hauptgang gegraben
  30. function Mittelgang()
  31. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  32. Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  33. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  34.  
  35. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  36. Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  37. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  38.  
  39. Fackel("mitte") -- fackel auf der rechten seite setzten
  40. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  41. Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
  42. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  43. end
  44. --end: hier wird der Hauptgang gegraben
  45.  
  46. --start: baut einen Seitengang
  47. function Seitengang()
  48. for i = 1, laengeSeitengang, 1 do -- grabe dich in den gang
  49. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  50. KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
  51. end
  52.  
  53. robot.turnRight() -- umdrehen
  54. robot.turnRight() -- umdrehen
  55. for i = laengeSeitengang, 1, -1 do -- komm zur mitte zurueck
  56. if (i % fackelnSeitengang == 0 and fackelnSeitengang ~= 0) then -- wenn fackeln gesetzt werden sollen und diese dem abastand entsprechen
  57. Fackel("seite")
  58. end
  59. NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
  60. end
  61. end
  62. --end: baut einen Seitengang
  63.  
  64. --start: geht 1 block nach vorne
  65. function NachVorne()
  66. while robot.detect() do -- prueft ob ein block vor der turel ist
  67. robot.swing()
  68. os.sleep(0.25)
  69. end
  70.  
  71. while(robot.forward() == false) do --wenn er nicht fahren konnte
  72. robot.swing() -- einmal abbauen
  73. robot.swing() -- einmal zuschlagen
  74. end
  75. end
  76. --end: geht 1 block nach vorne
  77.  
  78. --start: beim abbauen uebersich ob kies nachfaell, wen ja solange abbauen bis nichts mehr kommt
  79. function KiesUp()
  80. while robot.detectUp() do -- prueft ob ueber ihm noch etwas ist
  81. robot.swingUp() -- haut den block ueber sich ab
  82. os.sleep(0.25) -- wartet, funktioniert nur wen der block direck nachfaellt ist ein block
  83. end
  84. end
  85. --end: beim abbauen uebersich ob kis nachfaell, wen ja solange abbauen bis nichts mehr kommt
  86.  
  87. --start: plaziert die Fackel
  88. function Fackel(gang) -- ueber gibt gang oder seite
  89. if (fakelanzahl1 ~= 0) then
  90. robot.select(slotFackeln1) -- waehlt die Fackeln aus
  91. fakelanzahl1 = fakelanzahl1 - 1
  92. elseif (fakelanzahl2 ~= 0) then
  93. slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  94. robot.select(slotFackeln2) -- waehlt die Fackeln aus
  95. fakelanzahl2 = fakelanzahl2 - 1
  96. elseif (fakelanzahl3 ~= 0) then
  97. slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  98. slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  99. robot.select(slotFackeln3) -- waehlt die Fackeln aus
  100. fakelanzahl3 = fakelanzahl3 - 1
  101. else
  102. slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  103. slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  104. slotFackeln3 = 0 -- setzt die slotz zurueck zum entleeren der kiste
  105. return -- keine fackeln mehr mach nichts
  106. end
  107.  
  108. if (gang == "seite") then
  109. robot.placeUp() -- plaziert die Fackel ueber sich
  110. robot.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  111. else
  112. if (robot.back()) then-- plaziert die fackel wen er 1 block zurueck fahren konnte
  113. robot.placeUp() -- plaziert die Fackel ueber sich
  114. NachVorne() -- geht wieder nach vorne
  115. end
  116. end
  117. robot.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  118. end
  119. --end: plaziert die Fackel
  120.  
  121. --start: Steuerung fuer Hauptgang und Seitengang
  122. function Strip()
  123. Mittelgang() -- hier wird der Hauptgang gegraben
  124. robot.turnRight() -- startposition fuer die linke seite
  125. Seitengang() -- graebt den ersten seitengang und kommt zurueck zur mitte
  126. Seitengang() -- graebt den zweiten seitengang und kommt zurueck zur mitte
  127. end
  128. --end: Steuerung fuer Hauptgang und Seitengang
  129.  
  130. --start: entleere das inventar in die endertruhe
  131. function enderTruhe()
  132. if (endertruhe == 0) then -- wen keine kiste ausgewaehlt ist nicht in endertruhe leeren
  133. return
  134. end
  135. while robot.detect() do -- die Truhe braucht platz um hingestell werden zu koennen also wird solange gegraben bis platz da ist
  136. robot.swing()
  137. os.sleep(0.5)
  138. end
  139. robot.select(slotEndertruhe) -- Truhe auswaehlen
  140. robot.place() -- Truhe plazieren
  141. for i = 1,16 do -- k dient hier als zaehler um jeden platz leer zu machen
  142. robot.select(i)
  143. if (robot.count(i) == 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then -- stop beachte die fackeln umzusetzend
  144. break -- hier wird abgebrochen wenn der slot leer ist
  145. -- eine schneller entladung der kist ist somit gegeben ^^
  146. elseif (robot.count(i) ~= 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then
  147. robot.drop() -- legt die items in aus dem slot in die truhe
  148. end
  149. end
  150. robot.select(slotEndertruhe) -- waehlt slot 15 aus
  151. robot.swing() -- und nimmt die truhe wieder auf
  152. robot.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
  153. end
  154. --end: entleere das inventar in die endertruhe
  155.  
  156. --start: graebt den Tunnel solange wie eingegeben wurde
  157. function tunnel()
  158. statusBildschirm(0) -- bereinigt den Bildschirm beim Start des Tunnelgrabens
  159. kistenabstand = entleerungEndertruhe -- nach diesem gang wird das 1 mal die truhe geleert
  160. for aktuellergang = 1, ganganzahl, 1 do -- schleife die soviele gaenge macht wie eingeben
  161. Strip() -- hier wird der hauptgang mit einem Tunnel links und rechts gegraben
  162. -- entwerder nur nach links drehen oder nach links drehen und die kiste setzten
  163. if (aktuellergang == kistenabstand and aktuellergang ~= ganganzahl) then
  164. robot.turnLeft() -- gehe einmal nach links
  165. kistenabstand = kistenabstand + entleerungEndertruhe -- kistenabstand wieder 3 hoch
  166. enderTruhe() -- entleer die in die Enertrue
  167. elseif (aktuellergang == ganganzahl) then -- letzter gang nach rechts gehen und in die Truhe entlehren
  168. robot.turnRight() -- zurueck in gang drehen fuer die fahrt zur Ausgangsposition
  169. enderTruhe() -- es war der letzte gang, sprich stell die kist das letzte mal und entleeren
  170. else
  171. robot.turnLeft() -- gehe nur einmal nach lings und mach mit dem hauptgan weiter
  172. end
  173. statusBildschirm(aktuellergang) -- Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde (aktuellergang muss uebergeben werden)
  174. end
  175. end
  176. --end: graebt den Tunnel solange wie eingegeben wurde
  177.  
  178. --start: Zurueck zur Ausgangsposition
  179. function back()
  180. for a = 1,ganganzahl * 3 do
  181. NachVorne()
  182. end
  183. end
  184. --end: Zurueck zur Ausgangsposition
  185.  
  186. --start: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
  187. function statusBildschirm(aktuellergang)
  188. -- start: Zeigt das Fuel-Level an
  189. term.setCursor( 1, 3)
  190. term.clearLine()
  191.  
  192. term.setCursor( 1, 4)
  193. term.clearLine()
  194. if (endertruhe == 1) then
  195. print("Endertruhe: Ja")
  196. else
  197. print("Endertruhe: Nein")
  198. end
  199.  
  200. -- start: Zeigt die anzahl der Fakeln an
  201. term.setCursor( 1, 5)
  202. term.clearLine()
  203. fackeln = fakelanzahl1 + fakelanzahl2 + fakelanzahl3
  204. print("Fackeln : " .. fackeln)
  205.  
  206. term.setCursor(1,7)
  207. term.clearLine()
  208. if (aktuellergang > 0) then
  209. print("Gang " .. aktuellergang .. " von " .. ganganzahl .. " wurde fertiggestellt!")
  210. else -- wen das programm startet
  211. term.setCursor(1,8)
  212. term.clearLine()
  213. term.setCursor(1,9)
  214. term.clearLine()
  215. term.setCursor(1,10)
  216. term.clearLine()
  217. term.setCursor(1,12)
  218. term.clearLine()
  219. robot.select(1) -- waehlt zum start slot 1 aus
  220. end
  221. end
  222. --end: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
  223.  
  224.  
  225. --START: Programmsteuerung eingabe
  226. --start: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
  227. local function checkStatus()
  228. slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"}
  229. slotsAnzeige[slotEndertruhe] = "e"
  230. slotsAnzeige[slotFackeln1] = "f"
  231. slotsAnzeige[slotFackeln2] = "f"
  232. slotsAnzeige[slotFackeln3] = "f"
  233. slotsAnzeige[slotAutofuel] = "a"
  234.  
  235. local blink = 0 -- wird benoetigt fuer das blinken der Warnung das das Fuellevel nidrig ist
  236. while true do --prueft endlos den status
  237. time() -- zeit die Uhrzeit oben rechts an
  238.  
  239. -- start: Zeigt das Fuel-Level an
  240. term.setCursor( 1, 3)
  241. term.clearLine()
  242. -- start: Zeigt die aufladung des Fuel-Level an
  243. term.setCursor( 1, 7)
  244. term.clearLine()
  245. term.clearLine()
  246. ladeeinheiten = robot.count(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.setCursor( 1, 4)
  272. term.clearLine()
  273. endertruhe = robot.count(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.setCursor( 1, 5)
  288. term.clearLine()
  289. fackeln = robot.count(tonumber(slotFackeln1)) + robot.count(tonumber(slotFackeln2)) + robot.count(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.setCursor(38,3)
  300. print("!a")
  301. term.setCursor(38,4)
  302. print("!e")
  303. term.setCursor(38,5)
  304. print("!f")
  305. term.setCursor(36, 12) -- setzt angezeigte curser zurueck zur eingabe
  306. os.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.setCursor(1, 12) -- setzt den curser hier her
  315. term.clearLine() -- loescht eventuell den Hilfetext
  316. term.setCursor(1, 12) -- setzt den curser hier her
  317. print("Anzahl Gaenge? (e = Einstellungen):") -- anzeige des Hilfetextes
  318.  
  319. term.setCursor(36, 12) -- setzt position auf eingabe
  320.  
  321. local inputstring = io.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.setCursor(1, 12) -- setzt den curser hier her
  338. term.clearLine()
  339. print("0 = Fakelanzahl oder 1-999 moeglich")
  340. os.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.setCursor(1,i) -- zeile fuer anzeige bereinigen
  350. term.clearLine() -- zeile fuer anzeige bereinigen
  351. end
  352.  
  353. term.setCursor(1,12) -- zeile fuer anzeige bereinigen
  354. term.clearLine() -- zeile fuer anzeige bereinigen
  355.  
  356.  
  357. -- anzeige fuer die einstellungen
  358. term.setCursor(1, 3) -- setzt den curser in zeile 3
  359. print("Slot Endertruhe : " .. slotEndertruhe) -- anzeige des Hilfetextes
  360. term.setCursor(1, 4) -- setzt den curser in zeile 3
  361. print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes
  362. term.setCursor(1, 5) -- setzt den curser in zeile 3
  363. print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes
  364. term.setCursor(1, 6) -- setzt den curser in zeile 3
  365. print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes
  366. term.setCursor(1, 7) -- setzt den curser in zeile 3
  367. print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes
  368. term.setCursor(1, 8) -- setzt den curser in zeile 3
  369. print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes
  370. term.setCursor(1, 9) -- setzt den curser in zeile 3
  371. print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes
  372. term.setCursor(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.setCursor(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.setCursor(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.setCursor(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.setCursor(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.setCursor(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.setCursor(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.setCursor(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.setCursor(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.setCursor(1, 12) -- setzt den curser hier her
  422. term.clearLine() -- loescht eventuell den Hilfetext
  423. term.setCursor(1, 12) -- setzt den curser hier her
  424. print("Slot fuer die Endertruhe") -- anzeige des Hilfetextes
  425.  
  426. term.setCursor(1, 3) -- setzt den curser in zeile 3
  427. term.clearLine()
  428. print("Slot Endertruhe :") -- anzeige des Hilfetextes
  429. term.setCursor(26, 3) -- setzt position auf eingabe
  430.  
  431.  
  432. local inputstring1 = io.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.setCursor(1, 12) -- setzt den curser hier her
  444. term.clearLine()
  445. print("Nur Slot 1 bis 16 moeglich, 0=Standard")
  446. os.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.setCursor(1, 12) -- setzt den curser hier her
  455. term.clearLine() -- loescht eventuell den Hilfetext
  456. term.setCursor(1, 12) -- setzt den curser hier her
  457. print("Slot eins fuer die Fackeln") -- anzeige des Hilfetextes
  458.  
  459. term.setCursor(1, 4) -- setzt den curser in zeile 3
  460. term.clearLine()
  461. print("Slot eins fuer Fackeln :") -- anzeige des Hilfetextes
  462. term.setCursor(26, 4) -- setzt position auf eingabe
  463.  
  464.  
  465. local inputstring = io.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.setCursor(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. os.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.setCursor(1, 12) -- setzt den curser hier her
  498. term.clearLine() -- loescht eventuell den Hilfetext
  499. term.setCursor(1, 12) -- setzt den curser hier her
  500. print("Slot zwei fuer die Fackeln") -- anzeige des Hilfetextes
  501.  
  502. term.setCursor(1, 5) -- setzt den curser in zeile 3
  503. term.clearLine()
  504. print("Slot zwei fuer Fackeln :") -- anzeige des Hilfetextes
  505. term.setCursor(26, 5) -- setzt position auf eingabe
  506.  
  507.  
  508. local inputstring = io.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.setCursor(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. os.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.setCursor(1, 12) -- setzt den curser hier her
  539. term.clearLine() -- loescht eventuell den Hilfetext
  540. term.setCursor(1, 12) -- setzt den curser hier her
  541. print("Slot drei fuer die Fackeln") -- anzeige des Hilfetextes
  542.  
  543. term.setCursor(1, 6) -- setzt den curser in zeile 3
  544. term.clearLine()
  545. print("Slot drei fuer Fackeln :") -- anzeige des Hilfetextes
  546. term.setCursor(26, 6) -- setzt position auf eingabe
  547.  
  548.  
  549. local inputstring = io.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.setCursor(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. os.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.setCursor(1, 12) -- setzt den curser hier her
  580. term.clearLine() -- loescht eventuell den Hilfetext
  581. term.setCursor(1, 12) -- setzt den curser hier her
  582. print("Slot fuer Autofuelaufladung beim Start") -- anzeige des Hilfetextes
  583.  
  584. term.setCursor(1, 7) -- setzt den curser in zeile 3
  585. term.clearLine()
  586. print("Slot Autofuelaufladung :") -- anzeige des Hilfetextes
  587. term.setCursor(26, 7) -- setzt position auf eingabe
  588.  
  589.  
  590. local inputstring = io.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.setCursor(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. os.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.setCursor(1, 12) -- setzt den curser hier her
  622. term.clearLine() -- loescht eventuell den Hilfetext
  623. term.setCursor(1, 12) -- setzt den curser hier her
  624. print("Laenge eines Seitenganges") -- anzeige des Hilfetextes
  625.  
  626. term.setCursor(1, 8) -- setzt den curser in zeile 3
  627. term.clearLine()
  628. print("Laenge der Seitengaenge:") -- anzeige des Hilfetextes
  629. term.setCursor(26, 8) -- setzt position auf eingabe
  630.  
  631.  
  632. local inputstring = io.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.setCursor(1, 12) -- setzt den curser hier her
  644. term.clearLine()
  645. print("Nur 0 bis 999 moeglich, 0=Standard")
  646. os.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.setCursor(1, 12) -- setzt den curser hier her
  655. term.clearLine() -- loescht eventuell den Hilfetext
  656. term.setCursor(1, 12) -- setzt den curser hier her
  657. print("Abstand zwischen Fakeln im Seitengang") -- anzeige des Hilfetextes
  658.  
  659. term.setCursor(1, 9) -- setzt den curser in zeile 3
  660. term.clearLine()
  661. print("Fakeln in Seitengaenge :") -- anzeige des Hilfetextes
  662. term.setCursor(26, 9) -- setzt position auf eingabe
  663.  
  664.  
  665. local inputstring = io.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.setCursor(1, 12) -- setzt den curser hier her
  675. term.clearLine()
  676. print("Seitenganz waere zu kurz")
  677. os.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.setCursor(1, 12) -- setzt den curser hier her
  688. term.clearLine() -- loescht eventuell den Hilfetext
  689. term.setCursor(1, 12) -- setzt den curser hier her
  690. print("Anzahl Gaenge bis zur leerung") -- anzeige des Hilfetextes
  691.  
  692. term.setCursor(1, 10) -- setzt den curser in zeile 3
  693. term.clearLine()
  694. print("Entleerung Enderchest :") -- anzeige des Hilfetextes
  695. term.setCursor(26, 10) -- setzt position auf eingabe
  696.  
  697.  
  698. local inputstring = io.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.setCursor(1, 12) -- setzt den curser hier her
  710. term.clearLine()
  711. print("Nur 0 bis 999 moeglich, 0=Standard")
  712. os.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.setCursor(1, 1) -- position auf Zeit setzten
  721.  
  722. local zeit -- locale Variable fuer die Uhrzeit in Minecraft
  723.  
  724. zeit = os.date("%H:%M:%S", os.time()) -- 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.setCursor(1,1) -- position auf Zeit setzten
  735.  
  736. local zeit -- locale Variable fuer die Uhrzeit in Minecraft
  737.  
  738. zeit = os.date("%H:%M:%S", os.time()) -- 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.setCursor(26, corsor) -- setzt angezeigte curser zurueck zur eingabe
  746. os.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.execute("clear")
  755. print("Systemhinweis")
  756. print("=======================================")
  757. term.setCursor(1,6)
  758. term.clearLine()
  759. print("---------------------------------------")
  760. term.setCursor(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.setCursor(1,10) -- zeile 10 fuer anzeige bereinigen
  768. term.clearLine() -- zeile 10 fuer anzeige bereinigen
  769. print("!!!Fertig - Programm beendet!!!") -- fertig meldung
  770. term.setCursor(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. fackelnSeitengang = 0 -- fackeln im seitengang, 0=keine
  839. laengeSeitengang = 0 -- laenge des seitengangs 0 = 5
  840. entleerungEndertruhe = 0 -- nach wieielen gaengen wird die Endertruhe geleert, Standart 3
  841. slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"}
  842. corsor = 0 -- line of the cursor
  843. -- bereinigt den Bildschirm und baut das eingabe Fenster auf
  844. bildschirmStart()
  845. einstellungenLesen()
  846. -- fuerht 2 funktionen gleichzeitig aus, eingab und aktuellisuerung der Fakeln, Endertruhe, und Fullevel
  847.  
  848.  
  849. parallel.waitForAny(eingabeTunnellaenge, checkStatus)
  850. while (einstellung == 1) do
  851. parallel.waitForAny(einstellungen,timeshow) -- bearbeitung der einstellung
  852. einstellungenSpeichern()
  853. bildschirmStart()
  854. einstellungenLesen()
  855. parallel.waitForAny(eingabeTunnellaenge, checkStatus)
  856. end
  857.  
  858.  
  859. --Laed die Turtel vor dem start wieder auf wen etwas in slot 13 abgelegt wurde und merke die fakeln
  860. robot.select(slotAutofuel) -- Slot 13 auswaehlen
  861.  
  862.  
  863. fakelanzahl1 = robot.count(slotFackeln1)
  864. fakelanzahl2 = robot.count(slotFackeln2)
  865. fakelanzahl3 = robot.count(slotFackeln3)
  866.  
  867.  
  868. -- hier wird der tunnel gegraben
  869. if (ganganzahl ~= 0) then -- mach das nur wen du auch wirklich was gemacht hast
  870. tunnel() -- vielleicht so oder doch ueber einen extra status anzeige
  871. back() -- hier komm die turtel wieder zurueck zum ausgangspunkt
  872. end
  873. --zeit an das die Turtel fertig ist
  874. zeigtFertig()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement