BreakLoopFix: Unterschied zwischen den Versionen

Aus Makerpendium.de
Zeile 1: Zeile 1:
 
{{Tool
 
{{Tool
 
|name=BreakLoopFix
 
|name=BreakLoopFix
|bild=
+
<!--|bild=-->
|webseite=-
 
 
|ersteller=[[bugmenot]]
 
|ersteller=[[bugmenot]]
 
|os=Windows
 
|os=Windows

Version vom 21. Mai 2020, 17:42 Uhr

BreakLoopFix
Kein Bild verfügbar
Erstellt von bugmenot
Betriebssystem Windows
Für Maker/Engine RPG Maker 2000 1.07
RPG Maker 2003 1.08
Sprache -
Aktuelle Version
Veröffentlichung 23. April 2014
24. April 2014
Herunterladen Klick

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