BreakLoopFix

Aus Makerpendium.de
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
<>
Öffnen
● RPG_RT-/Editor-Patches (IPS/HPA/EXE) von bugmenot
Öffnen
● RPG_RT-/Editor-Patches (IPS/HPA/EXE) von KotatsuAkira