Turtle Script Sammlung

Dieses Thema wurde von burzi86 gestartet, 24. Feb. 2013.

  1. burzi86

    burzi86 Aktives Mitglied

    Hey zusammen

    Da ich gerade selbst bisschen mit Turtle spiele kam mir die Idee das wir ja die Scripts austauschen könnten und (wahrscheinlich vor allem ich) noch etwas von anderen Scripts lernen können.

    Hier mal ein paar Scripts von mir:

    1. Script Quarrygerüst abbau (Gerüst muss noch in Takt sein)
    Das Turtle einfach vor eine Ecke des Gerüstes abstellen. Egal welche.
    Das Turtle braucht 1 Gerüst im 1. Slot damit sie funtioniert.
    Code:
    print("***Quarry-Geruest abbau Program***")
    print("Das Turtle vor eine Ecke stellen.")
     
    function u()
    repeat digu()
    until turtle.up() == true
    end
    function d()
    repeat digd()
    until turtle.down() == true
    end
    function f()
    repeat dig()
    until turtle.forward() == true
    end
    function l() turtle.turnLeft() end
    function r() turtle.turnRight() end
    function dig() turtle.dig() end
    function digu() turtle.digUp() end
    function digd() turtle.digDown() end
    function sel(x) turtle.select(x) end
    function comp() return turtle.compare() end
    function compu() return turtle.compareUp() end
    function compd() return turtle.compareDown() end
    function gic(x) return turtle.getItemCount(x) end
     
    hoehe = 0
    function ho() hoehe = hoehe + 1 end
    laenge = 0
    function la() laenge = laenge + 1 end
    breite = 0
    function br() breite = breite + 1 end
     
    start_v = 0
     
    function vertikal()
      if start_v == 0 then
    	for i=1, hoehe, 1 do u() end
    	for i=1, hoehe, 1 do d() end
      elseif start_v == 1 then
    	for i=1, hoehe, 1 do d() end
    	for i=1, hoehe, 1 do u() end
      end
    end
     
    function start()
      if comp() then
    	f()
    	if compu() then start_v = 0 end
    	if compd() then start_v = 1 end
    	l()
    	if comp() then abbau()
    	else
    	  r()
    	  if comp() then abbau() end
    	end
      else print("Kein Geruest in der naehe, bitte neu setzen!") end
    end
     
    function abbau()
      if start_v == 0 then
    	while compu() do u() ho() end
    	for i=1, hoehe, 1 do d() end
      elseif start_v == 1 then
    	while compd() do d() ho() end
    	for i=1, hoehe, 1 do u() end
      end
      while comp() do f() la() end
      vertikal()
      r()
      while comp() do f() br() end
     
      while comp() do f() la() end
      vertikal()
      r()
      for i=1, laenge, 1 do f() end
      vertikal()
      r()
      for i=1, breite, 1 do f() end
      if start_v == 0 then
    	for i=1, hoehe, 1 do u() end
      elseif start_v == 1 then
    	for i=1, hoehe, 1 do d() end
      end
      r()
      for i=1, laenge, 1 do f() end
      r()
      for i=1, breite, 1 do f() end
      r()
      for i=1, laenge, 1 do f() end
      r()
      for i=1, breite, 1 do f() end
      if start_v == 1 then
    	for i=1, hoehe, 1 do u() end
      elseif start_v == 0 then
    	for i=1, hoehe, 1 do d() end
      end
    end
     
    sel(1)
    if gic(1) > 0 then
      start()
    else
      print("Bitte lege mir ein Geruest in den 1.Slot zur Erkennung des Geruestes.")
      print("Um fortzufahren 'Enter' druecken...")
      local sEvent, param = os.pullEvent("key")
      if sEvent == "key" then
    if param == 28 then
      start()
    end
      end
    end
    
    2. Script Gerüst abbruch (Fals das Gerüst nicht mehr Intakt ist)
    Ist nicht nur für Gerüste gedacht. Einfach das was man abbauen will in den 1. Slot des Turtles packen.
    Das Turtle folgt solange den Blöcken bis es keine mehr finden kann.
    Es baut nur Blöcke ab die aneinander sind. Es kann also nicht an eine Vergabelung zurück finden und das dort auch noch abbauen.
    Code:
    function f()
    repeat dig()
    until turtle.forward() == true
    end
    function u()
    repeat digu()
    until turtle.up() == true
    end
    function d()
    repeat digd()
    until turtle.down() == true
    end
    function l() turtle.turnLeft() end
    function r() turtle.turnRight() end
    function dig() turtle.dig() end
    function digu() turtle.digUp() end
    function digd() turtle.digDown() end
    function gic(x) return turtle.getItemCount(x) end
    function comp() return turtle.compare() end
    function compu() return turtle.compareUp() end
    function compd() return turtle.compareDown() end
    function sel(x) turtle.select(x) end
     
    function geradeaus()
    while comp() do f() end
    search()
    end
    function hoch()
    while compu() do u() end
    search()
    end
    function runter()
    while compd() do d() end
    search()
    end
     
    function ende()
    l() r() r() l() u() d()
    end
     
    function search()
    if comp() then geradeaus()
    else l()
      if comp() then geradeaus()
      else l()
      if comp() then geradeaus()
      else l()
    	if comp() then geradeaus()
    	else
    	if compu() then hoch()
    	else
    	  if compd() then runter() else ende() end
    	end
    	end
      end
      end
    end
    end
     
    sel(1)
    if gic(1) > 0 then
    search()
    else ende()
    end
    3. Script Quarry setzten (Ist zum setzten der Fackeln für im Untergrund oder Wasser gedacht)
    Das Turtle gräbt sich den Weg von Ecke zu Ecke und setzt die Fackeln und baut darum herum einen Schutz das Wasser die Fackel nicht zerstören könnte.
    1. Slot Irgend ein fester Block der nicht fällt.
    2. Slot 3 Landmarks (Das 4. könnt ihr am Startpunkt selbst setzten.)
    Die Zahl auf der ersten Zeile im Code ist für die grösse des Quarry. In diesem Fall 60x60
    Code:
    square = 60
     
    function dec() return turtle.detect() end
    function decu() return turtle.detectUp() end
    function f()
    repeat dig()
    until turtle.forward() == true
    end
    function b()
    repeat
    until turtle.back() == true
    end
    function l() turtle.turnLeft() end
    function r() turtle.turnRight() end
    function dig() turtle.dig() end
    function pu() turtle.placeUp() end
    function p() turtle.place() end
    function sel(x) turtle.select(x) end
     
    function securet()
    if not(decu()) then sel(1) pu() end
    end
    function securef()
    if not(dec()) then sel(1) p() end
    end
    function torch()
    sel(2) p()
    end
     
    function placetorch()
    securet()
    securef()
    l()
    securef()
    r() r()
    securef()
    l() b()
    securet()
    torch()
    l()
    securef()
    r() r()
    securef()
    l() b()
    securef()
    end
     
    function around()
    l() f() f() r() f() f() l()
    end
     
    function forward(x)
    for i=2, x, 1 do
      f()
    end
    end
     
     
    for c=1, 4, 1 do
    if c == 1 then x = square else x = square -2 end
    forward(x)
    if c < 4 then
      placetorch()
      around()
    end
    end
    
    4. Script Quarry in freier Luft
    Einfach Turtle absetzten 4 Erde oder so in 1.Slot und 4 Fackel in den 2. Slot und go =)
    Code:
    print("***Quarry setzten (Trocken)***")
    print("Nur wen nicht mit Fluessigkeiten gerechnet wird!")
     
    square = 0
     
    function f()
    repeat turtle.dig()
    until turtle.forward() == true
    end
    function b()
    repeat
    until turtle.back() == true
    end
    function l() turtle.turnLeft() end
    function r() turtle.turnRight() end
    function p()
    repeat turtle.dig()
    until turtle.place() == true
    end
    function sel(x) turtle.select(x) end
    function gic(x) return turtle.getItemCount(x) end
     
    function placetorch()
    if turtle.detect()
    then b () sel(2) p()
    else sel(1) p() b() sel(2) p()
    end
    end
     
    function around()
    l() f() r() f() l()
    end
     
    function forward(x)
    for i=1, x, 1 do
      f()
    end
    end
     
    function format()
      print("")
      print("")
    print("Wie gross soll eine Seite des Quarry sein?")
      square = io.read()
      square = tonumber(square)
    end
     
    function fortfahren()
      print("Um fortzufahren 'Enter' druecken...")
      local sEvent, param = os.pullEvent("key")
      if sEvent == "key" then
    if param == 28 then
      print("")
      print("")
      setup()
    end
      end
    end
     
    function start()
      for c=1, 4, 1 do
      if c == 1 then x = square else x = square -1 end
      forward(x)
      placetorch()
      if c < 4 then around() end
      end
    end
     
    function setup()
    if gic(1) > 3 then
      if gic(2) > 3 then
    	 format()
    	 start()
      else  print("Ich habe noch nicht genug Landmarks im 2.Slot!") fortfahren() end
    else print("Ich brauche noch feste Bloecke im 1. Slot!") fortfahren() end
    end
     
    if square == 0 then setup() end
    
    5. Script Zur einfachen Steuerung des Turtle
    Einfach das Programm aufstarten und schon läst sich das Turtle bequem mit den Pfeiltasten und Bild Auf/Ab steuern =)

    Code:
    print("***Vereinfachte Turtle-Steuerung***")
    print("Tasten zur Steuerung:")
    print("Pfeiltasten fuer Himmelrichtung")
    print("Page Up/Down fuer Hoch/Runter")
    print("Taste 'A' fuer abbauen")
    print("Taste 'S' fuer Block setzten")
    print("Enter zum beenden des Programs")
    print("")
     
    while true do
    local sEvent, param = os.pullEvent("key")
      if sEvent == "key" then
    if param == 30 then
    print("**Grabe wohin?")
     local sEvent1, param1 = os.pullEvent("key")
     if sEvent1 == "key" then
       if param1 == 200 then
    	 print("... geradeaus!") 
    print("")
    	turtle.dig()
       end
     end
     if sEvent1 == "key" then
       if param1 == 201 then
    	print("... hoch!") 
    print("")
    	turtle.digUp()
       end
     end
     if sEvent1 == "key" then
       if param1 == 209 then
    	print("... runter!")
    print("")
    	turtle.digDown()
       end
     end
    end
    if param == 31 then
    print("**Welcher Slot?")
    sleep(1)
    term.clearLine()
      slot = io.read()
      slot = tonumber(slot)
       if not(slot == 0) and not(turtle.getItemCount(slot) == 0) then
    	turtle.select(slot)
    print("**Wohin plazieren?")
     local sEvent3, param3 = os.pullEvent("key")
     if sEvent3 == "key" then
       if param3 == 200 then
    	print("... geradeaus!")
    print("")
    	turtle.place()
       end
     end
     if sEvent3 == "key" then
       if param3 == 201 then
    	print("... hoch!") 
    print("")
    	turtle.placeUp()
       end
     end
     if sEvent3 == "key" then
       if param3 == 209 then
    	print("... runter!") 
    print("")
    	turtle.placeDown()
       end
     end
     else print("Kein Item in Slot, oder falscher Slot!")
    print("")
     end
    end
    if param == 200 then
     turtle.forward()
    end
    if param == 208 then
     turtle.back()
    end
    if param == 203 then
     turtle.turnLeft()
    end
    if param == 205 then
     turtle.turnRight()
    end
    if param == 201 then
     turtle.up()
    end
    if param == 209 then
     turtle.down()
    end
    if param == 28 then
     break
    end
      end
    end
    
     
    Zuletzt bearbeitet: 26. Feb. 2013
  2. burzi86

    burzi86 Aktives Mitglied

    UPDATE: Graben funktion und erklärung hinzugefügt.
    UPDATE: 1. Script, Gerüstabbau verbessert: Es ist jetzt egal welche Ecke man wählt, und das Turtle meldet sich wen es das Item noch braucht =)
    UPDATE:4. Scripte: Fragt nun wie gross das Quarry sein soll. und Überrpüft ob es genug Material hat
    UPDATE 2013.02.26: 5. Scripte. Verreinfachte-Steuerung kann nun auch Blöcke setzten.
     
    Zuletzt bearbeitet: 26. Feb. 2013
  3. Terror87

    Terror87 Neumitglied

    Huhu, ich hätte da mal nen scriptwunsch, wenn das ginge, die quarry hinterlässt immer so nen unschönes loch, könnte man da nicht n script schreiben das wenigstens die letzten 4-5 ebenen wieder auffüllt wenn die quarry ihren jop getan hat, cobblestone und dreck hat man dann ja eh genug
     
Die Seite wird geladen...
Ähnliche Themen - Turtle Script Sammlung
  1. ubik
    Antworten:
    3
    Aufrufe:
    1.240

Benutzer im Thema (Mitglieder: 0, Gäste: 0)