Ergebnis 1 bis 20 von 1418

Thema: Technik-Sammelthread für Probleme und Antworten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Scheint wirklich zu funktionieren...

    Gefixte Version:
    download BreakLoopFix

    Hierarchie-sensitive BreakCycle / BreakLoop Befehle. (wenn man diese außerhalb jeglicher Loops ausführt, dann springt das Skript an das Ende des Events)

    Geändert von bugmenot (24.04.2014 um 20:54 Uhr)

  2. #2
    Also hat das nur Probleme mit verschachtelten Loops?
    Das heißt ich müsste also nur aufpassen, wo ich denn jetzt meine Break Loop-Befehle hinpacke und dann ist alles gut oder?

    Ich hab mal den Patch von bugmenot ausprobiert:

    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Change Variable: [1] = 0
    <> Change Variable: [2] = 0
    <> Loop
    . <> Change Variable: [1] += 1
    . <> Change Variable: [3] = V[2]
    . <> Change Variable: [3] *= 2
    . <> Show Message: test:
    . : \v[1]
    . : \v[2]
    . <> Fork Condition: If Variable [1] >= 10 then ...
    . . <> Show Message: lbreak1
    . . <> Break Loop
    . . <>
    . : End of fork
    . <> Loop
    . . <> Change Variable: [2] += 1
    . . <> Fork Condition: If Variable [2] >= V[3] then ...
    . . . <> Show Message: lbreak2
    . . . <> Break Loop
    . . . <>
    . . : End of fork
    . . <>
    . : End of loop
    . <>
    : End of loop
    <> Show Message: test fertig
    Ohne seinen Patch, läuft das ganze immer weiter, auch wenn Variable 1 größer als 10 ist. Die zweite Schleife wird dabei übersprungen.
    Mit seinem Patch, springt das ganze nach dem ersten "lbreak2" scheinbar ganz an den Eventanfang, da mir die erste Nachricht dann die Werte 1 und 0 ausgibt. Das ganze bricht also früher ab als es soll und die Nachricht "test fertig" wird gar nicht erst ausgegeben.

    @Corti: Ich benutze den 2k9 Ultimate und kommentiere auch, aber finde es trotzdem schöner wenn ich den Loop-Block anklicke und sofort alles markiert wird, was auch zur Schleife gehört.

    @MagicMaker: Genau so würde ich es dann einfach machen, auch wenn man dann eventuell ein bisschen gucken muss, dass eine Unterschleife nicht 1x zu oft abgearbeitet wird. Allerdings sollte das kein großes Problem sein.

  3. #3
    Korrektur: Ich meinte, die TreeDepth muss natürlich kleiner als die aktuelle sein. Nicht gleich (und auch nicht einfach nur um eins kleiner oder so). Ich hatte vergessen dass man ja wahrscheinlich noch andere Treestrukturen braucht.

    EDIT: Damn, ich muss wir was anderes überlegen. Weil:

    0...<> Loop
    1......<> Fork If ...
    2.........<> Break Loop
    2.........<>
    1......: End Case
    1......<> Loop
    2.........<>
    1......: End Loop
    1......<> Message "Hello"
    0...: End Loop

    Dieses Beispiel würde dann nämlich trotzdem "Hello" ewig ausgeben, anstatt nichts.

    Man müsste alle Zeilen durchgehen, einen Counter für jedes Loop um 1 erhöhen und für jedes End Loop um 1 verringern. Und wenn der Counter (angenommen er startet mit 0) kleiner 0 ist, DANN haben wir das richtige End Loop gefunden.

    Geändert von Cherry (23.04.2014 um 12:36 Uhr)

  4. #4
    ...dann gibt es aber trotzdem noch Probleme, wenn man per Label aus einer tiefergelegten Ebene in eine andere springt(?)

    Es würde helfen, wenn irgendwo die TreeDepth der ParentLoop hinterlegt werden könnte.

    Geändert von bugmenot (23.04.2014 um 14:04 Uhr)

  5. #5
    Hast du meinen Edit gelesen?

  6. #6
    Okay, neuer Versuch:


    Geändert von bugmenot (24.04.2014 um 20:54 Uhr)

  7. #7
    Also der Beispielcode den ich oben aufgeführt habe, funktioniert jetzt mit dieser Version.
    Beide Schleifen laufen so durch wie sie sollen und am Ende kriege ich auch das "test fertig" ausgegeben.

  8. #8
    @bugmenot: Warum so kompliziert? Was war an meiner Lösung denn falsch? (Der aus dem Edit)

    Ich meinte das so:

    ......<> Break Loop --- Counter=0, mal End Loop suchen gehen
    ......<>
    ...: End Case
    ...<> Loop --- Counter=1
    ......<>
    ...: End Loop --- Counter=0
    : End Loop --- Counter=-1, richtiges End Loop gefunden!

  9. #9
    Zitat Zitat von Cherry Beitrag anzeigen
    Warum so kompliziert?
    Habe mich wohl zu sehr auf eb!'s Code eingelassen und die aufgepickten :EndLoops auf richtige Zugehörigkeit überprüft... anstatt gleich das erste richtige :EndLoop suchen zu lassen...

    download BreakLoopFix


    Geändert von bugmenot (24.04.2014 um 20:53 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •