BreakLoopFix
BreakLoopFix |
---|
Kein Bild verfügbar | |
Erstellt von | bugmenot KotatsuAkira (Ports) |
Betriebssystem | Windows |
Für Maker/Engine | RPG Maker 2000 1.07 RPG Maker 2000 1.10 RPG Maker 2000 1.50 RPG Maker 2000 1.51/1.52 RPG Maker 2000 1.60 RPG Maker 2000 1.61 RPG Maker 2000 1.62 RPG Maker 2003 1.08 RPG Maker 2003 1.09~1.12 |
Sprache | - |
PatchDB-Einträge | break_loop_fix |
Aktuelle Version | |
Veröffentlichung | 23. April 2014 24. April 2014 4. August 2022 (2000-1.62) 13. August 2022 15. August 2022 (2003-1.09~1.12) 9. Oktober 2022 |
Herunterladen | 2000-1.07 & 2003-1.08 Andere Versionen |
BreakLoopFix ist ein IPS-Patch für die RPG_RT.exe, der das Verhalten des Eventbefehls Break Loop so verändert, dass nicht mehr von der aktuellen Position aus zum nächsten Loop End gesprungen wird, sondern der passende Endpunkt zur aktuell laufenden Schleife gesucht wird. Seit dem RPG Maker XP existiert dieses fehlerhafte Verhalten nicht mehr.
Obwohl es anzuraten ist, Schleifen immer am unterstmöglichen Ende mit einem oder mehreren Ausgängen zu versehen, wo keine weiteren Unterschleifen mehr auftreten können, wird dies nicht immer von jedem eingehalten, da außer dem Einhalten einer gewissen Ordnung auch eigentlich kein Grund dazu besteht.
Beispiel
Wurde der Fix nicht angewendet, kann die nachfolgende Situation eintreten.
<>Loop Start <>Set Variable: [0001:Salatscheiben] + 1 <>Set Variable: [0002:Schnittfortschritt] = 0 <>If Variable [0001:Salatscheiben] == 15 <>Break Loop <> : EndIf <>Loop Start <>Set Variable: [0002:Schnittfortschritt] + 1 <>If Variable [0002:Schnittfortschritt] == 30 <>Break Loop <> : EndIf <>Wait: 0.0s <> : Loop End <>Wait: 0.1s <> : Loop End <>
Gleiche Situation mit Fix
Nach Anwenden sucht sich Break Loop das nächste passende Ende mit der richtigen Tiefe.
<>Loop Start <>Set Variable: [0001:Salatscheiben] + 1 <>Set Variable: [0002:Schnittfortschritt] = 0 <>If Variable [0001:Salatscheiben] == 15 <>Break Loop <> : EndIf <>Loop Start <>Set Variable: [0002:Schnittfortschritt] + 1 <>If Variable [0002:Schnittfortschritt] == 30 <>Break Loop <> : EndIf <>Wait: 0.0s <> : Loop End <>Wait: 0.1s <> : Loop End <>
Sichere Methode
Generell ist eine Struktur anzuraten, in der alle Abfragen nach unten verlagert werden.
<>Loop Start <>Set Variable: [0001:Salatscheiben] + 1 <>Set Variable: [0002:Schnittfortschritt] = 0 <>Loop Start <>Set Variable: [0002:Schnittfortschritt] + 1 <>If Variable [0002:Schnittfortschritt] == 30 <>Break Loop <> : EndIf <>Wait: 0.0s <> : Loop End <>If Variable [0001:Salatscheiben] == 15 <>Break Loop <> : EndIf <>Wait: 0.1s <> : Loop End <>