So, mal sehen, ob ich deinen Code richtig verstanden habe:

Zitat Zitat
Comment: Bewegen
<> Label: 5
<> Fork Condition: If Variable [2] == 0 then ...
. <> Erase Picture: #1
. <> Change Switch: [1] = OFF
. <> Jump To Label: 6
. <> Wait Until Moved
1. Wait Until Moved wird nie ausgeführt, weil du vorher mit "Jump to Label 6" an den Anfang des Scripts springst.
2. Durch den Sprung zu Label 6 entsteht die erwähnte Endlosschleife. Soll das Script an dieser Stelle beendet werden, so musst du zu einem Label 7 springen, den du als letzten Befehl in deinem Script plazierst, d.h. nach dem letzten "Jump to Label 5".

Dann ist mir noch etwas aufgefallen:

Zitat Zitat
<> Fork Condition: If Variable [1] == 1 then ...
. <> Move Event: Hero, Frq 8, Pattern: Mv down
. <> Change Variable: [6] = 0
. <> Fork Condition: If Variable [6] == 0 then ...
. . <> Label: 1
. . <> Fork Condition: If Variable [1] == 4 then ...
. . . <> Move Event: Hero, Frq 8, Pattern: Mv up
. . . <> Change Variable: [6] = 1
. . . <> Jump To Label: 5
. . . <>
. . : Else ...
. . . <>
. . : End of fork
. . <> Jump To Label: 1
. . <>
. : Else ...
. . <>
. : End of fork
. <>
: Else ...
. <>
: End of fork
Den rotmarkierten Befehl kannst du dir eigentlich sparen. Dadurch, dass du die Variable vorher auf 0 setzt, ist die Bedingung immer erfüllt.