Advertisement
Guest User

Untitled

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