-
Hmm, doch anscheinend schon. Es werden alle gespeichert, die keine flags gesetzt haben.
Flags gibt es für: const, return, classvar, external und merged.
Lokales dürfte also doch gespeichert werden.
-
Zitat von Degenerated
Hmm, doch anscheinend schon. Es werden alle gespeichert, die keine flags gesetzt haben.
Flags gibt es für: const, return, classvar, external und merged.
Lokales dürfte also doch gespeichert werden.
Gut, sonst hätte ich jetzt fehlerhaften Code berichtigen müssen.
Ist 'return' das Flag für Funktionen, die nicht 'void' als Rückgabewert haben? Und was zur Hölle ist 'merged'?
-
Muss ich schauen welche Symbole soetwas gesetzt haben, bin nur leider noch in der Uni. Später also mehr dazu
-
09.02.2017 23:34
#24
Zitat von Lehona
Ist 'return' das Flag für Funktionen, die nicht 'void' als Rückgabewert haben?
Ja.
Und was zur Hölle ist 'merged'?
Es würde mich auch interessieren, wofür das gedacht war, verwendet wird es aber scheinbar nicht.
Edit@NicoDE: Danke für die Info.
Geändert von werauchimmer (10.02.2017 um 14:42 Uhr)
-
Zitat von werauchimmer
Es würde mich auch interessieren, wofür das gedacht war, verwendet wird es aber scheinbar nicht.
Soweit ich mich erinnere, ging es um zusammengeführte Symbole/Variablen aus unterschiedlichen DATs (wäre halt nett gewesen, "HERO" aus der Gothic-Parser-Instanz auch in der Menu-Parser-Instanz zu haben - wurde dann halt über Namenskonventionen der Menu-Item-Instanzen geregelt).
Wurde nicht implementiert/verwendet, wie auch externe Variablen.
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
Geändert von NicoDE (10.02.2017 um 08:31 Uhr)
-
Wenn alles gespeichert wird, warum sind meine var strings nach dem neustart dann immer leer? Also ich meine wenn ich speichere, Spiel beende und dann Spielstand lade.
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Zitat von Bisasam
Wenn alles gespeichert wird, warum sind meine var strings nach dem neustart dann immer leer? Also ich meine wenn ich speichere, Spiel beende und dann Spielstand lade.
Zitat von Degenerated
Genauer gesagt werden alle nicht-const globalen integervariablen gespeichert. Nur der Vollständigkeithalber. Soweit ich weiß kannst du aber mit LeGos PermMem auch andere Dinge abspeichern.
Deswegen
-
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
13.02.2017 15:51
#29
Apropos verwirren, mit Strings kann man übrigens den Gothic-Compiler dazu bringen, eine nicht funktionierende Gothic.dat zu erstellen.
Man braucht nur einen Zeilenumbruch in einen String einzubauen, der wird vom Parser akzeptiert, d.h. ein Start über die GothicStarter_mod.exe mit "Skripte parsen" wird problemlos funktionieren, wogegen ein Start ohne parsen scheitert, weil beim Auslesen der Strings aus der Gothic.dat der Zeilenumbruch (#10) als Ende des Strings gilt und die restlichen Zeichen des Strings fehlinterpretiert werden, bzw. zum Absturz führen.
Theoretisch könnte man auf diese Weise auch versuchen, sinnvollen Code in die Gothic.dat zu injizieren, das scheitert dann aber daran, dass die Anzahl der Symbole oder Codepositionen nicht mehr stimmen etc.
-
Zitat von werauchimmer
Apropos verwirren, mit Strings kann man übrigens den Gothic-Compiler dazu bringen, eine nicht funktionierende Gothic.dat zu erstellen.
Man braucht nur einen Zeilenumbruch in einen String einzubauen, der wird vom Parser akzeptiert, d.h. ein Start über die GothicStarter_mod.exe mit "Skripte parsen" wird problemlos funktionieren, wogegen ein Start ohne parsen scheitert, weil beim Auslesen der Strings aus der Gothic.dat der Zeilenumbruch (#10) als Ende des Strings gilt und die restlichen Zeichen des Strings fehlinterpretiert werden, bzw. zum Absturz führen.
Theoretisch könnte man auf diese Weise auch versuchen, sinnvollen Code in die Gothic.dat zu injizieren, das scheitert dann aber daran, dass die Anzahl der Symbole oder Codepositionen nicht mehr stimmen etc.
Nette Idee, aber ich glaube es ist einfacher, entweder den Code zur Laufzeit zu verändern (der Bytecode ist ziemlich simpel - Ikarus enthält viele Beispiele, wie man das sinnvoll nutzen kann) oder direkt einen Patcher zu schreiben (Gottfried hat mal etwas geschrieben, was effektiv Ikarus in die Menü-Scripte injiziert hat, weil da keine Externals vorhanden sind).
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|