guck mal hier unter CortiATBSpeed.
Druckbare Version
guck mal hier unter CortiATBSpeed.
Cool, danke.
geht das aber vielleicht auch so, ohne zu patchen?
Ich habe letztens irgendwo gelesen, dass Loops im Gegensatz zu Label-Schleifen fehleranfällig sind.Kann jemand etwas genaueres dazu sagen?
Der einzige Unterschied der mir aufgefallen ist, ist dass Loops langsamer sind.
Ich würde gerne wegen der deutlich besseren Übersicht die Loops benutzen, da mir gerade bei aufwändigeren Sachen Übersicht wichtig ist.
Sollte es nämlich nur die Sache mit den Wiederholungen sein, kann ich darauf verzichten und habe dafür lieber mehr Übersicht.
Afair/afaik:
Der Breakloop-Befehl springt zum nächsten Loop-Ende. Das muss nicht das Loop-Ende sein, dass du damit zu erreichen meinst. Dadurch könntest du Code erhalten, der sich völlig anders verhält als du es erwartest.
Tipp: Nimm den 2k9 Ultimate, da gibts gute Färbung der Befehlszeilen und ein größeres Codefenster damit kannst du es dir selbst übersichtlicher machen. Ansonsten Kommentare. ich setze gerne <BEGIN FOREACH MONSTER > </END FOREACH MONSTER> oder sowas um meine Schleifen.
Oder war es so, dass Break ans Ende der äußersten Schleife springt?
Irgendwo hat das schonmal jemand gesagt. Kann selber nichts rekonstruieren.
Edit:
Ich glaube, es ging darum, dass die Schleife, in welcher der Break-Befehl auftrat eben nicht beendet werden konnte, weil stromabwärts des Breaks eine untergeordnete Schleife auftrat ...was rede ich da, der RM2k(3) kümmert sich nicht um Hierarchien.
Der StopLoop / BreakCycle Befehl merkt sich das nächste auftretende Ende einer Schleife als neuen Script-Entry vor ( [...+18] ). Wenn man den Befehl vor eine Schleife packt, wird diese beim ersten Ausführen übersprungen.
Edit:
@Cherry:
Das hier? Was in sub_4B0C60 nicht mehr vorkommt.Code:489AA5 | mov eax,[eax+8]//get found LoopCommand's data
489AA8 | cmp eax,[edi+8]//Is this <>Loop the one that triggered sub_489A78?
489AAB <<jnz loc_489AB3 //jump if not
Ganz recht, ich wollte da eh mal einen Bugfix machen - man braucht ja nur überprüfen ob die TreeDepth (scriptline+8 afair) des Endloop-Befehls dieselbe wie die des aktuellen ist.
Ich halte es ja sowieso für ratsam, immer am Ende einer Schleife den Break zu setzen.
Oder zumindest an einem Punkt, wo möglicherweise vorhandene Unterschleifen schon abgearbeitet sind.
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)
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:
Ohne seinen Patch, läuft das ganze immer weiter, auch wenn Variable 1 größer als 10 ist. Die zweite Schleife wird dabei übersprungen.Zitat:
Zitat von EasyEventExporter
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.
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.
...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.
Hast du meinen Edit gelesen?
Okay, neuer Versuch:
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.
@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!
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
Aloha Leute!
Ich hab mir ein paar Videos über den RPG Maker VX Ace angeguckt und war total begeistert. Ich wollte mir das Programm unbedingt runterladen, aber ich habe leider ein Macbook Air. Ebenfalls durch Videos bin ich schließlich drauf gekommen, den Maker mit Wine und WineBottler zu installieren. Das habe ich gemacht, das Icon ist da. Als ich es allerdings gestartet habe, kam eine Meldung, ich hätte das RTP nicht installiert, obwohl ich mir sehr sicher war, das gemacht zu haben. Um aber wirklich sicher zu sein, habe ich es nochmal versucht. Scheinbar habe ich etwas anders gemacht, denn jetzt kommt, wenn ich den Maker öffnen möchte, immer nur folgendes Fenster: (siehe Anhang)
Was zum Teufel kann ich tun? Was habe ich falsch gemacht? Bitte dringend um Hilfe!!!
Lass es auf Windows laufen
http://www.chip.de/downloads/Virtual..._36053602.html
Gibt es irgendeinen Trick, um im Vollbildmodus kein verzerrtes Bild zu haben? Bei mir ist alles immer in die Breite gezerrt, ist leider nicht grade schön :/. Danke schonmal im Voraus :).