Minecraft - Computercraft - Möglich Mob oder Gegner vor sich zu erkennen?
Hallo Leute,
hab mir gerade ein eigenes Programm für einen Turtle geschrieben der eben eine gewisse Fläche abfarmt und dann zurück zum Ursprung geht wo er sein gefarmtes in die Truhe legt. Nun das Problem, wenn etwas seinen Weg blockiert was nicht farmbar ist schiebt er es zwar weg, aber wenn bspweise hinter mir ein Stein ist der das wegschieben blockiert, zählt er das als Schritt vorwärts. Kann ich das irgendwie abfangen mithilfe eines Events oder so?
Lg und danke im Voraus
3 Antworten
Ich weiss ja nicht ob das noch aktuell ist, aber um dieses Problem generell zu umgehen muss man das Verhalten der Turtle umprogrammieren, sprich eigene 'gehe-nach' Befehle definieren.
Wenn die Turtle aus einem Programm heraus nach vorne gehen soll und der Weg blockert ist, dann wird der Schritt trotzdem als erfolgreich gemeldet, und das Programm läuft weiter. Um dies zu umgehen schreibts Du dir einen eigenen nach vorne gehen Befehl. z.B. so
function goF()
while turtle.forward()== false do
if turtle.detect()== false then
turtle.attack()
else
turtle.dig()
sleep(0.5)
end
end
end
Mit dieser Funktion wird der Schritt nach vorne allerdings erzwungen, d.h. es wird alles aus dem Weg geräumt inklusive Kies und Sand, bis der Schritt nach vorne erfolgreich war. Wenn die Kröte also durch dein Grundstück läuft, mäht Sie alles nieder was Ihr im Weg ist. Ach so, sie muss mit einer Spitzhacke ausgerüstet sein, damit kann Sie alles abbauen und auch angreifen, wenn da ein Gegner steht.
Die Logik ist folgende, wenn Du nicht nach vorne gehen kannst und auch nichts detecten kannst, dann muss da ein Mob oder Spieler stehen, dann greife an und versuche wieder nach vorne zu gehen
Wenn Du nicht nach vorne gehen kannst, weill da irgendetwas detected worden ist, grabe es weg, warte ein wenig und versuch dann wieder nach vorne zu gehen.
Hallo und danke für deine Antwort, ist jedoch nicht mehr aktuell, denn genau so hab ich es damals gelöst xD Lg
in der turtle api steht, dass sei nicht möglich:
boolean result - turtle.detect() - Detects if there is a block in front. Does not detect mobs.
Ja das habe ich bereits gelesen. Aber es müsste doch einen Befehl geben mit dem das geht, da er ja, sobald etwas blockiert während er vorwärts will, er eine Meldung ausspuckt.
Ng
Habs bereits gefunden.
Einfach if turtle.forward() then...
Trotzdem danke :)