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.

...zur Antwort

Wiseo muss die Turtle denn beim Umpacken in eine Richtung laufen ?Du packst eine Kiste ins Turtle inventar z.B. Slot 16, sobald Slot 15 befüllt ist, soll die Kiste plaziert werden, das Inventar umgepackt werden, und dann gehts weiter, oder hab ich das falsch verstanden ?Spassig wird's bei solchen Geschichten wenn man der Turtle ein simples Koordinatensystem verpasst, welches Richtung und relative Position seit Programmstart speichert. Damit kann man dann z.B. Wegpunkte setzen, an denen die Kisten plaziert werden sollen, danach zurück zum Ausgrabungsort und weitermachen und vieles mehr.

...zur Antwort

Obwohl die Frage schon uralt ist, die Fehlermeldung heisst übersetzt soviel wie: Versuch einen Wert (aus einer Liste) zu nehmen, der nicht da ist. Oder: es wurde auf einen Wert gezeigt, der nicht existiert. nil ist in lua der Ausdruck für nichts, also keine Zahl, kein String, kein Event oder sonstwas, nichts eben.

Beliebte Fehlermeldung ist auch attempt to call nil, oft ist es einfach nur ein Schreibfehler, es wurde eine Funktion aufgerufen, die nicht existiert, weil falsch geschrieben


...zur Antwort

Hy,

hier das fertige Programm. Es läuft in einer Endlosschleife.

Der Versuchsaufbau von links nach rechts ist

ein rs-schalter,zwei rs-leitungen,eine Turtle,zwei rs-leitungen, eine rs-lampe.

Die Kroete steht also zwischen Schalter und Lampe, verbunden durch rs Leitungen.

Gruss,

Hotte

p.s.: Ich habe den Verdacht, das könnte auch ganz leicht mit einer Redstoneschaltung erreichen, doch da kenn ich mich nicht so mit aus.

while true do
signalverzoegerung= 2
ausloeser= false

-- warten bis ein Signal kommt
while rs.getInput("left")== false do
   sleep(0.2)
end

-- Signallänge messen
while rs.getInput("left") == true and ausloeser == false do
    sleep(0.2)
    signalverzoegerung= signalverzoegerung - 0.2
    if signalverzoegerung < 0 then
        -- Zeit ist erreicht, Ausloeser setzen,
       -- dadurch wird die Schleife verlassen
       -- Sie wird auch dann verlassen, wenn das
       -- Eingangssignal vorher abfällt, nur wurde
       -- dann der Ausloeser nicht gesetzt
    ausloeser= true
    end
end


-- wenn der Ausloeser gesetzt wurde
if ausloeser== true then
    -- Ausgangssignal setzen
    rs.setOutput("right", true)
    --warten bis der Eingang wieder abfällt
    while rs.getInput("left") == true do
       sleep(0.2)
    end
    -- Ausgang zurücksetzen
   rs.setOutput("right", false)
end

end

...zur Antwort

Die Auslösezeiten, kurz und lang müssen festgelegt werden.

Wir sagen mal 'kurz' ist bis zu einer Sekunde,

'lang' ist alles was darüber ist.

--erstmal warten bis ein Signal kommt

while rs.getInput("right") == false do

  sleep(0.1) -- wir tun was in der schleife, damit CC nicht meckert.

end

-- jetzt liegt ein Signal an, also 'messen' wir die Dauer

dauer= 0

while rs.getInput("right")== true do

   sleep(0.1)

   dauer=dauer + 0.1

   -- wenn das Signal nach einer Sekunde immer noch anliegt, schicken wir ein Signal nach links raus

   if dauer > 1 then  -- hier wird die grenze zwischen kurz / lang definiert

       rs.setOutput("left", "true")

   end

end

--  jetzt warten wir solange, bis das Signal erlischt.

     while rs.getInput("right")== true

         sleep(0.1)

     end

-- Signal  ist wieder weg, also schalten wir auch das Redstone Signal wieder aus

     rs.setOutput("left", "false")

Spätestens hier fehlt mir die info für den 'äusseren Rahmen', soll die Funktion sich selber immer wieder aufrufen, oder was passiert da sonst noch. In welchen Kontext findet das Ganze statt ?

p.s.: ich hab nix getestet, das ist einfach so runtergeschrieben

   

  

...zur Antwort

ich bin, der ich bin= ich bin der Existierende und die Wahrheit und das Leben

ich bin der existierende, der einzige der aus sich heraus existiert, alle/alles andere existiert nur durch mich.

leben kommt von leben und nicht von Steinen. Wir leben, weil Gott lebt und nicht andersherum,



...zur Antwort

Ich hab sogar im Gartenkommandomodus schon 12000 Punkte bekommen, kann aber nicht sagen woran's lag, weil ich immer mit der gleichen Taktik spiele und immer denselben Character nehme. Auch mit oft über 100 Abschüssen kommen da am Ende Punkte unter 5000 raus, verstehe wer will

Meiner Erfahrung nach ist es im Garten und Friedhöfe Modus am Aussichtsreichsten mindestens 5000 - 12000 Punkte zu verdienen. Dafür sind die Multiplayer Modi aber oft sehr stressig, weswegen ich trotz geringerer Punktzahlen den Gartenkommando Modus lieber mag, nicht zuletzt wegen der Bossgegner

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.