|
Autor: |
Sektenspinner
|
Hinzugefügt: |
02.05.2021 18:56 |
Views: |
7163 |
Downloads: |
718 |
Beschreibung: |
Einleitung
Dieses Paket macht viele für Modder interessante Engineklassen in Daedalus verfügbar und bietet grundlegende Funktionalität zum Arbeiten mit Engineobjekten, sowie die Möglichkeit, Engine Funktionen aufzurufen. Desweiteren sind nebem diesem allgemeinen Rahmenwerk auch einige sehr spezielle und unmittelbar nützliche Funktionen Teil dieses Pakets.
Ich möchte hier zunächst eine kurze, unvollständige Übersicht darüber geben, was mit dem Paket möglich ist. Für eine umfassendere Einschätzung möchte ich auf die Doku verweisen.
Grundfunktionalität
- Lesen und schreiben von Integern und Strings an beliebigen Speicherstellen.
- aus Speicheradresse (int) einen Objektzeiger (instance) gewinnen
- aus einem Objektzeiger (instance) seine Speicheradresse (int) gewinnen
- Enginefunktionen aufrufen
Unmittelbar nützlich (nur Beispiele!):
- Marvinmodus an und ausschalten
- Spiel pausieren
- Regen kontrollieren
- Truhen oder Türen auf oder abschließen
- Menüelemente bearbeiten (zum Beispiel "Speichern"-Menüpunkt deaktivieren)
- SpawnManager Konstanten bearbeiten
Informationsbeschaffung:
- Das vom Spieler fokussierte Objekt finden
- Vobs anhand ihres Namens finden
- Position der Kamera ermitteln
- Waynet analysieren
- herausfinden ob eine Taste gedrückt ist
- Kommandozeilenparameter auslesen
Vollständig neue Möglichkeiten:
- Gothic.ini lesen und schreiben, .ini Datei der Mod lesen
- Daedaluscode zur Laufzeit bearbeiten
- Speicher allozieren und freigeben (flüchtig bzgl. Laden und Speichern!)
Sonstiges / "Nice to have":
- Suchen von Parsersymbolen anhand ihres Namens
- Funktionen anhand ihres Namens oder Symbolindex aufrufen
- Im Code Labels initialisieren und zu ihnen springen (für elegantere Schleifen)
- Stringfunktionen: Zugriff auf einzelne Zeichen, Länge, Vergleich von Strings, String -> Integer Konvertierung
Nicht für jedes der oben genannte Dinge, gibt es eine für sich stehende vorgefertigte Funktion. Was genau und mit welchen Parametern zur Verfügung steht, ist der Doku zu entnehmen. Grundsätzlich gilt: Dieses Paket ist eher als Türöffner zu verstehen, der das nötige Wissen über den Grundaufbau der Objekte und nur grundlegende Funktionen zur Verfügung stellt. Spezielle Anwendungen müssen selbst daraus abgeleitet werden. Ich biete zum Beispiel keine Funktionen an, die direkt den Marvin Modus abschaltet. Aber durch dieses Paket ist das Abschalten mit nur zwei Zeilen Code möglich, wenn man weiß wie es geht (in MEM_Game die Eigenschaft game_testmode überschreiben).
Es sind weit mehr als die genannten Dinge möglich. Wenn man sich etwas einarbeitet, kann man mit diesem Paket eine große Menge an neuen Features implementieren. Was dieses Skriptpaket aber ausdrücklich nicht kann, ist Enginefunktionalität zu ersetzen. Als Faustregel gilt: Alle Features, die nur darauf angewiesen sind, Lese- und/oder Schreibzugriff auf die richtigen Daten zu haben oder vorhandene Enginefunktionalität an geeigneter Stelle aufzurufen, sind umsetzbar. Features, die ein vollständig neues Verhalten der Engine benötigen, sind dagegen mit großer Wahrscheinlichkeit nicht umsetzbar. Es ist aber nicht immer offensichtlich, ob ein konkretes Vorhaben mit Ikarus umgesetzt werden kann oder nicht. Im Zweifelsfall: Fragen! Einschätzungen, ob bestimmte, hier nicht genante Features, möglich sind und wenn ja, welche Klassen, Klasseneigenschaften und Enginefunktionen nützlich sein könnten, können hier im Forum gegeben werden. Ansonsten hilft das Stöbern in der Dokumentation von Ikarus und den dokumentierten Klassen vielleicht, eine Idee davon zu bekommen, wo man rankommt und wo man vermutlich nicht so einfach rankommt.
Damit die Skripte laufen, muss eine Gothic 2 Reportversion oder Gothic 1 in der Version 1.08k_mod zur Verfügung stehen, auch bei den Spielern! Mit anderen Versionen ist dieses Paket inkompatibel, die Offsets stimmen nicht und Klassen sind möglicherweise verschieden.
Wer sich dafür interessiert mehr aus Gothic herauszuholen wird sich vermutlich auch für G2Ext interessieren. Dieses Projekt soll an dieser Stelle nicht unerwähnt bleiben. Für manche Dinge ist G2Ext sicher besser geeignet als Ikarus. Umgekehrt gibt es auch Dinge, die mit Ikarus bequemer sind. Und es spricht auch nichts dagegen beides auf einmal zu benutzen.
Release-Thread mit weiteren Erläuterungen, Dokumentation und Changelog. |
|
|