Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 25

Thema: Problem mit Kampfsystem ._.

  1. #1

    Problem mit Kampfsystem ._.

    Hey,

    ich bin gerade dabei, mein eigenes Kampfsystem zu erstellen. Allerdings ist nun ein Problem aufgetaucht, welches eigentlich passieren dürfte. Ich hab alles immer wieder und wieder überprüft, aber finde den Fehler nicht.
    Das Problem besteht darin, dass wenn der 2. Kampfteilnehmer auf Seite des Spielers den Gegner angreift und danach der Gegner zum Zug kommt, dieser die Werte des 2. Kämpfers für seinen Angriff erhält.
    Eigentlich werden aber bei jedem Angriff die Variablen "Angreifer Level", "Angreifer Angriffskraft", "Angreifer Wille" usw. ebenso wie "Verteidiger Level" usw. auf die Werte desjenigen gesetzt, der gerade seinen Zug hat.
    Bei den Verteidigerwerten klappt dies wunderbar, nur bei den Angreifer werten will das irgendwie nicht funktionieren.

    Beispielhaft:

    Kämpfe 2 ist Level 6 und hat 25 Angriffskraft
    Der Gegner ist Level 1 und hat 4 Angriffskraft

    Wenn ich den Gegner mit Kämpfer2 angreife erhält dieser ~25 Schadenspunkte, so weit so gut, greift allerdings der Gegner an hat er für den Angriff auch Level 6 und 25 Angriffskraft.

    Es hilft auch nichts die genannten Variablen am Anfang der Übergabe wieder auf 0 zu setzen oder nachdem der Schaden ausgeteilt wurde. Kann es sein, dass die Variablen aus irgendeinem Grund "kaputt" sind und nicht richtig funktionieren?

    Der Eventcode des Zuges von Kämpfer2:


    Zum Vergleich der Code von Kämpfer1:


    Das aufgerufene Commonevent ist die Zielauswahl und in diesem wird eigentlich nichts an Werten verändert, lediglich eben die Ziel-ID und es wird "Werte übergeben" aufgerufen.

    Werte übergeben:


    Am Anfang werden die "Problemwerte" noch einmal auf 0 gesetzt, was ja scheinbar auch nichts bringt :/
    Am Ende wird erst abgefragt ob eine Technik benutzt wurde und wenn ja, dann werden die Werte eventuell noch verändert (das ist bei dem Problem aber irrelevant, da ich sowieso noch keine Techniken eingebaut habe).
    Danach wird abgefragt ob der Schaden nicht magisch ist und wenn das zutrifft wird die physische Schadensformel aufgerufen, andernfalls die magische.
    In diesen Events wird der Schaden berechnet mit den Werten, die übergeben wurden und dann das Event zum Schaden austeilen aufgerufen.

    Schaden ausgeben:


    Danach wird nur geprüft ob die Kampfteilnehmer <= 0 HP haben und wenn ja werden sie als tot erklärt und dann wird halt je nachdem ob alle Kämpfer oder Gegner tot sind, das Win oder Game Over aufgerufen.


    Ich hoffe mir kann jemand bei diesem Problem helfen, und noch viel mehr hoffe ich dass die Variablen nicht irgendwie "kaputt" sind. Das war ja auch glaub ich bei EFS mit einer Variable der Fall.
    Falls notwendig, kann ich das Projekt auch gerne verschicken


    MfG

    Quetschi

  2. #2
    Variablen kaputt halte ich für extremst unwahrscheinlich und das beschriebene Problem klingt nicht nach Zufall sondern nach einem Systemfehler.

    Hier : mit diesem Tool kannste checken wo Variablen benutzt werden.
    http://www.multimediaxis.de/threads/...eckt-HOT-STUFF

  3. #3
    Das ist mir zuviel, als das ich mich da jetzt reinlesen will...

    Ich weiß ja nicht ob du deine Angaben prüfst, den kann es nicht sein das der Gegner keine 25 ATK sondern du einfach die Schadenspunkte übernimmst?

  4. #4
    @Corti
    Naja ich hab wie gesagt alles doppelt und dreifach und vierfach nachgeguckt. Ich werde morgen früh direkt nochmal mit dem Tool drüber schauen.

    @djeurissen
    Nein, das kann nicht sein. In den Events in denen der Schaden berechnet wird, wird die Schadensvariable und die beiden Variablen um bei der Rechnung Zwischenergebnisse zu speichern am Anfang auf 0 gesetzt. Hätte ich eventuell auch noch erwähnen sollen :x

  5. #5
    Tja, dann benutz wie gesagt das Tool oder bau überall Messages rein die dir sagen wie die Variablen gerade stehen.
    Sobald du bemerkst das es eine Abweichung gibt, kannst du den kreis schonmal eindämmen. Also bau auch eine Messagebox vor und nach dem Befehl ein der die Variablen auf 0 setzt. Vielleicht gibt es auch irgendwie eine Bug der die Variable immerwieder auf die selbe Zahl setzt...

  6. #6
    djeurissen sagts schon, bau Messages rein. Du hast einen Zeitpunkt an dem ein falsches Ergebnis hast. Von dem Punkt an solltest du zurückverfolgen ab wann die Werte nicht mehr dem entsprechen was du erwartest. Ganz blöde Frage: Kennt du den Debugmode vom Maker? Drück mal F9 im Testmode.

  7. #7
    Messages hab ich auch schon ausprobiert und durch den Makereigenen Debugmode habe ich ja erst herausgefunden, dass die Werte bleiben, da der Schaden der Gegner auf einmal so hoch war. Laut den Messages, werden die Werte korrekt übergeben.
    Ebenso das Debug-Tool von sue445 liefert mir nur das Ergebnis, dass die Variablen eigentlich nur geändert werden wenn sie geändert werden sollen.




    Edit1:

    Nach stundenlanger Suche hab ich den Fehler gefunden und muss gestehen, dass er recht blöd war :x
    Ich hab vergessen die Variable KI-Ziel auf 0 zu setzen und deshalb hat der zuletzt angegriffene Held auch nochmal Schaden erhalten nachdem Kämpfer2 angegriffen hat^^
    Das erklärt aber irgendwie immernoch nicht warum dies nur beim 2. Kämpfer der Fall war, auch als ich diesen zum Test entfernt habe, hab ich das nicht bei den anderen Kämpfer beobachten können...
    Wie auch immer. Ich bin froh dass ich das Problem gefunden und behoben habe.


    Edit2 - Ein neues Problem:

    Ich habe ein weiteres Problem. Mein Abwehrbefehl spinnt auf einmal rum. Der Befehl wird nicht komplett ausgeführt und der Maker "hängt" quasi. Der Befehl hat vorher funktioniert und ich habe ihn nicht verändert,
    noch habe ich Sachen geskriptet, die die gleichen Variablen und/oder Switches benutzen (Bereits mit dem genialen Tool nachgeguckt). Wenn ich Messages einfüge um zu gucken, wo der Befehl genau nicht weiter ausgeführt
    wird, hängt das ganze noch früher.
    Ich habe zum Testen hinter wirklich jeden Befehl eine Message getan. Wenn ich dann in meinem KS Abwehren auswähle werden nur die ersten beiden Befehle ausgeführt. Das hat mich dann ein bisschen gewundert, weil das
    Event vorher noch viel weiter ausgeführt wurde. Also habe ich wieder zum Testen nur diese ersten beiden Messages entfernt, aber danach bleibt das Event nach einem Erase Picture und der Testnachricht stehen.
    Weiß jemand welche Ursache das haben kann, das das Event einfach so stehen bleibt und nicht weiterarbeitet?

    Geändert von Quetschi (30.03.2013 um 20:33 Uhr)

  8. #8
    Hat denn keiner eine Idee woran das liegen kann, das das Event mittendrin plötzlich stoppt? :/
    Ich hab schon alles ausprobiert was mir in den Sinn gekommen ist.
    Ich habe bereits herausgefunden, dass das ganze mit meinem Eventcode zum Anzeigen des Schadens/der Heilung zusammenhängt, denn wenn ich dieses rausnehme funktioniert das Abwehren wunderbar.

    Also habe ich wie bereits gesagt überall eine Message reingeschoben um zu gucken wo das ganze hängt. Aber komischerweise hängt das immer nach der ersten Message die erschienen ist.
    Wenn ich garkeine Messages reinbaue, hängt sich das ganze auf wenn die Zahlen für die Heilung (mein Abwehrbefehl heilt um 5% der maximalen HP) kurz nach oben und wieder nach unten gehen sollten in einer Art Wellenbewegung.
    Wenn ich die Bewegung rausnehme, stoppt das ganze trotzdem an dieser Stelle.

    Noch komischer wird das ganze, da das Anzeigen des Schadens wunderbar funktioniert und es der gleiche Code ist (einfach kopiert) nur dass die Zahlen normal in weiß anstatt in grün angezeigt werden.
    Wenn ich die aus der Abfrage ob geheilt wurde oder Schaden verursacht wurde den Eventcode für die Heilungszahlen rausnehme, hängt das Ganze sich auch auf.
    Wenn ich das komplett rausnehme und einfach stur weiße Zahlen anzeigen lassen will, hängt es sich auch auf, obwohl es mit dem Angriffsbefehl weiterhin einwandfrei funktioniert.

    Also habe ich erst einmal versucht den Code für die Darstellung der Heilung aus dem Common Event zu nehmen und in ein Map Event zu packen. Mit dem Ergebnis, dass es trotzdem nicht funktioniert.
    Deshalb hab' ich dann versucht alles noch einmal neu zu machen und es hängt trotzdem an der gleichen Stelle.

    Waits habe ich auch schon versucht reinzubauen, obwohl das beim Angriffsbefehl nicht notwendig war. Gestartet hab ich mit 0.0 Waits und bin dann bis 0.5 gegangen. Das hat mir soviel gebracht, dass das ganze
    Event noch eher stoppt.
    Und da es auch eher stoppt wenn ich Messages reinbaue, hab' ich mir zuerst gedacht es könnte an der Anzahl der Eventbefehle liegen. Daraufhin hab ich das mit dem Angriffsevents verglichen und festgestellt, dass
    beim Angreifen noch viel mehr Eventcode ausgeführt wird. Also kann es eigentlich auch nicht daran liegen.

    Gerade habe ich noch einmal ausprobiert, was passiert wenn ich die Heilung drinlasse und nur das Anzeigen der Höhe der Heilung weglasse. Ja, die Heilung findet statt, der Kämpfer befindet sich im Abwehrzustand und
    der Zug wird beendet. Alles schön und gut aber ich hätte es gerne mit der Anzeige, nur verstehe ich nicht warum das nicht funktioniert, da es ja, wie bereits erwähnt, der selbe Eventcode ist wie beim normalen Schaden anzeigen nur in grün.
    Außerdem stoppt es ja, wie ich ebenfalls bereits erwähnt habe, auch wenn ich die Zahlen in weiß anzeigen lassen, also mit dem Code der auf jeden Fall funktioniert wenn ich Schaden darstellen will.

    Ich könnte das auch ohne die Anzeige machen, da man eine HP-Leiste und halt HP-Zahlen hat, aber trotzdem ist es für den Spieler besser mit der Anzeige, da er dann weiß um wieviel er geheilt
    wurde ohne das noch ausrechnen zu müssen.

    Hat irgendeiner eine Idee warum das anhält? ._.

  9. #9
    Mal ganz doof gefragt: Ist alles was passiert sequenziell oder hast du irgendwas parallel zueinander laufen?

  10. #10
    Ich arbeite eigentlich wenig mit parallelen Prozessen, sondern lasse alles per CallEvent aufeinander aufbauen. Zu dem Zeitpunkt sind 3 Stück am Laufen, mit denen die HP-Zahlen (also aktuell/maximal) angezeigt werden.
    Eigentlich dürfte das nicht das Problem sein, da es beim Angriff ja funktioniert. Trotzdem habe ich sie eben auf Call gestellt und es ändert sich nichts, außer dass das KS am Anfang langsamer lädt. Das Anhalten beim Abwehrbefehl bleibt bestehen.

  11. #11
    Der fehleranfälligste Befehl im Maker ist Move Event (besonders wenn Ignore Impossible Moves nicht eingehakt wurde), gefolgt von Proceed with Movement (das man im Zweifelsfalle durch waits ersetzen sollte).

    Hast du davon irgendwas im Code?

  12. #12
    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.

  13. #13
    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).

  14. #14
    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)

  15. #15
    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).

  16. #16
    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...

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

    Zeig mir mal die Logfiles.

  18. #18
    Okay.

    Fall 1:


    Fall 2:


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

  19. #19
    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.

  20. #20
    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

Berechtigungen

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