Seite 52 von 62 ErsteErste ... 242484950515253545556 ... LetzteLetzte
Ergebnis 1.021 bis 1.040 von 1240

Thema: RPG2000 und 2003-Sammelthread für Probleme

  1. #1021
    Perfekt Corti^^
    Ich hatte leider keine Zeit um dort so genau durchzugehen^^

    PeAcE
    MorDen

  2. #1022
    Außerdem ist bei Picture\EXP.... ein Backslash zu wenig und RPG::Canvas::draw ist keine statische Methode sondern über RPG::screen->canvas->draw aufzurufen.

  3. #1023
    So...Ich hab nun endlich die Build Messages (keine Ahnung warum die vorher nicht da waren oO) und hab den Code schonmal bearbeitet.
    Das ganze meckert nurnoch an der Stelle:

    RPG::Image::destroy(myExpImage);



    Er sagt mir, dass myExpImage nicht deklariert wurde, aber eigentlich wird das doch durch "RPG::Image *myExpImage;" deklariert oder nicht? Und wenn nicht, warum meckert das ganze dann nicht bei dem draw-Befehl?

  4. #1024
    wenn(Bedingung erfüllt)
    {
    erstelle bild
    }
    wenn nicht
    {
    zerstöre bild
    }

    denk mal genau drüber nach ;-)

  5. #1025
    Hm...Anfangs ist die Bedingung ja nicht erfüllt...das heißt das PlugIn würde versuchen ein Bild zu zerstören, dass noch garnicht existiert...d.h. ich muss überprüfen ob das Bild bereits existiert oder?
    Wenn ja wie mach ich das? :x
    Oder iwie drumherum coden, aber da fällt mir gerade nicht ein wie ich das machen könnte...vielleicht wenn ich mal ne nacht drüber schlafe oder so. ^^

  6. #1026
    Variablen haben einen Gültigkeitsbereich. Wenn du Sachen in einem if{} erstellt sind sie nur darin gültig, genau so wäre etwas, dass du in dem else{} machst nur darin gültig.

    Zu dem Bild:
    • Das Reinladen und das Zerstören solltest du gar nicht in dem onFrame Callback machen, weil der 60 mal pro Sekunde passiert.
    • Es gibt den Callback "onInit.." oder so. Der wird ausgeführt wenn die Makerspieldaten geladen wurden,also einmal beim Spielstart. Dort kannst und solltest du Bilder reinladen.
    • Es gibt auch den Callback "onExit" oder so, der wird ausgeführt wenn das Spiel beendet wird. Dort ist der richtige Ort um Bilder mit destroy freizugeben.


    Die Variable RPG::Image *meinBild deklarierst du in der main.cpp-Datei. Dadurch ist sie in den andern Callbacks vorhanden und kann benutzt werden.

    Ich hab schon öfters destroy bei Bildern gemacht, die nicht existierten weil ich einen falschen Dateinamen angegeben hab. Das heisst, du musst und brauchst nicht prüfen, ob der ->loadFromFile Vorgang erfolgreich war. Was du prüfen solltest ist, ob RPG::Image::create(); erfolgreich war und das machst du per

    if(meinBild != NULL)
    {
    RPG::Image::destroy(meinBild );
    }

    Geändert von Corti (03.06.2013 um 22:58 Uhr)

  7. #1027
    Wieso kommt es eigentlich manchmal dazu, dass eine Meldung mit "DirectDraw Error (DDERR_NOEXCLUSIVEMODE)" angezeigt wird, wenn ich dir RPG_RT.exe starte?
    Ich hab jetzt endlich sogar mal ne .dll aus dem Compiler rausbekommen und das Spiel gestartet zum Testen und da ist das mal wieder aufgeploppt.
    Liegt aber glaub ich nicht an dem PlugIn, da das vorher auch schon aufgetaucht ist. Also direkt nachdem ich den DynRPG- Patch installiert habe ohne irgendwas mit PlugIns zu machen.
    Erscheint aber nur, wenn ich das Spiel im Vollbild öffnen möchte. Im Fenstermodus passiert nichts.


    Okay...hab's jetzt im Fenstermodus ausprobiert uuuuund....nichts ._. Das Fenster bleibt schwarz und ich krieg's nurnoch über den Task Manager geschlossen und für den Bruchteil von einer Sekunde,
    sehe ich eine Fehlermeldung.

    EDIT:

    So ich hab das mal gescreent bekommen:



    Ja sieht wohl nach einer Zugriffsverweigerung aus Aber wo genau?
    Ich hab das mit dem RPG::Image::create(); usw. jetzt in onInitFinished() gepackt und das RPG::Image::destroy ist im onExit Callback.
    Da das ganze noch vor dem auftauchen des Title Screens passiert, gehe ich mal davon aus dass das während des onInitFinished passiert.

    Geändert von Quetschi (04.06.2013 um 07:16 Uhr)

  8. #1028
    zeig mal deinen onFrame-Callback-Code.

    Edit @Morden: Sniped, BaM BaM ;-)

    Geändert von Corti (04.06.2013 um 08:51 Uhr)

  9. #1029
    Könntest du mehr vom Source posten?

    Edit: Corti war mal wieder schneller xD

    PeAcE
    MorDen

  10. #1030
    Okay.


    Und mir fällt gerade auf, dass ich überprüfen müsste, wieviele Helden ich in der Party hab, da ansonsten ja immer die Bilder gezeichnet werden, auch wenn an dieser Position kein Held ist
    Das ergibt ja keinen Sinn, wenn dann da plötzlich einfach so ein Bild ist.
    Wahrscheinlich hiermit:
    Code:
    static RPG::Actor* RPG::Actor::partyMember (int  index) [static]
    Aber wie benutze ich das? Das "(int index)" heißt doch, dass ich dem ganzen eine Integerzahl übergeben muss oder nicht? ._. Wenn ja, welche?

    Geändert von Quetschi (04.06.2013 um 16:18 Uhr)

  11. #1031
    Jap, heißt es.
    Du müsstest es dann so aufrufen:
    Code:
    RPG::Actor* actor;
    actor = RPG::Actor::partyMember(INTEGER);
    Dabei ist darauf zu achten, dass die Funktion »0«-indexiert ist, also von 0 bis 3, nicht von 1 bis 4!
    Dann müsstest du damit dann halt auch prüfen können, ob der zurückgegebene Actor != NULL ist.
    Korrigiert mich, wenn sich die Funktion anders verhält!

    EDIT:
    Dein onFrame-Code sieht für mich auf den ersten Blick richtig aus.

    PeAcE
    MorDen

    Geändert von Morden (04.06.2013 um 16:22 Uhr)

  12. #1032
    Hrm, spontan sehe ich den Fehler nicht.

    Geht er weg wenn du die draw-Zeilen rauseditierst?

    @Partymember:
    Hatte ich dir bereits auf der vorherigen Seite beschrieben ;-) Aber hier nochmal

    // Zeiger auf ein Heldenobjekt
    RPG::Actor * actorCurrent;

    // Die Funktion "RPG::Actor::partyMember" gibt dir einen Zeiger auf ein Heldenobjekt auf dem übergebenen Index zurück
    actorCurrent = RPG::Actor::partyMember(indexHero); // Der Index ist 0 bis einschliesslich 3, da maximal 4 Helden in der Gruppe sein können. Die Reihenfolge entspricht der im Menü.

    // Nachdem du den Helden auf einem Index angefordert hast, musst du überprüfen, ob wirklich ein Held zurückgegeben wurde.
    if(actorCurrent != 0) // if zero, no actor has been returned
    {

    }

    EDIT: Ey Morden war schneller! Damit stehts nun 1:1 , haha ^_^

  13. #1033
    Ich hab die draw-Zeilen mal auskommentiert, leider kam immernoch derselbe Fehler.
    Allerdings wurde mir die Meldung diesmal über dem Fenster angezeigt und das Spiel hat nach einem Klick auf "OK" gestartet.
    Danach hab ich nochmal die draw-Zeilen hinzugefügt und auch dieses mal hat das Spiel nach einem Klick auf "OK" gestartet. Mir komm't gerade so vor, als ob es zufällig ist ob die Meldung über oder unter dem Fenster auftaucht.
    Wenn sie allerdings unter dem Fenstar auftaucht, hilft nur ein Beenden über den Task Manager.
    Danach bin ich im Spiel selber ins Menü gegangen und dann bekam ich erneut die Meldung mit "Access Violation in module ..." und wurde auf den Title Screen zurückverfrachtet.

  14. #1034
    a) Kommentier mal alles raus. Einfach Callbacks ohne Inhalt. Was passiert dann?
    b) mach dann mal die reinladen-destroy schritte im onInit, einmal. Erstmal sehen ob das funktioniert.
    • Welche Version hat deine RPG_RT.exe?
    • Hast du irgendwelche Patches drauf?
    • Welche Version des C++-Compilers benutzt du?

  15. #1035
    @Quetschi

    Hast du das Präprozessor-Makro »AUTO_DLLMAIN« definiert?
    Also am Anfang deiner main-Datei:
    Code:
    #define AUTO_DLLMAIN
    Weiß zwar nicht direkt, ob das was damit zu tun hat, aber vielleicht kann man so den Fehler eingrenzen.
    Ansonsten wäre dein ganzes Projekt bzw. dein ganzer Source vielleicht hilfreicher, als immer nur son Schnipsel.

    PeAcE
    MorDen

  16. #1036
    Außer dass mir gerade bei 4 von 5 mal starten wieder der Fehler "DirectDraw Error (DDERR_NOEXCLUSIVEMODE)" um die Ohren gehauen wurde, was scheinbar durch bloßes patchen ausgelöst wird, kam keine "Access Violation" mehr.
    (Hab es dann nochmal bei einem komplett neuem Projekt ausprobiert, weil's mir zu doof wurde ._.)
    Ich benutz' die Code:: Blocks Version 12.11. Hab sonst keine Patches drauf. Die Version der RPG_RT.exe ist 1.0.8.0.

    EDIT:
    Wenn ich das ganze im onInit ablaufen lasse, kommt wieder Access Violation.

    @Morden: Ja das #define AUTO_DLLMAIN ist drin. Und hier nocheinmal der ganze Code:

    Geändert von Quetschi (04.06.2013 um 20:25 Uhr)

  17. #1037
    Bei der Version 12.11 von CodeBlocks ist MinGW mit GCC Version 4.7 dabei, du solltest aber lieber GCC Version 4.6.1 verwenden!
    Ich such dir gleich mal nen Link raus.

    EDIT:

    Hier schonmal ein Link zu einem GCC in Version 4.6.1: http://sourceforge.net/projects/tdm-...1.exe/download. Beim Installieren darauf achten den Haken bei Updates rauszunehmen sonst installiert er gleich das neuste, also 4.7.1 wenn ich mich nicht täusche.

    Ich denke das müsste dann deine Probleme auch schon beheben, denn dein Code an sich scheint nicht falsch zu sein und sollte eigtl laufen - so auf den ersten Blick.

    Du musst dann halt in CodeBlocks nur einen neuen Compiler einrichten und dort dann auch halt DynRPG einfügen.

    PeAcE
    MorDen

    Geändert von Morden (04.06.2013 um 17:23 Uhr)

  18. #1038
    Okay...Ich hab mir jetzt einfach ne ältere Code:: Blocks version geholt und ich krieg keine Meldung mit Access Violation.
    Ich muss jetzt nurnoch die Transparenz rausnehmen, weil man sonst noch die Zahlen darunter sieht ._. Aber das ist ja schnell getan.^^
    Und dann noch abfragen wieviele in meiner Party sind.

    Ich kriege aber immernoch ab und zu den Fehler mit "DirectDraw Error (DDERR_NOEXCLUSIVEMODE)", wenn ich es aus dem Ordner starte (also im Vollbildmodus).
    Weiß jemand was es damit auf sich hat? Entweder ich erhalte den Fehler und das Spiel schließt sich, oder aber ich krieg den Fehler nicht und das Spiel minimiert sich.
    Wäre gut wenn ich das auch noch irgendwie weg kriege.

  19. #1039
    Versuch mal "AnotherFullscreenMode", gibts hier irgendwo im Forum. Welches Windows hast du?

  20. #1040
    Okay, dann such ich mir den mal raus.

    Windows 7 64-bit

    Oh...und uhm Corti?

    Zitat Zitat
    Code:
    // Die Funktion "RPG::Actor::partyMember" gibt dir einen Zeiger auf ein Heldenobjekt auf dem übergebenen Index zurück
    actorCurrent = RPG::Actor::partyMember(indexHero); // Der Index ist 0 bis einschliesslich 3, da maximal 4 Helden in der Gruppe sein können. Die Reihenfolge entspricht der im Menü.
    
    // Nachdem du den Helden auf einem Index angefordert hast, musst du überprüfen, ob wirklich ein Held zurückgegeben wurde.
    if(actorCurrent != 0) // if zero, no actor has been returned
    Wenn der Index von 0 bis 3 geht, wieso muss ich dann prüfen ob er ungleich 0 ist? ._.

    EDIT: Okay, ich glaub ich hab's verstanden.

    EDIT2: Okay. Das PlugIn ist fertig ._. Großes Dankeschön an alle die mir geholfen haben!
    Muss jetzt nur noch mit dem AnotherFullscreenMode gucken ob dann immer noch der Fehler mit dem DirectDraw erscheint. Aber das mach ich morgen, bin jetzt zu müde :'D

    Geändert von Quetschi (04.06.2013 um 23:30 Uhr)

Berechtigungen

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