Das Problem liegt leider woanders. Ein Parallel Process startet an der Stelle an der er beendet wurde, der Code ist dabei egal.
Das Problem liegt leider woanders. Ein Parallel Process startet an der Stelle an der er beendet wurde, der Code ist dabei egal.
Verwende keine StartBedingung sondern eine Conditional Branch mit dem Switch!
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
Stand mal vor einem ähnlichen Problem.
Mit diesem Code sollte es gehen.
Dafür braucht für den Loop einen zusätzlichen Switch, damit man beim Rausspringen aus der Schleife gleich am Ende des Skriptes kommt, damit es bei erneuten Aufrufen bzw. Switch setzten wieder von vorne beginnt.
Nachteilig sind die vielen IF-Bedingungen, aber die gehen ja schnell mit copy&paste.
@netwarrior
Hab den Fehler wie gesagt ebenfalls durch ständige If-Abfragen nach jeder Aktion gelöst und scheinbar ist es dadurch möglich. Aber es interessiert mich natürlich ob sich das in Zukunft nicht einfacher realisieren lässt.
@Cherry
Vielen Dank für den Tipp, mit einer Conditional Branch lässt sich dieser Fehler sehr schön vermeiden. Es müsste nur den Nachteil haben, dass das Event dann verzögert beendet wird wenn der Switch deaktiviert wird, weil der Code komplett bis zum Ende durchläuft. Bei meinem Problem ist es auf jeden Fall ein guter Einsatz falls es irgendwann doch nochmal zu Problemen kommt und ich einen Teil umcoden muss.
Wie wäre es mit einem PP mit einem Inhalt wie:
fork (Phase = 1) {
__show pic 1
__Phase++
__wait x,y
}
fork (Phase = 2) {
__show pic 2
__Phase++
__wait x,y
}
fork (Phase = 3) {
__show pic 3
__Phase++
__wait x,y
}
fork (Phase = 4) {
__show pic 2
__Phase++
__wait x,y
}
fork (Phase = 5) {Phase = 1}
Und jedesmal, wenn du den PP neu startest, setzt du Phase auf 1
Interessanter Ansatz. Das Problem ist aber, dass das Event da weiterläuft, wo es zuletzt stehen geblieben ist.
Wenn aber die Phase auf 1 gesetzt ist, aber der letzte Moment im ParallelEvent (sieht roten Zeiger) z.B. an einer Stelle auf Phase 4 ist. Würde nachdem inkrementieren der Wert auf 2 sein und anstatt bei Phase 1 auf Phase 2 beginnen.
netwarrior
dann machst du das Phase++ über das Show Pic.
Es werden nämlich solche Befehle wie Fork oder Change Variable, die nichts grafisch ändern oder auf irgendetwas warten, nie zwischeneinander unterbrochen (außer wenn mehr als 150.000 hintereinander sind oder so, wenn ich mich nicht irre).
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
Recht hast du, aber dafür gibts ne Lösung: Bau in das PP eine weitere fork ein, nämlich:
fork (Phase < -5) {Phase = 1}
und hau ein Phase = -10 vor jede PP-Aktivierung, das kann von keinem Phase++ zerstört werden
Das hast du getestet? Von echten Hochsprachen kenne ich, dass man der Machine nicht trauen darf und außer synchronized-Krams keine Atomarität besteht, andererseits könnte der Maker natürlich auch anders yielden - kann es sein, dass die Wahrscheinlichkeit auf einen schlechten Thread-Wechsel zwischen einer Bedingung und einem Befehl einfach verdammt klein ist?
Da gibts irgendsoeine beknackte Logik drin, die hab ich irgendwann getestet, ja.
Das ist ja auch der Grund, warum Power Mode 2003 funktioniert; oder der Itempointerpatch - wo ja in beiden Fällen eine Variable befüllt wird und dann nix zwischen dem Change Variable und dem folgenden Befehl kommen darf, weil es sonst nicht klappt.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT