Seite 1 von 26 1234511 ... LetzteLetzte
Ergebnis 1 bis 20 von 505

Thema: +++ DynRPG - Das RM2k3-Plugin-SDK +++

  1. #1

    +++ DynRPG - Das RM2k3-Plugin-SDK +++

    DynRPG ist ein Plugin-SDK für den RPG Maker 2003. “SDK” bedeutet “Standard Development Kit”, und in diesem Fall heißt das dass jeder nun seine eigenen Erweiterungen für den RPG Maker erstellen kann, solange er C++ beherrscht. DynRPG bietet nicht nur dem Durchschnittsprogrammierer Zugang zu der Welt des “Patchens” sondern es stellt auch eine Basis für weitaus mächtigere Erweiterungen dar als all die “Patches” die für den RPG Maker bisher erstellt wurden.

    DynRPG funktioniert mithilfe von Plugins. Plugins können in C++ geschrieben werden, sie werden geladen wenn das Spiel startet und von bestimmten Ereignissen informiert (wie das Zeichnen eines neuen Frames, der Schreibzugriff auf eine Variable, usw.) und sie können auf diese Ereignisse reagieren.

    Was bisher “Patches” waren werden nun Plugins. Jedes Spiel welches DynRPG verwendet kann mit einem neuen Feature erweitert werden indem man einfach eine Plugindatei in einen Ordner namens "DynPlugins" kopiert. Das ist viel einfacher als “Patchen”, etwas wovor viele Spielemacher sogar Angst haben weil sie denken, es könnte ihrem Spiel schaden. Und wenn jemand ein bestimmtes Plugin nicht mag, braucht er es nur zu löschen.

    DynRPG nützt also sowohl Plugin-Erstellern als auch Spielemachern:

    - Plugin-Macher können eine einfache C++-Bibliothek verwenden um mächtige Plugins zu schreiben und diese anderen Spielemachern zu Verfügung zu stellen!
    - Spielemacher bekommen viele neue Möglichkeiten nur durch das Kopieren der Plugins in ihr Spiel!
    - Professionelle Spielemacher sind in der Lage, Plugins zu schreiben, die exakt auf die Bedürfnisse ihres Spiels abgestimmt sind, z.B. könnten sie einen Teil ihres Action-Kampfsystems in C++ schreiben, ein eigenes Design für das Standardkampfsystem erstellen, oder sie könnten sogar ein komplettes Minispiel mit DynRPG erstellen… Die Möglichkeiten sind unendlich!

    Es gibt auch eine komplette Dokumentation (in Englisch!), online und auch als CHM-Datei im Download.

    Features des Patches:
    - Der DynRPG-Patch ermöglicht die Verwendung der DynRPG-Plugins!
    - Der DynRPG-Patch erlaubt 2000 Pictures, wovon alle ab ID 1001 beim Mapwechsel nicht gelöscht werden.
    - Der DynRPG-Patch behebt einige Bugs des RPG Makers und verbessert einige Kleinigkeiten.
    Mehr Info hier: http://rpg-maker.cherrytree.at/dynrpg/patch.html

    Features des SDK:
    - Zugriff auf viele Spiel-Objekte, u.a.:
    --- Helden
    --- Monster (aktuelle Monstergruppe)
    --- Aktuelle Map
    --- Events
    --- Pictures
    --- Bildschirm (!!!)
    --- Switches und Variablen
    --- Systemeinstellungen
    --- Musik und Sound
    --- und mehr
    - Abfangen von Ereignissen und die Möglichkeit, darauf zu reagieren und u.U. den Standard zu unterbinden, u.a.:
    --- Beim Zeichnen eines Events
    --- Beim Zeichnen eines Pictures
    --- Beim Zeichnen von best. Fenstern im Kampf
    --- Beim Zeichnen von Helden und Monstern im Kampf
    --- Bei der Aktion eines Helden oder Monsters im Kampf
    --- Jedes Mal wenn des Bildschirm neu gezeichnet wird
    --- Beim Ausführen eines Eventbefehls
    --- und mehr

    Überlegt mal, was damit möglich ist! Anregungen:
    - Ein Alles-Anpointern-Plugin
    - Ein Größere-Charsets-Plugin
    - Ein Fast-Pixelmovement-Plugin
    - Ein Alphachannel-Plugin
    - Ein Eigenes-Statusfenster-im-Kampf-Plugin
    - und VIEL, VIEL mehr.

    Mehr Info, Dokumentation und Download:
    >>> http://rpg-maker.cherrytree.at/dynrpg <<<

    Richtig interessant und mächtig wird die Angelegenheit erst durch gute Plugins. Im Moment stehe ich noch ganz am Anfang damit, daher habt etwas Geduld bis nützliche Plugins entstehen!

    Es gibt bis jetzt ein kleines Beispiel-Plugin, welches Conditions im Kampf als Icons anzeigt. Es ist hier weiter unten beschrieben und zum Download verfügbar.

    mfG Cherry

    EDIT:

    Neuer DynLoader mit Direktpatch-Feature!

    Wird dann auch in die (hoffentlich bald mal kommende ) nächste DynRPG-Version integriert.

    http://share.cherrytree.at/showfile-10117/dynloader.dll << Die dynloader.dll im Projekt hiermit ersetzen.

    Erstens mal ist da auch das Problem mit dem Müll am Ende von Stringparametern von Comments gefixt, und zweitens gibt es jetzt zwei Arten von Direktpatches:

    1) IPS-Dateien
    Ganz simpel: Ihr legt einen Ordner "DynPatches" an und schmeißt da einfach alle IPS-Dateien rein. Die Patches werden dann ohne RPG_RT.exe-Modifikation "on-the-fly" angewendet, d.h. das Entfernen eines Patches ist ganz einfach - nur die Datei wieder löschen (oder die Dateiendung umbenennen)!

    Beispiel für eine sinnvolle Anwendung wäre z.B. BetterAEP als IPS-Datei: http://share.cherrytree.at/showfile-10054/betteraep.ips
    Der PicPointerPatch liegt beispielsweise schon von Haus aus als IPS-Datei vor, da reicht reinkopieren.

    2) "Quick Patches"
    Für ganz kleine Patches ist es fast zu viel verlangt, eine IPS-Datei zu erzeugen, außerdem gibt es ja solche wo der Benutzer einen Wert (z.B. eine Koordinate) selber einstellen können soll. Dazu gibt es Quick Patches. Diese werden in die Section "QuickPatches" in der DynRPG.ini geschrieben und haben folgendes Format:

    BeliebigerName=Adresse,Daten,Adresse,Daten,...

    Die Adresse ist eine hexadezimale VA, die Daten können drei Formen haben:
    a) Hexstring: Eine Aneinanderreihung von Bytes in Hexadezimalschreibweise (Leerzeichen werden ignoriert und können also zur Übersicht verwendet werden). Beispiel: 49E148,EB71 - schreibt die 2 Bytes EB 71 an Adressen 49E148 und 49E149.
    b) Dezimale Zahl mit %-Prefix: Schreibt ein Byte an die angegebene Adresse, die Zahl ist dabei nicht hexadezimal angegeben (negative Zahlen möglich). Beispiel: 49E0BC,%48 - schreibt ein Byte 30 an Adresse 49E0BC.
    c) Dezimale Zahl mit #-Prefix: Schreibt einen 32-Bit-Integer an die angegebene Adresse, die Zahl ist dabei nicht hexadezimal angegeben (negative Zahlen möglich). Beispiel: 49E1F1,#270 - schreibt die 4 Bytes 0E 01 00 00 an Adressen 49E1F1-49E1F4.

    b) und c) sind dafür gedacht dass man leicht selber Werte eintragen kann (also Expertenuser A gibt Ottonormaluser B so eine Patchzeile und User B braucht nur die Zahlen nach % bzw. # seinen Bedürfnissen anpassen ohne irgendwas hexadezimal umrechnen zu müssen, Bytes zu vertauschen oder sonstwas).

    Hier ein Beispiel wie sowas aussehen kann:

    Code:
    [QuickPatches]
    ; Versteckt die EXP im Hauptmenü und im Statusscreen
    VersteckeEXP=49E148,EB71,49F1CA,EB67,49F095,EB21
    ; Setzt die Koordinaten des Titelbildschirmfensters auf 144/56
    VerschiebeTitelbildschirmFenster=490821,#144,490828,#56
    (Hinweis zum Titelfensterbeispiel: Der Maker verwendet da die X-Koordinate für die Mitte des Fensters aber die Y-Koordinate für die obere Kante.)

    mfG Cherry

    PS: Wer Dateioffsets in virtuelle Adressen umrechnen will: Für Offsets 0 - 400 addieren wir 400000, für Offsets 400 - C9200 addieren wir 400C00, für Offsets C9200 - CD400 addieren wir 400E00. Also normalerweise braucht man nur 400C00 zu addieren.

    EDIT: Quellcode ist jetzt verfügbar! https://github.com/CherryDT/DynRPG

    Geändert von Cherry (28.05.2021 um 00:29 Uhr)

  2. #2
    nette sache das ganze, eben schon ein wenig herum probiert und mit cherrys hilfe dann auch wenigstens mal das testprojetkt hinbekommen...
    aber ich muss sagen, da es wohl nicht möglich ist, hier mit visual studio zu arbeiten macht es das ganze doch recht unattraktiv für mich. bisher noch keiner IDE begegnet die ansatzweise das konnte, nur leider kann man das ja wohl so knicken
    das ist mein einzigster kritikpunkt bisher (außer das der "how to start" artikel vll ein bisschen größer hätte ausfallen können, da das auch für leute, die ein BISSCHEN ahnung von sowas haben, so wie ich, doch nicht ganz so ersichtlich ist, was jetzt genau zu tun ist, aber vll hab ich mich auch einfahc nur zu blöd angestellt^^).

    schönes ding, das ganze, performance test hab ich noch keine gemacht, aber wie gesagt, ich komm mit dem anderen zeugs einfach nicht klar, es ist spät, und ich bin müde. vll widme ich mich demnächst dem ganzen nochmal, grade bin ich ein wenig demotiviert

    nunja, gn8

  3. #3
    Die deutschsprachige Resonanz scheint sich in Grenzen zu halten, was?
    Momentan kann ich nur sagen dass es episch klingt, muss es aber noch ausprobieren.

    Da ich C++ kann, würde ich liebend gerne was zusammenfrickeln, weiß bloß noch nicht was.

    Wenn ich jetzt nur noch den Maker nutzen würde...hach, jede meiner Patchanfragen würde ich "einfach" selbst erledigen.


    Mit Code::Blocks + GCC dürfte es dann wohl auch keine Problem geben. Aber mal schauen...

    Edit: Das Testplugin lies sich ohne Problem kompilieren und funktioniert, wunderbar.

    Geändert von elvissteinjr (07.02.2012 um 18:29 Uhr)

  4. #4
    Werd ich mir ansehen wenn ich mit "Human Revolution"-Suchten fertig bin

  5. #5
    Ich finde keine Worte das du das wirklich so schnell fertig und veröffentlicht bekommen hast
    Jetzt habe ich keine Ausrede mehr und muss sofort anfangen mehr C++ zu lernen
    sektkorkenknallenlässt

    @anti-freak: Best IDE ever: Notepad++

    Geändert von fedprod (07.02.2012 um 21:57 Uhr)

  6. #6
    Gab ein Update. Bitte neu laden und neu patchen da auch ein kleiner Bugfix enthalten war. Siehe: http://rpg-maker.cherrytree.at/dynrpg/changelog.html

    Außerdem ein bisschen Info zu Problemen mit Dev-C++ bei Getting Started dazugeschrieben.

  7. #7
    Zitat Zitat von elvissteinjr Beitrag anzeigen
    Die deutschsprachige Resonanz scheint sich in Grenzen zu halten, was?
    Momentan kann ich nur sagen dass es episch klingt, muss es aber noch ausprobieren.
    Da ich C++ kann, würde ich liebend gerne was zusammenfrickeln, weiß bloß noch nicht was.
    Wenn ich jetzt nur noch den Maker nutzen würde...hach, jede meiner Patchanfragen würde ich "einfach" selbst erledigen.
    Mit Code:locks + GCC dürfte es dann wohl auch keine Problem geben. Aber mal schauen...
    Edit: Das Testplugin lies sich ohne Problem kompilieren und funktioniert, wunderbar.
    Liegt wohl daran dass nur wenige wirklich C++ programmieren können... und selbst wenn weiß ich nicht ob man dann gleich das Wissen hat mit dem Patch umzugehen...

    Ich selbst hab an der Uni etwas Pascal programmiert (in Lazarus irgendwelche Formulare mit bestimmten Funktionen hinter irgendwelchen Buttons, dann noch php, javascript und dann noch etwas java...

    Ob das jetzt reichen würde um auf C++ umzusteigen wage ich zu bezweifeln... wüsste auch garnicht womit ich anfangen müsste... ob ich mir erst mal die ganzen Bibliotheken ankucken müsste, was möglich
    ist (also den externen code den man immer einbinden kann) oder erstmal ne IDE ankucke und schaue was man überhaupt mit irgendwelchen Befehlen machen kann (mit Grafiken etc. hab ich bisher garnix gemacht)

    Das Einzige was ich vielleicht hinbekommen würde wäre dann ein paar eigene Scripts für die Berechnung von Schaden etc.

    Generell kann ich aber wieder nur sagen Respekt Cherry ^^y Freu mich schon wenn erste Leute damit schönes Patches schreiben! Mir graut es schon vor dem Tag an dem Cherry
    Arbeit oder Studium anfängt... und keine Zeit mehr für die Community hat, weil er sich irgendwo als Programmierer dumm und dämlich verdient
    Bei seinen Programmierkenntnissen müssten sich doch irgendwelche Softwareschmieden um ihn schlagen ^^

  8. #8
    Schon längst der Fall. Drum hab ich so wenig Zeit.

    Im Moment Zivi (muss ich - Österreich!) und freiberuflicher EDV-Dienstleister. Meine Kunden hab ich übers Internet gefunden, und wenn ich jetzt nicht Zivi wäre, was mir ja 40 Stunden pro Woche stiehlt (für etwa ein Zehntel von dem was ich anderswo für diese Stunden berechnen würde), würde ich mich wohl wirklich dumm und dämlich verdienen :-)

  9. #9
    Glückwunsch zur Fertigstellung Cherry. Hört sich rein theoretisch toll an. Finde übrigens den Contest eine großartige Idee, kann aber selber überhaupt nichts beisteuern. Ich hoffe jedenfalls, dass es in Zukunft hierfür nützliche Plugins geben wird, aber da du dich auf internationaler Ebene bewegst, sollte man da keine allzugroßen Bedenken haben.
    Wäre höchstens noch interessant, ob es auch möglich wäre, andere Programmiersprachen einzubinden. Würde vielleicht einigen helfen.

  10. #10
    Bitte updatet euer SDK! Ich hab einen kritischen Bug gefixt wo Funktionen "zufällig" crashten, je nach Optimierung des Compilers.

    Es gibt jetzt auch ein erstes "offizielles" Plugin, für Tastatur- und Mausabfrage: http://www.multimediaxis.de/threads/...nd-Mauseingabe


    Übrigens empfehle ich jetzt Code::Blocks als IDE und hab eine Schritt-für-Schritt-Anleitung bei Getting Started dazugepackt.

    Geändert von Cherry (13.02.2012 um 16:02 Uhr)

  11. #11
    Bug gefixt: Das Spiel stürzte ab wenn man im Shop was gekauft hat. Ein Tippfehler in einer Adresse, wie dumm von mir X_x

    Bitte neu laden und neu patchen.

  12. #12
    gelöscht

    Geändert von DNKpp (19.02.2012 um 00:18 Uhr)

  13. #13
    Naja, ich versteh den Code sowieso nicht, weil ich die Programmiersprache nicht verstehe. Da bringt zusammenzusetzen eher mit Cherry etwas,
    aber setzen wir die Diskussion lieber im richtigen Forum fort-> Pathfinding

  14. #14
    öhm, jo, warum schreib ich denn hier? o.O

    und ja, ich meinte cherry^^

  15. #15
    Bin gerade dabei ein simples Plugin zu schreiben, allerdings macht mir das Variablenlimit einen Stirch durch die Rechnung.
    Müsste fähig sein mit größeren Zahlen zu rechnen, das Limit lässt sich doch bestimmt hochschrauben, oder?

  16. #16
    welche variablen meinst du? die vom maker, oder die deines plugins?

  17. #17
    Die vom Maker. Mit 32bit ints in C++ komm ich schon zurande, keine Sorge.
    Der Pluginnutzer sollte halt bestenfalls mit Makercode rechnen können. Das bleibt dann auch flexibler, spart Code und Abfragen im Plugin.
    Es ist ja so, dass man problemlos Variablen monströse Werte geben kann, bloß der kann halt damit nicht rechnen.

  18. #18
    Die Beschränkung die von "<> Change Variable" erzeugt wird, lässt sich hiermit aufheben (in onStartup verwenden).

    Code:
    *reinterpret_cast<unsigned char *>(0x4AD36F) = 0xEB;
    *reinterpret_cast<unsigned char *>(0x4AD399) = 0xEB;
    (Achtung Hack! )

  19. #19
    Ich habs auch mal ausprobiert.

    Schonmal sehr gut die bis zu 2000 bilder!

    Aber da die wenigsten c++ können, wäre es möglich nicht eher eine hohe sprache als interpreter zu benutzen, etwa wie die neueren rpg maker versionen selbst ruby oder halt phyton, javascript. Vllt wäre dann der einstieg nicht so schwer.

    Aber ansonsten daumen hoch für das tolle projekt!

  20. #20
    Ich habe mir einige Gedanken gemacht und dadurch neue Ideen bekommen, die in Plugins verwirklicht werden könnten.
    Da ich selbst die Programmiersprache nicht beherrsche, schreibe ich diese Ideen hier nieder, damit andere damit vielleicht etwas anzufangen wissen!

    - Eventjump Plugin: Man kann die Sprunghöhe bestimmen und eingeben, sodass das Event z.B. 5Tiles hoch und 1 Tile weiter springt und die Bewegung beim Sprung einen perfekt an Höhe + Weite des Sprungs einen perfekt angepassten Bogen beschreibt - als Ergänzung dazu wäre es eine schöne Sache, wenn außerdem ein Schatten unter dem Event auftaucht ,bei steigender Höhe transparenter wird und bei Bodennäherung des Events wieder an Transparenz verliert(also dunkler wird).

    -Event with Pictureoperations-Plugin-> das es möglich machen soll, die gleichen Operationen, die bei Pictures möglich sind auch bei Events zu benutzen (sprich: wabern, rotieren, Transparenz-,Farbe ändern...)

    -Diagonal random move event: Die Möglichkeit bei der Zufallsbewegung auch die Diagonalrichtungen standartmäßig mit zu benutzen.

    -tracking face direction plugin: Ein Event kann ein anderes Event fixieren und dreht sich automatisch zur Richtung, in welcher sich das andere Ereignis/Der Held gerade befindet.

    -event-event follow/away movement plugin: Plugin mit der Möglichkeit, dass Events die "Move toward" und "Move away" Funktion auch auf andere Events statt auf den Helden beziehen können.

    -Pixelmovement Plugin: Okay, das hat Cherry bereits geschrieben-> aber das könnte (wenn erstellt) auch damit erweitert werden, das man die Standartzahl bei jedem Event festlegen kann, mit der es sich Pixelgenau von der Stelle bewegen soll (Bsp.: Ein Event, welches bei jedem Schritt 1/2/3/4...Pixel herumläuft).

    -Event formed shadow plugin->welches die Sillouette eines Events (Bsp. Eines Vogels) nimmt und optional bestimmbar 1 bis X Tiles nach unten versetzt, wobei der Schatten bei Frameänderung (Bsp.Vogel:Flügelschlagen)
    sich ebenfalls genau angepasst mitverändert.

    -Shadow and light source plugin: Welches die Sillouette eines Event nimmt und vom jeweiligen Event in die entgegengesetzte Richtung (Gradzahl) der festgelegten Lichtquelle wirft +optional erweiterbar mit mehreren Lichtquellen und manueller Transparenzbestimmung der geworfenen Schatten.

    Geändert von Oktorok3 (28.02.2012 um 17:12 Uhr)

Berechtigungen

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