Advertisement
100xdonaldx001

Turtle Stripmine Program (Ger)

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