Guest User

uUkZBnqD

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