Erweiterung für RPG2000/2003: Destiny for Maniacs!

  • Holerö!~


    Achtung, der nachfolgende Text ist größtenteils am 10. Oktober 2020 für das alte MVde-Forum entstanden, es ist nicht mehr zwingend alles davon aktuell, auch wenn ich nochmal grob drübergeschaut und ein paar Details angepasst habe. Zudem... zu sagen, ich würde hierdran gerade eher sporadisch arbeiten, wär sogar noch zu optimistisch ausgedrückt.


    Es ist viele Jahre her, da ersonn ein deutscher Programmierer mit dem klangvollen Namen Bananen-Joe die Erweiterung Destiny für den RPG Maker 2000, die neben einigen Patchfunktionen auch eine eigene Scriptsprache mitbrachte. Diese wurde bis Anfang des Jahres 2012 weiterentwickelt und schließlich mit der Veröffentlichung des Sourcecodes eingestellt.


    Da mich dieses Addon schon von Anfang an sehr begeistert hat, ich viel damit gebastelt habe und schließlich beim Vorabtest für Version 2 sehr viel Energie reinfeuerte, begab es sich 2016, dass ich anfing, Destiny auf Basis des veröffentlichten Source, größtenteils in x86-Assembler (ja, wahnsinnig gruselig) verfasst, um einen Berg neuer Möglichkeiten zu erweitern, denn in vielen Punkten hatte der Umfang noch deutliche Lücken. Diese Nebenbastelarbeit hielt bis Ende 2017 an, als ich eine Pause von all diesem Zeug einlegen musste, um nicht verrückt zu werden. Viele dazugehörige Experimente liegen neben so einigem fertigen Stuff seitdem unvollendet oder kaputt herum.


    Anfang Oktober 2020 hat mich der Wahnsinn erneut gefesselt, etwas daraus zu machen, diesmal jedoch mit Fokus auf den RPG Maker 2003 1.12! Auch wenn ich noch nie allzu sehr begeistert von diesem Programm war, da es das runde Produkt des Vorgängers mächtig zu zerpfuschen wusste, hat es besonders in jüngerer Vergangenheit einige neue Vorteile aus fähigen Händen geerntet, die man nicht ignorieren sollte. Doch was genau ist und kann dieses ominöse "Destiny" nun eigentlich? Dazu kommen wir jetzt.


    [Wie war das damals eigentlich?]

    Destiny kam ursprünglich in Form eines Patchers im Jahr 2008 heraus, der diverse Einstellungsmöglichkeiten mitbrachte. Das Herzstück war die Einbindung der Bibliothek "Destiny.dll", die Notizen und den sogenannten MessageLink als Scriptcode in einer eigenen Sprache verarbeiten kann. Weitere Einstellungen, von denen diverse erst gegen Ende der Entwicklung hinzukamen, waren unter anderem das Ändern von Fonts oder diversen Dateinamen, eine EnterHeroName-Reperatur sowie das Vertauschen der Zeichenebenen-Reihenfolge (Panorama, Above-Tiles, Pictures, Timer, etc.) auf dem Mapbildschirm. Ob und was alles von diesen Extras diesmal dabei sein wird, ist noch nicht entschieden, denn diese sind absolut nicht der Fokus.


    [Hab gehört, es gibt Scripting?]

    DestinyScript bietet eine Vielzahl an Datenlese- und -Manipulationsmöglichkeiten, eigene Speicherbereiche für Zahlen, Kommazahlen und Texte sowie das Ausführen von diversen Spielfunktionen, die nicht über Eventbefehle erreichbar sind. Dazu gehörten 2012 bereits Objekte wie Helden, Skills, Gegenstände, Attribute, Zustände, Events, Pictures, die Map, der Bildschirm und ein voller Tastenzugriff auf Tastatur und Maus. Die zuvor unveröffentlichte Erweiterung von ab 2016 gab vielen dieser Bereiche eine Menge weitere Inhalte, fügte allerdings auch Zugriff auf bspw. Animationen, Gegner, Gruppen, ChipSets, Terrains, System-BGM/-SE und Timer hinzu, es würde einfach zuviel werden, hier wirklich alles davon zu nennen. Ihr könnt außerdem diverse Syntax-Basics nutzen, die ungefähr jede Sprache mitbringt, jedoch beherrscht sie z.B. nicht das eigene Anlegen von benannten Konstanten oder Programmvariablen. Kurzum bekommt ihr eine Menge mehr Macht über die Engine, jedoch, das sei gesagt, NICHT im geradezu unendlichen Maße eines RPG Maker MZ.


    [Ist das denn alles legal?]

    Eine berechtigte Frage und was ältere Fassungen für RPG2000 angeht, so möchte ich dazu keinerlei Aussage treffen, diese sind hier nämlich nicht das Thema, zudem wurden dafür nie offizielle Regeln für Patches und dergleichen herausgegeben, auf die man sich stützen könnte. RPG2003 ab Version 1.10 jedoch verfügt über den Patchvertrag, der unter Erfüllung diverser Voraussetzungen das Verändern und Erweitern der Engine gestattet, ohne dass Entwickler die Berechtigung zur Verbreitung der damit geschaffenen Spiele riskieren. Ein populäres Beispiel hierfür ist Maniac Patch, prägt ihn euch gut ein, dieses gute Stück wird noch wichtig.


    [Für welche Version nochmal gleich?]

    Wie ich gerade sagte, ist Maniac Patch ein wichtiges Element hierbei, denn dieser wird für die Version, die ich hier hoffentlich irgendwann bereitstellen werde, in der Revision mp200128 oder mp210414 vorausgesetzt, das bedeutet, ihr müsst euren Maker sowie die RPG_RT 2003-1.12 eures Spiels bereits zuvor damit verarbeitet haben. Es lohnt sich, selbst wenn ihr Destiny nicht auch noch draufpacken wollt. Wenn euch interessiert, was der so kann, schaut mal in den oben verlinkten Artikel.


    [Wie ist der Stand?]

    Am gestrigen Tage habe ich mich nach einer guten Woche Vorarbeit, die größtenteils aus einer weitreichenden, supertrockenen Datenanalyse mit viel Drecksarbeit bestand, an die Einbindung von Destiny.dll in die RPG_RT.exe 2003-1.12 mit angewendetem Maniac Patch gesetzt und mittlerweile geht das Programm nicht mehr beim Testen in Flammen auf oder verweigert den Dienst. Die Verarbeitung des Scriptcodes funktioniert, womit ich mich nun langsam daran machen kann, die ganzen Datenzugriffsmöglichkeiten und Funktionen, die inhaltlich momentan in Destiny stecken, durchzuprüfen, zu fixen und zu erweitern.


    [Brauch ich das?]

    Keine Ahnung, aber wenn du in den alten Makerchen Menüs, Kampfsysteme, Nameneingaben oder viel abgefahrenere Dinge bauen willst, sind Maniac und Destiny eine enorm große Hilfe bei der Arbeit.


    [Wie sieht der Funktionsumfang aus?]

    DestinyScript for Maniacs verfügt über eine neue, deutlich kompaktere, jedoch noch ebenso unfertige Hilfedokumentation, die man sich derzeit bereits auf MakerDev Library anschauen kann.


    [Kommt das auch für RPG2000?]

    Wie bereits erwähnt, es könnte problematisch sein, da dafür nichts geregelt wurde. Allerdings werden neue Builds von Destiny.dll mit diversen Versionen kompatibel sein, darunter auch RPG2000 1.07 und 1.62. Wie es sich mit der Bereitstellung von allem dafür Wichtigen, damit man das nutzen kann, verhalten wird, sei erstmal dahingestellt.


    [Wann kommt's raus?]

    Sobald ich mir sicher bin, dass dieses Ungetüm auf die Menge losgelassen werden kann. Das kann noch lange dauern, ich hab auch noch andere Sachen vor als das hier.


    [Darf ich testen?]

    Möglicherweise wird irgendwann mal in die Runde gefragt, ob wer Lust dazu hat, momentan aber noch nicht.


    [Soll ich hierauf warten bis ich was erstelle?]

    Das wäre keine besonders schlaue Idee. Frohes Basteln! Hopp-hopp! Los, baut coole Sachen. =D


    [Wird das denn überhaupt fertig?]

    Finden wir's einfach mit der Zeit heraus. Hakuna Matata!


    [Dein Lieblingsfeature?]

    Picture-Manipulation all the Way!


    [SCREENS BITTE!]

    Momentan fällt mir nichts Aufregendes ein, das unmissverständlich in Standbildform die Macht von DestinyScript demonstriert und aus der Reverse-Engineering-Arbeit werde ich aus offensichtlichen Gründen nichts zeigen können. Also begnügt euch einfach mit einem winzigen Einblick darin, wie einfacher Testcode aus zweckentfremdeten Notizen und dem Messagelink ("\()") aussehen kann, mit dem ich mich vergewissere, dass die Verarbeitung klappt. Das hier ist nichtmal die Spitze der Spitze der Spitze des Eisbergs.


    13219-pasted-from-clipboard-png


    [DER DOWNLOAD, VERDAMMT!]

    Ja, äh... hast du nur hier runtergescrollt, um was zu laden? Not ready yet. Ich hab noch nichtmal Patching-Tools bereit, damit ihr es so bequem wie möglich habt (wenn das überhaupt je passiert), geschweigedenn die Hilfedokumentation.



    Nun denn, das soll's erstmal gewesen sein. °▽°


    © 2006~2012 Bananen-Joe | Extended by KotatsuAkira


    ~炬燵あ

  • Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 17. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Zeit für den ersten kleinen Zwischenstand, was die letzte Woche so zusammengekommen ist an Fortschritt.


    Die meiste Arbeit nimmt neben ein paar kleinen Aufräumarbeiten und Neubenennungen, ansonsten tut sich funktionell erstmal wenig, derzeit die neue Hilfedokumentation ein, die bedeutend knapper ausfallen wird als die vorbildlichen, jedoch auch mitunter wahnsinnig ausführlichen Seiten der alten Destiny2-Hilfe, die sich immer mit nur einer Eigenschaft oder Methode/Funktion gleichzeitig, passendem Beispielcode und allem drum und dran auseinandersetzten.


    Strukturell wird es sich mehr so verhalten, dass die Inhalte und Möglichkeiten eines ganzen Objektes jeweils auf einer Seite untereinander aufgeführt werden, ohne sich großartig viel mit Beispielen aufzuhalten, zumindest vorerst. Ich möchte in einem realistischen Zeit- und Aufwandsrahmen das Nötigste fertig haben, das man braucht, um mit DestinyScript mindestens halbwegs ordentlich zu arbeiten und nicht ewig an allem hängen.


    Hier eine kleine Übersicht über die übergeordneten Objekte, die DestinyScript bietet, was sie ganz grob gesagt bedeuten und wie sie in der Hilfe momentan repräsentiert sind (alles was auf dieser groben Ebene neuer als 2012 ist, ist unterstrichen). Neben den Ausführungen zu diesen wird es allerdings auch noch andere Inhalte geben, wie eine Willkommensseite, Erklärungen zu Destiny, DestinyScript, der Syntax, Operatoren, Konstanten, Einschränkungen und solchen Dingen.


    *.AuroraSheetEinheitliche Grafikmanipulation für viele verschiedene Bereiche im Speicher:



    Kampfhintergrund, Gegnergrafiken, Eventlaufgrafiken, ExFont, Windowskin, Tileset, Dialogbox, Dialogface, Panorama, Pictures, Animation, Wetter
    Angefangen
    a[], d[], f[]

    s[], v[]
    Speicherbereiche für ANSI-Strings, Dwords und Floats sowie Zugriff auf Switches und VariablenDokumentiert
    Actor[]Helden, HeldendatenbankDokumentiert
    Animation[]AnimationsdatenbankDokumentiert
    BattleKampfdaten, Aktuelle Gegnergruppe, KampfeinstellungenDokumentiert
    Battler[]Datenbanktab "Animations 2" (RPG2003)Dokumentiert
    Client[]Netzcode-Basis: Verbindung zu anderen ComputersystemenAngefangen
    CommandAusführen eines Eventbefehls nach Abschluss des Scriptblocks (bisher nur RPG2000 bis 1.10)Dokumentiert
    CommonEvent[]CommonEvent-DatenbankDokumentiert
    ConvertFormatwandlung für verschiedene Arten von Werten.Angefangen
    DestinyDestiny-Basisdaten, Destiny-Speicherformat, Windows-MessageBox, Debugger, KonsolenfensterAusstehend
    DirectoryVerzeichnisfunktionen innerhalb des Spielordners (Anlegen, Umbenennen/Verschieben, Löschen,...)Ausstehend
    Element[]

    (LEGACY: Attribute[])
    Elementdatenbank (umbenannt, alte Bezeichnung weiterhin benutzbar)Dokumentiert
    Enemy[]

    GegnerdatenbankDokumentiert
    Error[]Einzelne Fehlermeldungen von DestinyDokumentiert
    ErrorsAllgemeine Fehlereinstellungen von DestinyAusstehend
    Event[]Events auf der Map, Indexiert per IDDokumentiert
    File[]Dateifunktionen innerhalb des Spielordners (Erstellen, Lesen, Schreiben,...)Ausstehend
    GameStandard-Spielstandformat, Spiel verlassen, Parameter, Viele sonstige Datensätze die ich vielleicht noch umlagereAusstehend
    HarmonyAudiosystem von Harmony.dll (RPG2000 <1.50, RPG2003 <1.05) bzw. RPG_RT.exeAusstehend
    InputVollzugriff auf Daten der Engine-internen Ergebnisse von Tastenabfragen auf den GamebuttonsAusstehend
    Item[]GegenständedatenbankAusstehend
    Job[]Jobklassendatenbank (RPG2003)Ausstehend
    Joypad[]Komplette Beschaffenheits-/Statusabfrage von allen Joysticks/Gamepads, die Windows-Multimedia erkennt (üblicherweise bis zu 16)Ausstehend
    KeyboardTastenabfrage- und Kontrolle auf der Tastatur, Abfrage diverser TastaturbeschaffenheitsdatenAusstehend
    LogicLogische Schaltungen und Vergleiche (teils ein Relikt von Destiny 1.0)Inhalt fertig
    MapAktuelle Map, Mapbildschirm, Mapeinstellungen, MapTree-DatenAusstehend
    MapEvent[]Events auf der Map, Indexiert wie sie im Datensatz hintereinanderweg stehenDokumentiert
    MathKomplexe mathematische Abläufe (größtenteils Winkelfunktionen in allen Varianten)Inhalt fertig
    MessageDialoge-Textbox, Textboxeinstellungen, Enthält das ehemals eigenständige Objekt "FaceSet" (als "Face", alte Bezeichnung weiterhin benutzbar)Inhalt fertig
    MouseZugriff auf Mausposition und diverse andere Eigenschaften, KEIN Mausrad (da Maniac es abfragen kann, kann ich diese Daten vielleicht für diese Version abgreifen lassen, bisher nur Theorie)Ausstehend
    PanoramaMap-Panorama-EigenschaftenAusstehend
    PartyHeldengruppe/Spielerfigur, InventarInhalt fertig
    Picture[]Pictures, PicturemanipulationAusstehend
    ScreenSpielbildschirm, Animation, Wetter, SpielfensterAusstehend
    ServerNetzcode-Basis: Eingehende Verbindungen von anderen ComputersystemenDokumentiert
    Skill[]SkilldatenbankAngefangen
    State[]

    (LEGACY: Condition[])
    Zustandsdatenbank (umbenannt, alte Bezeichnung weiterhin benutzbar)Angefangen
    StringAnalyse, Vergleich und Änderung von ZeichenkettenDokumentiert
    Terrain[]TerraindatenbankDokumentiert
    Tileset[]TilesetdatenbankDokumentiert
    TimeAktuelle Uhrzeit, Aktuelles Datum, System-Tick, Zeitverschiebung, SommerzeitDokumentiert
    TroopGegnergruppendatenbankDokumentiert


    ~炬燵あ

  • Myau!~ °ω°


    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 17. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Es hat sich heute infolge einer spontanen Idee ergeben, dass sich ein weiteres neues Objekt zum Roster hinzugesellt, mit dem ihr vollständigen Lesezugriff auf die MapTree-Daten erhaltet. Der MapTree enthält Informationen, die von der Engine schnell gelesen können werden müssen, ohne betreffende Maps zu öffnen, das sind bei RPG2000/2003 eine ganze Menge (weswegen Spiele mit kaputter LMT nach Anwenden des Notfall-Tools MapTreeCreator was das angeht nur Dummy-Daten bieten können... immer noch besser als ein kaputtgebliebenes Spiel).


    Ich präsentiere, aus dem Debugger heraus, einen Blick auf "TreeMap"! Wenn jemand einen besseren Bezeichner dafür auf Tasche haben sollte, immer raus damit, denn mir fiel nichts Besseres ein. Ebenfalls aufgeführt werden, wie man sehen kann, auch der symbolische "Ordner" sowie AREAs.


    13301-pasted-from-clipboard-png


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 20. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Neulich erwähnte ich in der Tabelle noch, dass ich, was das Mausrad betrifft, erstmal gucken muss, ob und wie ich an die Daten rankomme, die ManiacPatch da sich zusammenholt, schon hat's gestern Abend geklappt, "Input" von Destiny darauf Zugriff zu verschaffen.


    Einen Teil der Nacht habe ich nun damit zugebracht, noch einen obendraufzusetzen, damit über die Version, wie sie für DestinyForManiacs gepatcht werden wird, auch horizontale Mausradeingaben in RPG2003-112MP erkannt und verarbeitet werden. Eine Sache, die kaum jemand jemals anwendet oder überhaupt kennt, kann das sein? Ein horizontales Rad existiert allerdings per Definition, bzw. lässt sich z.B. bei meiner Maus (und das ist eine der einfachsten, die es derzeit so gibt) dieses sogar benutzen, indem das normale Rad zur Seite gekippt wird. Ein Feature, das ich bei dem guten Dingchen überhaupt erst einige Zeit nach dem Kauf entdeckt habe, so unüblich kann's also nicht sein.


    Und das war's auch schon an Neuigkeiten, abgesehen davon, dass auch bei der Hilfe die Inhalte noch immer halbwegs vorwärtskommen.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 23. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Die Hilfe kommt recht gut vorwärts, jedenfalls fehlen bei den Objekten nur noch ein paar wenige, die abgehandelt werden müssen, danach wird es daran gehen, endlich Sachen wie die Syntax zu erklären (ohje, ohje). Parallel dazu schaue ich mir noch immer die vor allem neueren Sachen von DestinyScript an und baue/benenne einige von ihnen noch um. So auch geschehen mit der Achsen-Erkennung von Joysticks/Gamepads, was in unveröffentlichten Versionen von 2016/2017 noch leicht komplizierter gewesen ist. Und damit es ein bisschen bunter hier wird, gibt's noch anbei einen Screen von einem GamepadInput-Test-Tool, das ich vorhin in einem Event zusammengeklebt habe.


    13455-pasted-from-clipboard-png


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 25. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Sämtliche Objekte, so wie sie jetzt existieren, sind abseits von Senf, den ich aussortieren werde, grob dokumentiert (offenkundige Schwachstelle, bei Funktionsparametern stehen bislang keine Datentypen). Vielleicht kann ich die unfertige Hilfe ja demnächst oder weißdergeierwann vorab irgendwo im Webseitenformat ausstellen, damit sich Interessierte schonmal vom gequetschten Inhalt überrumpeln lassen können, ist bisher nur ne Überlegung.


    Jetzt stehen noch so einige aufregende Schritte an. Neben dem Kümmern um die Erklärung von DestinyScript ansich, da werd ich mich bestimmt sehr an der alten Hilfe orientieren, müssen einige Sachen noch funktionstechnisch in der DLL auf RPG2003, bzw 1.12, bzw. Maniacs ausgerichtet werden (ohne die Funktionalität bei anderen Versionen zu zerstören), seit vorhin ist das Laden von Pictures aus Dateien (ohne weitere Angaben), ohne den herkömmlichen Eventbefehl dafür direkt zu verwenden, fertig angepasst. Zumindest crasht es nicht.


    Was das Command-Objekt zum Zwischenschieben eines (fast) beliebigen Eventbefehls angeht, würde ich mir in nächster Zeit bei RPG2003 erstmal keine große Hoffnung machen.


    ~炬燵あ

  • Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 27. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Mittlerweile hab ich mit dem Tool "MEX", das eh niemand mehr kennt, eine Menge Eventbefehle per Windoof-Zwischenablage analysiert, inklusive der neuen ab RPG2003-1.10 und denen, die Maniac hinzuwirft. Es hilft schon sehr, den Aufbau zu kennen. Einige bestehende sind jetzt auch für RPG2003 im Objekt [Command] angepasst und funktionieren ebenda (z.B. Richtungsangabe beim Teleport oder dauerhaftes Screen-Flashen), vor manch anderen graut es mir sehr.


    Ach, warum nochmal kümmer ich mich jetzt doch viel zu viel um den Command-Bereich, obwohl er ein übles Biest voller Funktionen ist, von denen so einige redundant und schlechter als ihre Pendants an anderer Stelle sind? Weiß es selber nicht.


    Die DestinyScript-Hilfeseiten habe ich nach diesem vielen Gemache nun aber auch endlich angefangen, Die Grundlage zur Verwendung sowie Kommentare in Code einfügen und die Erklärung der Datentypen sind bislang geschrieben. Ausstehend: Zahlenformate, Strings, Operatoren, Verzweigungen, Schleifen, Sprungbefehle, Konstanten, Fehler, MessageLink, Debugger.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 31. Oktober 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Die meisten Seiten der Hilfe sind "fertig", andere angefangen/lückenhaft und voller unerledigter Fleißdrecksarbeit, ich hab's auch endlich hinbekommen, den Eigenschaften von Objekten eindeutig beizufügen, ob sie schreibgeschützt sind oder nicht, musste dafür viele natürlich nochmal selbst im Code durchgehen und habe nebenher noch ein paar Dinge gefixt.


    So langsam könnten wir uns also einem Fertigungsstadium nähern, in dem ich andere (vorzugsweise Programmier-Erfahrene und Makerkundige mit ausreichend Willen und Geduld, sich eine Scriptsprache anzueignen) an die aktuelle DLL lassen kann, um mit all den Sachen zu experimentieren, die DestinyScript ihnen so vor die Nase wirft, und zu schauen, wie gut die Hilfe ihren Zweck erfüllt. Und wann das passieren könnte, steht weiterhin in den Sternen.


    Happy Halloween, so für die verbleibenden PFÜMPF Minuten.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 1. November 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Eine Sache, die ich hier noch unbedingt teilen muss, ist, dass der Eventbefehls-Einschleuser für ShowPicture jetzt offenbar genau auf der absoluten Kotzgrenze von dem liegt, was der gute alte MASM32 bereit ist zu kompilieren. Einige Parameter, die durch Maniac Patch hinzugekommen sind, musste ich kürzen oder vereinfachen. Entsprechend ekelhaft sieht es an der entsprechenden Stelle auch in der aktuellen Version der Hilfe aus. Ich hab das Feature übrigens bisher nichtmal getestet, aber nur schonmal so am Rande:


    13625-pasted-from-clipboard-png


    Die Reihenfolge der Parameter ist nicht verhandelbar, die Anweisung muss auch in anderen Versionen weiterhin funktionieren.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 3. November 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    "Command.ShowPicture()" scheint, wie ich kurz darauf festgestellt habe, in RPG2003-1.12MP seine Funktion ordentlich zu erfüllen, sieht jedenfalls jetzt noch danach aus, Tests mit [Move] und [Delete] sind noch ausstehend.


    Ein anderer Anschein hat mir dafür bis vorhin große Probleme bereitet, denn der MessageLink zum Ausführen von Code mitten in der Dialogtextbox hat, was ich ewig lange nicht gemerkt habe, alles an Text, abgesehen von aufgelösten Ergebniswerten in den jeweiligen Zeilen bei RPG2003-1.12MP plattradiert (ist halt blöd, wenn man nur isolierte Tests wie "\d[1]" macht, aber kein "Schinken \d[1] Käse"). Das Problem ist jetzt aber, ein paar hirnschmelzende Analysen und Experimente mit viel zu vielen offenen Programmfenstern später, aus der Welt.


    Abseits davon schleichen sich, daher straucheln ausstehende Parts der Hilfe leider gerade extrem, immer noch neue Mini-Ergänzungen in den Fundus von DestinyScript ein, die viel zu viel Extra-Arbeit mit sich bringen, ich aber einfach nicht lassen kann. Die letzten zwei Tage betraf das den Lesezugriff auf einige Eigenschaften des RPG_RT-internen MIDI-Players (also wirklich nur für genau dieses BGM-Format) ab RPG2000-1.50 und RPG2003-1.05. Aus diesem gibt es jetzt die eingestellten Werte für Fade/Lautstärke/Pitch/Panning, den FadeIn-/FadeOut-Status, die Taktposition und ein paar entschlüsselte Eckdaten der laufenden Datei (Anzahl enthaltener Tracks, Abspieldauerangabe in Ticks, TimeDivision-Wert). Außerdem gibt es zwei Datensätze, die anscheinend mit den 16 MIDI-Kanälen zu tun haben, ich aber nicht ganz sicher zuordnen kann (die Defaults für die Werte darin sind bei jedem Kanal [100 (??Lautstärke??)] und [64]).


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 4. November 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Der eine MIDI-Kanäle-Datensatz hat sich mittlerweile wirklich als die jeweilige Lautstärke entpuppt, mit dem anderen von den beiden kann ich noch immer nichts anfangen. Wenn jemand Ahnung davon hat, bzw etwas weiß, das zum Dateiformat und zu einem Default-Wert von 64 passen würde, nur zu, ich bin neugierig. Wenn ich an den Werten herumdrehe, kann ich leider keinen Unterschied im Wiedergegebenen feststellen.


    In der Zwischenzeit ist auch der MP3-Part (auch wenn ich dringlichst abrate, dieses Format jemals zu verwenden) vom Audiosystem halbwegs analysiert (Bei WAV sieht's währenddessen eher aus wie Krätze und die Betrachtung vom OGG-System, das Maniac Patch mitbringt, steht noch aus) und mit Zugriffsmöglichkeiten versehen.


    Und hier ein paar neue Eventbefehls-Ersatzfunktionen, die beliebig in Scriptblöcke eingebaut werden können und teils mehr als ihre Vorlagen können:

    • BGM und SE aus einer Datei (Spiel/RTP), einem Datenbankeintrag oder dessen Standardeinstellung, falls seit Spielstart geändert, abspielen
    • BGM-FadeOut mit Millisekunden-Angabe, BGM Stoppen, Alle SEs stoppen
    • BGM-Eckdaten ins Event- (auf Befehl gemerkte BGM), Kampf- (gemerkte Map-BGM) oder Fahrzeug-Backup (gemerkte Lauf-BGM) verfrachten
    • BGM aus einem der drei Backups abspielen, jetzt auch mit FadeIn-Dauer, die auch permanent überschrieben werden kann

    ~炬燵あ

  • Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 5. November 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar. Zudem wurde der Anfang leicht bearbeitet, ursprünglich war der Text eine Antwort auf einen Post von Zeder.


    Es ist tatsächlich Panning (Raumausrichtung), das war mir irgendwie vorher nicht aufgefallen oder ich hab's gar nicht erst richtig gemacht. Wenn ich die auf die Extreme hin- und herschalte (ich nehm zumindest mal an, dass 0~127 stimmt), fällt es direkt auf.


    13644-pasted-from-clipboard-png


    Arbeitsweise ist schwer zu beschreiben, der Hex-Editor hat recht wenig Anteil momentan, wenn ich nicht irgendwas per Hack fixen muss. Die meiste Zeit verbring ich im Disassembler (zum Herumwühlen und Adressen-/Funktionen-Benennung in RPG_RT.exe) und im einfachen Notepad (letzteres für Assembler-Code für Destiny.dll, die Hilfedokumente und allerlei Datensammel-Listen), gefolgt vom RPG Maker, um obskure Tests in ihm zusammenzukleben, über temporär eingebaute Funktionen nehm ich dann auch mal hin und wieder direkt mit DestinyScript bei laufendem Spiel ein paar Sachen im Speicher auseinander.


    Die neuste kleine Bastelei, von der ich berichten kann, hat erstmal nichts mehr mit Audio zu tun, sondern ist eine DestinyScript-Variante des Befehls zum Scrollen des sichtbaren Map-Ausschnitts um N Felder in eine beliebige Richtung mit den Standard-Tempoangaben. Die Koordinaten konnten zwar bereits geändert werden (und wenn man abseits von ganzen Feldern und der Tempowahl [1~6] arbeiten will, muss man das auch weiterhin direktbestimmend tun), ich wollte trotzdem eine Möglichkeit ohne die Nachteile von [Command] bieten, das klassische Feature zu nutzen. Das Zurückzentrieren auf die Spielerposition ist natürlich auch dabei, nur die WartenBisFertig-Einstellung nicht.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 5. Dezember 2020 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    An die wenigen, die das hier oder etwas anderes von mir (zB MöhrchenDice-Bilder) interessiert: Rechnet in nächster Zeit besser mit nichts Neuem, ich habe heute alle meine laufenden Arbeiten an [Destiny for Maniacs] (inklusive Hilfe) sowie an allen Spielen/Experimenten (meine übrigen Anteile an [Elements Destiny] können nicht mehr viel im restlichen Team ausbremsen, also nicht verzagen, was dieses Spiel angeht) aufgrund der vorherrschenden Pandemie, aus der wir dank zu vieler sehr gefährlicher Menschen niemals herauskommen werden, zeitlich unbestimmt eingefroren, ich sehe mich momentan nicht dazu in der Lage.


    Dies ist keine Protestaktion, sondern nerventechnisch für mich notwendig und kann schnell wieder vorüber sein oder sich lange hinziehen. Näher werde ich die Situation nicht erläutern, um meine Gesundheit muss sich hier allerdings niemand Sorgen machen. Das hier nur mal als kleines Update, das nicht viel zum Thema beiträgt, aber allen einen kleinen Infohappen bereithält, die sich fragen, ob oder wann hier noch was kommen möge.


    Bis Baldrian, bleibt sicher und tragt Masken ordnungsgemäß, so viel es nur geht, um andere auch vor euch zu schützen. Mein kontaktloser Dank sei allen gewiss, die sich an einfachste Regeln zur Pandemiebekämpfung halten können, anstatt alles mit Protesten gegen "Freiheitsbeschränkung" zu verschlimmern.


    Und wenn ihr mir einen großen Gefallen tun wollt: Schreibt bitte keine Antworten, nehmt es einfach zur Kenntnis und wendet euch Schönerem zu. Sobald jemand darauf hier in diesem Thread reagiert, würde jener garantiert sehr weit vom Gleis abkommen.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 26. April 2021 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Ich möchte nicht groß in Aussicht stellen, demnächst das Ding mal releasen zu können, denn so wirklich arbeite ich noch nicht wieder dran, aber es gibt endlich wieder klein wenig frischen Fortschritt.


    Im Objekt [Message] können jetzt der Idle-Timer, die aktuelle Zeile, wie weit sie fortgeschritten ist und das DrawOffset für das nächste Zeichen abgefragt werden. Damit lässt sich bspw. eine Funktion schreiben, die automatisch, während die Dialogbox mit Text gefüllt wird, Sounds ausspuckt. Und da sich das grafisch nicht präsentieren lässt und ich jetzt auch nix aufnehmen will, gibt's hier jetzt stattdessen den Code dafür.



    Das Ganze packt man in ein Event mit [Parallel] und setzt noch ein [Wait 0] dahinter (sobald diese Version denn mal draußen ist). In diesem Beispiel schaltet Variable #1203 frameweise von 0 bis 5 durch, womit 10mal pro Sekunde ab dem Start eines Dialogtextes der Cancel-SystemSE mit einem zufälligen Pitch zwischen 50 und 150% abgespielt wird. Warum ausgerechnet der, wird man sich fragen. Äh... der fiel mir als erstbeste Möglichkeit ein, um mit dem RTP Tonfolgen zu erzeugen, die zu BanjoKazooie-Gibberish passen.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 25. Mai 2021 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Mittlerweile hat vor einer knappen Woche BingShan nach langer Zeit ein neues großes Update für MP rausgehauen, es wird also wahrscheinlich nun nochmal etwas länger dauern, bis ich DestinyForManiacs veröffentlichen kann, denn natürlich will ich schauen, ob ich es gleich dafür anpassen kann.


    Wer sich für die wahnsinnig vielen neuen Änderungen von mp210519 (zB Spielbildschirmgröße ändern) interessiert, kann meine auf englisch verfasste Liste diesbezüglich im Forum von RMN lesen, mir ist gerade nicht danach, sie nochmal auf DE zu schreiben.


    ~炬燵あ



    Achtung, der nachfolgende Text ist eine Archivierung eines Posts, der ursprünglich am 30. Mai 2021 im Thread im alten MVde-Forum hinzugefügt wurde und stellt in keinster Weise den aktuellen Status dar.


    Aus der Anpassung für mp210519 wird erstmal nichts. Wie es aussieht, wurde ein großer Teil der Engine restlos über den Haufen geworfen und from-scratch neugeschrieben. Klingt absolut unrealistisch? Ja, isses auch. Aber anders kann ich mir nicht mehr erklären, was mit RPG_RT.exe passiert ist und was die Changelog-Beschreibungen versuchen zu vermitteln. Das ist zwar der helle Wahnsinn, aber zu dem, was ich hier mache, absolut inkompatibel.


    Das heißt allerdings noch lange nicht, dass es für Destiny jetzt aus ist, es wird nur wahrscheinlich gezwungenermaßen auf mp200128/210414 (und einigen weiteren RPG2000-/2003-Versionen, auch wenn es nicht bei allen von ihnen offiziell zugelassen ist) hängenbleiben.


    Unterdessen habe ich noch eine neue Picture-Funktion zusammengestümpert, sie ist weder stabil noch fertig, aber mittlerweile halbwegs verwendbar. Mit ihr lässt sich über recht komplizierte Parameter Inhalt von einem AuroraSheet in ein anderes per Matrix kopieren (Wikipedia ➤ Affine Abbildung). Wenn man es Zeilenweise einzeln machen lässt, wie im nachfolgenden Beispiel, entsteht mit den richtigen Werteverschiebungen fast schon sowas wie Perspektive.


    16226-pasted-from-clipboard-png

    Oder kurz gesagt: Es funktioniert fast genau so wie Mode7 (SFC/SNES).


    ~炬燵あ



    An dieser Stelle enden nun die archivierten Postings aus dem alten Thread.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!