Turtle Script Sammlung

  • Willkommen bei SwissSMP.ch, der grössten Schweizer Gaming Community!

    SwissSMP.ch organisiert regelmässig Events wie Public Viewing im Kino, Pizzaessen und nimmt an LAN-Parties teil. Viele Spiele wie Minecraft, League of Legends und Overwatch werden von den Mitgliedern täglich zusammen gespielt. SwissSMP.ch legt grossen Wert auf ein respektvolles Miteinander.





    Registriere dich im Forum und
    joine unseren Teamspeak: SwissSMP.ch.

burzi86

Aktives Mitglied
21. Apr. 2012
640
161
45
Neftenbach
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:

burzi86

Aktives Mitglied
21. Apr. 2012
640
161
45
Neftenbach
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:

Terror87

Neumitglied
15. Mai 2013
1
0
3
Parts Unknown
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