Minecraft - Computercraft - Möglich Mob oder Gegner vor sich zu erkennen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

triiksa 
Fragesteller
 20.04.2017, 12:39

Hallo und danke für deine Antwort, ist jedoch nicht mehr aktuell, denn genau so hab ich es damals gelöst xD Lg

1

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.

triiksa 
Fragesteller
 06.02.2017, 00:11

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

0

Habs bereits gefunden.

Einfach if turtle.forward() then...

Trotzdem danke :)