Seite 51 von 71 ErsteErste ... 4147484950515253545561 ... LetzteLetzte
Ergebnis 1.001 bis 1.020 von 1418

Thema: Technik-Sammelthread für Probleme und Antworten

  1. #1001
    Ja, ich wollte das Standardmenü benutzen. Sonst hätte ich mir schon ein eigenes System gemacht. :'D
    Deshalb wollte ich wissen ob man das als Alternative für jedes Level auf 100 setzen kann um somit in Kombination mit einem eigenem System ggf. "Prozente" anzuzeigen.

  2. #1002
    Du kannst per DynRPG im Hauptmenü die Exp-Anzeigen übermalen und was anderes hinpinseln ;-)
    Kannst du etwas C++?

  3. #1003
    Okay. Gut zu wissen.
    Naja vielleicht ein kleines bisschen. :'D Ich setz' mich mal dran und schau ob ich das hinbekomme. Wenn nicht, werd ich mich wahrscheinlich nochmal melden müssen.

  4. #1004
    Ich erspare dir mal etwas Gesuche, was folgt sind meist Stückchen aus meinen Plugins. Das wird dir nicht die Arbeit abnehmen, aber vielleicht ein wenig dabei helfen. Viel Erfolg.

    Geändert von Corti (31.05.2013 um 15:55 Uhr)

  5. #1005
    Überzeichnet dies auch den Text/Zahlen-Output, der im Menü normal erfolgen würde? (wird darunterliegender Text-Output resettet, bevor der neue gedruckt wird?)

  6. #1006
    In onFrame mit Scene = Menu kannst du das ganze Bild überzeichnen, musst es aber in jedem Frame aufs neue tun.

  7. #1007
    @Corti
    Ist es nicht einfacher ein Bild zu laden oder per DrawText was zu erzeugen und dieses RPG::Image dann einfach auf den RPG::screen->canvas zu zeichnen? Denn immerhin zeichnest du so auch "über" allem, da deine Draw-Funktion ja erst dann ausgeführt wird, wenn der Screen schon soweit fertig gezeichnet ist.

    @bugmenot
    Wie schon eben geschrieben: Im onFrame()-Callback zeichnest du über den - bis dahin schon komplett vom Maker gezeichneten - Bildschirm. Außer der ScreenTransition - ich glaube das ist das Einzige, was über allem steht.

    EDIT: Sehe gerade Corti war schneller^^

    PeAcE
    MorDen

    Geändert von Morden (31.05.2013 um 15:59 Uhr)

  8. #1008
    @Morden: Hab bereits etwas reineditiert. Pixel sind da wirklich unnötig kompliziert, da war ich irgendwie betriebsblind als ich Codestücke aus meinem Plugin kopiert hab.


    Zitat Zitat
    Außer der ScreenTransition - ich glaube das ist das Einzige, was über allem steht.
    Im Kampfsystem die Menüs sind auch drüber.

  9. #1009
    Zitat Zitat von Corti Beitrag anzeigen
    Im Kampfsystem die Menüs sind auch drüber.
    Tatsächlich? Ich muss gestehen, dass ich mich weniger mit DynRPG+StandardKS beschäftigt habe >.<
    Da würde mich jetzt glatt interessieren, ob die Standard-MessageBox auch über allem ist. Das werde ich heute Abend wohl mal ausprobieren^^

    EDIT: Ich hätte auch mal weiter denken können: Brauch doch denn einfach nur checken, ob onDrawSystemBackground() nach onFrame() ausgeführt wird >.< Dann könnte man in solch einem Fall nämlich einfach dort auf den Bildschirm zeichnen.

    PeAcE
    MorDen

    Geändert von Morden (31.05.2013 um 16:06 Uhr)

  10. #1010
    Zitat Zitat von Morden Beitrag anzeigen
    Im Kampfsystem die Menüs sind auch drüber.
    Was? Über dem was du in onFrame gezeichnet hast? Das dürfte eigentlich nicht sein. Ich muss da mal nachforschen.

    Eigentlich sollten wirklich nur Screentransitions (und Movies, iirc - und eventuell "Frames" von System2 aber ich weiß grade nicht ob das stimmt) den Bildschirm nach onFrame manipulieren können. Alle Kampfgrafiken sollten von der draw-Methode von TLcfgBattleScene gezeichnet werden, und onFrame wird immer nach der draw-Methode der aktuellen Scene aufgerufen...

    "Über allem" kann man mit onDrawScreen zeichnen, aber das wird aufgerufen wenn aus Windows-Sicht der Fensterinhalt neu gezeichnet wird und das kann manchmal mehrmals beim selben Frame passieren, also sollte man beachten dass eventuell Sachen die man im vorigen onDrawScreen gezeichnet hat noch immer da sind.

    Zitat Zitat von Morden Beitrag anzeigen
    EDIT: Ich hätte auch mal weiter denken können: Brauch doch denn einfach nur checken, ob onDrawSystemBackground() nach onFrame() ausgeführt wird >.< Dann könnte man in solch einem Fall nämlich einfach dort auf den Bildschirm zeichnen.]
    Für die Messagebox? Eher nicht, denn onDrawSystemBackground bezieht sich nicht auf den Fensterhintergrund sondern auf den Menühintergrund (der normalerweise einfärbig ist). Das Callback ist dazu da, eigene Hintergründe zu zeichnen. Fenster erscheinen über dem Hintergrund, und auf der Map wird das sowieso nicht verwendet weil ja die Map da ist und kein Systemhintergrund.

    Geändert von Cherry (01.06.2013 um 13:23 Uhr)

  11. #1011
    Zitat Zitat von Cherry Beitrag anzeigen
    Was? Über dem was du in onFrame gezeichnet hast? Das dürfte eigentlich nicht sein. Ich muss da mal nachforschen.
    Alarm zurück. War ein Irrtum meinerseits. Bitte um Verzeihung.

  12. #1012
    Wie kriege ich es denn mit DynRPG hin, ein Bild anzuzeigen?
    Ich geh mal stark davon aus, dass das hiermit geht:


    Aber wie genau funktioniert das? ._.
    Bzw. der Teil mit dem Image...Ich hab mir jetzt ein Bild gemacht, welches ich dann einfach drüber legen würde. Aber wie sage ich dem Programm, dass es dieses Bild benutzen soll?

  13. #1013
    // Variable anlegen
    RPG::Image *imageDings;

    //Bild laden
    imageDings = RPG::Image::create();
    imageDings->useMaskColor = true;
    imageDings->loadfromFile("Pictures\\Blabal.png",false);

    // Bild anzeigen
    RPG::screen->canvas->draw(x,y,imageDings,...);

    // Bildressource freigeben
    RPG::Image::destroy(imageDings);

    ________________________________________________________________________

    Laden würde ich in "onInitFinished" machen, destroy in "onExit"

    Geändert von Corti (01.06.2013 um 22:57 Uhr)

  14. #1014
    Der Ordner heißt Picture, ohne "s" hinten, also Vorsicht beim Codekopieren, Quetschi!

  15. #1015
    Ich krieg das nicht hin. Scheint so, als ob ich mich doch nur minimal mit C++ auskenne und das "bisschen" schon überschätzt war. :/
    Beim Compilen krieg ich keine Fehlermeldung und im Spiel (also im Menü) wird mir das Bild nicht angezeigt :/
    Würde sich einer von euch eventuell dazu bereit erklären mir so etwas schnell zu basteln oder mal über meinen Code zu schauen? :x


  16. #1016
    Was tut das return-Statement da drinnen?

  17. #1017
    Zitat Zitat von Quetschi Beitrag anzeigen
    Ich krieg das nicht hin. Scheint so, als ob ich mich doch nur minimal mit C++ auskenne und das "bisschen" schon überschätzt war. :/
    Beim Compilen krieg ich keine Fehlermeldung und im Spiel (also im Menü) wird mir das Bild nicht angezeigt :/
    Würde sich einer von euch eventuell dazu bereit erklären mir so etwas schnell zu basteln oder mal über meinen Code zu schauen? :x

    Deine Funktion existiert gar nicht und wird deshalb nicht aufgerufen!
    Das Callback heißt:
    Code:
    void onFrame(RPG::Scene scene)
    und nicht

    Code:
    bool onFrame(char*pluginName)
    Da dynloader.dll deine Funktion also dementsprechend nicht kennt, wird sie auch nie aufgerufen.

    Edit:
    Falsch ausgedrückt: Die Funktion existiert schon, du hast sie ja geschrieben. Nur versucht halt dynloader.dll eine void onFrame(RPG::Scene scene) Funktion aufzurufen, welche du ja nicht definiert und implementiert hast. Deshalb wird deine Funktion NICHT aufgerufen.

    @Cherry
    Oh danke, da habe ich dann wohl einfach total falsch gedacht - mein Fehler. Hatte SystemBackground jetzt mit dem MsgBox-Hintergrund gleichgesetzt. Aber danke, das wäre ich bestimmt früher oder später drüber gestolpert xD

    PeAcE
    MorDen

    Geändert von Morden (03.06.2013 um 17:34 Uhr)

  18. #1018
    Ah okay. Das hab ich nun geändert, es passiert aber trotzdem nichts. Und müsste der Compiler nicht normalerweise eine .dll datei erzeugen?
    Das ist bei mir nämlich auch nicht der Fall, wie ich gerade gemerkt hab. ._.

    Trotzdem schonmal danke.

  19. #1019
    Das sollte er, wenn du das Projekt korrekt als »Dynamic Link Library« angelegt hast. Wenn du aber das Output-Directory der DLL nicht änderst, landet diese im Verzeichnis deines C/C++-Projektes, nicht aber in deinem RPG-Maker-Projekt.

    Edit:
    Habe mir gerade mal deinen Code ein wenig genauer angesehen und frage mich, was das soll:

    Code:
                            mmscn = getMenuScreen();
                            {
                            return (**reinterpret_cast<char ***>(0x4CDC60))[12];
                            }
    Du musst diese Funktion doch außerhalb erstmal als Funktion deklarieren und definieren -- dann kannst du sie aufrufen!

    Des weiteren solltest du in C/C++ primitive Datentypen immer mit 0 oder ähnlichem initialisieren, da sie sonst einen zufälligen Wert am Anfang haben können, der nicht zwingend 0 sein muss.

    PeAcE
    MorDen

    Geändert von Morden (03.06.2013 um 18:06 Uhr)

  20. #1020
    Hi, ich gehe davon aus, dass deine DLL nicht richtig kompiliert und dein Code vom Compiler nicht mal bemerkt wird, denn es ist ausgeschlossen, dass dieser Code problemlos kompiliert. Gerade als Anfänger ist es sinnlos große Konstrukte zu machen bevor nicht einzelne Stücke funktionieren.

    Fang doch damit an, ohne Schleifen, Scenes etc. einfach mal irgendwas auf den Bildschirm zu zeichnen.

    Bild laden
    Bild zeigen
    Bild löschen

    in 3 verschiedenen Callbacks!

    Zitat Zitat
    #define AUTO_DLLMAIN
    #include <DynRPG/DynRPG.h>
    int mmscn;
    // Methodensignatur falsch
    bool onFrame(char*pluginName)
    {
    if (scene == RPG::SCENE_MENU)
    {
    // du hast hier eine Funktion in deine Funktion kopiert.
    // Das hier site in Funktionsaufruf
    mmscn = getMenuScreen();

    // das hier wird entweder ein Fehler oder die Klammern werden ignoriert und der onFrame-Callback beendet
    {
    return (**reinterpret_cast<char ***>(0x4CDC60))[12];
    }
    // du solltest die getMenuScreen-funktion als Funktion in dein Projekt einfügen und dann aufrufen.

    if (mmscn == 0)
    {
    // das hier wird funktionieren , und ein Bild von der Festplatte laden, 60 mal pro Sekunde, absoluter Performancekiller
    RPG::Image *myExpImage;
    myExpImage = RPG::Image::create();
    myExpImage->useMaskColor = true;
    myExpImage->loadfromFile("Picture\EXP_Percentage.png",false);


    RPG::Actor * actorCurrent;
    // Global::etc. ist ein Namespace von mir, das solltest du schon ersetzen zB durch eine 4 ;-)
    for (int i=0; i< Global::kNumberOfHeros; i++)
    {
    // die Schleife über das Switchkonstrukt ist grober Unfug. In meinem Samplecode folgr auf die Schleife ein Prüfen, ob ein Held auf der Gruppenposition 0 bis 3 vorhanden ist. Wenn du einfach nur an X Stellen überzeichnen willst, dann zeichne an X stellen, ohne Schleifen.
    switch(i)
    {
    case 0:
    // wenn du optionale Parameter nicht angeben willst lass sie weg, srcWidth=1 etc. gehört hier nicht hin
    RPG::Canvas::Draw(200, 41, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
    break;
    case 1:
    RPG::Canvas::Draw(200, 99, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
    break;
    case 2:
    RPG::Canvas::Draw(200, 157, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
    break;
    default:
    break;
    }
    }
    }
    else
    {
    RPG::Image::destroy(myExpImage);
    }
    }
    return true;
    }

    Geändert von Corti (03.06.2013 um 18:11 Uhr)

Berechtigungen

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