Ergebnis 1 bis 20 von 25

Thema: Problem mit Kampfsystem ._.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Nein hab ich nicht. Zumindest nicht an dieser Stelle.
    Lediglich in einem Map Event, welches einen Action Key Trigger hat und nur ganz zu bekommen einmal aufgerufen wird um mir die Namen der Kampfteilnehmer anzuzeigen, also wird's wohl nicht damit zu tun haben.

  2. #2
    Wenn das der 2k3 ist:

    Du könntest mal mit dem Debugaddon die Eventbefehlverarbeitung mitschneiden und dann nachschauen wo es hängt: http://www.multimediaxis.de/threads/...=1#post2801470
    Aber bitte nicht deine RPG_RT.exe ersetzen, weil das Debugaddon selber ein paar kleine Macken hat, also lieber eine RPG_RT_Debug.exe oder so draus machen und nur zum Debuggen verwenden.

    Wenn das der 2k ist:

    Schick mir ein Testprojekt wo der Fehlerauftritt und ich schau für dich nach (weil da müsste ich ein bisschen tricksen dass das Debugaddon mit dem 2k läuft).

  3. #3
    Wenn ich den Patch drauf ziehe und die RPG_RT.exe dann starten will kommt zuerst eine Meldung, dass RPG_RT.exe nicht mehr funkioniert und danach diese Meldung.



    Falls es hilft, ich hab den 2k3 v1.08 mit BetterAEP und DynRPG.

    Edit: Okay es läuft, zwar ohne BetterAEP und DynRPG, aber da der Bug mit dem anhaltendem Event trotzdem auftritt wird es wohl nicht an beiden liegen.

    Edit2: So ich hab das ganze jetzt mal aufzeichnen lassen, sogar mehrmals und ich bin wieder zu unterschiedlichen Ergebnissen gekommen.
    Zuerst hängt es nach einem Move Picture Befehl, danach kommt es nichtmals dazu die Bilder anzeigen zu lassen.

    Geändert von Quetschi (02.04.2013 um 12:24 Uhr)

  4. #4
    Nein, du sollst mit der F3-Funktion die Eventverarbeitung mitschreiben lassen.
    F3 drücken bevor es hängt, bestätigen, warten bis es hängt, nochmal F3 drücken, Spiel schließen, trace.log-Datei anschauen (letzte Einträge).

  5. #5
    Habe ich ja...und dort habe ich eben gestgestellt, dass es einmal vor dem Move Picture gestoppt hat und beim nächsten mal kam es nicht einmal bis dahin...

  6. #6
    Sorry, hab den Edit nicht gesehen.

    Zeig mir mal die Logfiles.

  7. #7
    Okay.

    Fall 1:


    Fall 2:


    Der Rest bzw. alles was vorher kam, sind nur Berechnungen zur HP-Anzeige

  8. #8
    Hm, das ist interessant, da dürfte eigentlich gar nichts hängen blieben. Ich kann jetzt dich nur noch um das Projekt (oder einen Auszug, in dem der Fehler auftritt) bitten und das händisch mit einem Debugger analysieren.

  9. #9
    Ich finde es auch komisch. Naja hier das Projekt. Das ist aber jetzt wie gesagt ohne BetterAEP und DynRPG, da das mit dem Debugaddon nicht funktioniert hat.

    Download

  10. #10
    Wie löse ich den Fehler aus?

  11. #11
    Ups...vergessen zu erklären.^^
    Einfach starten und dann nach rechts auf das Feld zwischen dem Jungen und dem Baumstumpf. Dann einfach draufstellen und Enter drücken.
    Dann kurz warten und dann "Abwehr" auswählen und Enter drücken.

  12. #12
    Aaaaahhhhh, Fehler gefunden.

    Du ziehst dir selbst den Boden unter den Füßen weg.

    Zuerst eine Vorinformation: Der RPG Maker checkt zu Beginn jedes Frames die Startbedingungen der Events.
    Event "EV0029", Seite 1, hat Switch 4 "Cursor" als Startbedingung.

    Was passiert ist:

    === Framebeginn ===
    RPG Maker überprüft Startbedingungen, Switch 4 ist an, also wird Event "EV0029", Seite 1, ausgeführt.
    Event "EV0029", Seite 1, hat Switch 4 "Cursor" als Startbedingung.
    Event "EV0029", Seite 1, callt Event "Heldenzüge", Seite 1.
    Event "EV0029", Seite 1, stellt Switch 4 "Cursor" aus.
    Event "Heldenzüge", Seite 1, callt Event "Heldenzüge", Seite 4.
    (Event "Heldenzüge", Seite 1, stellt Switch 4 "Cursor" nochmal aus, warum auch immer.)
    Event "Heldenzüge", Seite 4, callt Common Event "HP Anzeige".
    Common Event "HP Anzeige" führt ein "Wait 0.0" aus, was bedeutet "auf nächsten Frame warten".
    === Nächstes Frame ===
    RPG Maker überprüft Startbedingungen, Switch 4 ist aus, also wird Event "EV0029", Seite 1, nicht ausgeführt. <<< und zwar die Skripteinheit. Siehe unten.

    Du musst geistig unterscheiden zwischen einer Eventseite als Einheit auf der Map (bzw. Common Event als Einheit in der Database) und als "Skripteinheit". Eine Skripteinheit hat einen Callstack (d.h. einen "Stapel" der sich merkt wenn das Event andere Events gecallt hat, damit am Ende des gecallten Event zur Ursprungsposition zurückgekehrt werden kann) und einen Linepointer, der dem RPG Maker sagt, was die aktuell ausgeführte Zeile ist (was nicht zwingend in derselben Einheit auf der Map sein muss! D.h., Event "EV0029", Seite 1, kann - wie es hier passiert - einen Linepointer haben der gerade auf Common Event "HP Anzeige" zeigt!), sowie ein paar andere Daten (aktuelle "Wartezeit" wenn gerade ein Wait aktiv ist, etc.). Effektiv ist jede "Skripteinheit" eine parallel laufende Instanz des Eventinterpreters des RPG Makers.

    Der Linepointer (der interne "Skriptzeilencursor") für Event "EV0029", Seite 1, befindet sich zu Beginn des neuen Frames (durch das Wait 0.0 bedingt) gerade am Ende von Common Event "HP Anzeige", denn der Callstack von diesem Eventskript sieht gerade so aus:

    ===> Common Event "HP Anzeige", Zeile 22: <> Wait 0.0 <<< aktueller Linepointer
    ==> Event "Heldenzüge", Seite 4, Zeile 79: <> Call Event: Common Event "HP Anzeige"
    => Event "Heldenzüge", Seite 1, Zeile 51: <> Call Event: "Heldenzüge", Seite 4
    > Event "EV0029", Seite 1, Zeile 42: <> Call Event: "Heldenzüge", Seite 1 <<< Ursprungsevent, wird dieses deaktiviert, wirkt sich das auf den gesamten Stapel aus

    D.h., durch Deaktivieren von Switch 4, der Startbedingung für Event "EV0029", Seite 1 ist, wird die Ausführung der damit zugeordneten Skripteinheit unterbrochen, auch wenn diese gerade einen Linepointer hat der auf ein anderes Event zeigt (hier das Common Event). Dieser Effekt wird "scheinbar" erst durch "Wait 0.0" ausgelöst, weil das Wait auf den nächsten Frame wartet, und der RPG Maker nur zu Beginn jedes Frames die Startbedingungen überprüft, also das Ausschalten von Switch 4 solange keinen Effekt hat bis das Frame endet.

    Du musst also deinen Code umbauen sodass du dir nicht mehr wie eingangs erwähnt selbst den Boden unter den Füßen wegziehst, z.B. indem du Switch 4 nicht als Startbedingung verwendest sondern das gesamte Event "EV0029" in ein "<> Conditional Branch: If Switch [0004:Zug] == ON" packst (obwohl ich vermute dass das nichtmal notwendig ist weil das Event ja niemals wieder von vorne beginnt während die zugehörige Skripteinheit noch nicht am Ende der Eventseite angelangt ist, was ja erst passiert wenn es aus den ganzen gecallten Events zurück ist - aber ich hab deine Events nicht so genau angeschaut um sagen zu können dass es 100% für dich passen würde).

    Übrigens: Das Debugaddon hat leider einen Fehler der bei gecallten Eventseiten die falsche Eventseitennummer zeigt, darum steht alles was im Heldenzüge-Event passiert in der trace.log als "Pg 6" drinnen, obwohl es in Wirklichkeit in Seite 1 und 4 abläuft.

    Geändert von Cherry (02.04.2013 um 21:09 Uhr)

Berechtigungen

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