[Modding] Export von Area-Referenzen in eine Textdatei

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.203
Ich suche nach einer Möglichkeit, sämtliche Referenzen einer Area (also Ambient-Sounds, Creatures, Animationen etc.) in ein übersichtliches Textformat zu exportieren, durch das ich mir einen guten Überblick verschaffen kann, welche Dateien in der Area verwendet werden.
Kennt Ihr ein Programm, welches mir diese Arbeit abnehmen kann? Ich habe es schon mit NI versucht, war aber bisher nicht erfolgreich. Geht das vielleicht durch einen WeiDU-Code?

Hintergrund ist, dass ich einen kleineren Teil meiner größeren Mod in ein separates Installationsverzeichnis packen möchte.
 

Taimon

Senior Member
Registriert
25.11.2001
Beiträge
1.334
Ich fürchte, da musst du dir selbst etwas schreiben. Zumindest ist mir nichts dergleichen bekannt.

Vielleicht lohnt es sich, den Quellcode von NI anzuschauen bzw. zu modifizieren, denn intern hat NI sicher eine Area-Klasse, die alle von dir benötigten Daten beinhaltet.
Da müsste man "nur" eine entsprechende Export-Funktion dazubauen.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
10.109
Man könnte auch Argent fragen, ob er nicht zufälligerweise sowieso schon usw... :shine:
 

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.203
Ich bin jetzt einen schmutzigen, aber einfachen Weg gegangen:
Einfach alle Areas installiert ohne jegliche weitere Dateien. Dann den Suchlauf von NI für Illegale Referenzen gestartet.
Dann bekommt man ein gut übersichtliches Textfile:
Searched for: Illegal ResourceRefs
Area: ACIL1K.are, Attribute: Area script=ACIL1K.BCS
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER01.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER11.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#DER04.CRE
Area: ACIL1K.are, Attribute: Character=AC#VERB2.CRE
Area: ACIL1K.are, Attribute: Character=AC#LADYS.CRE
Area: ACIL1K.are, Attribute: Script=AC#1KBAN.BCS
Area: ACIL1K.are, Attribute: Creature 1=AC#DER05.CRE
Area: ACIL1K.are, Attribute: Item=AC#SHAN8.ITM
Area: ACIL1K.are, Attribute: Item=AC#SHAN9.ITM
Area: ACIL1K.are, Attribute: Item=AC#SHAN7.ITM
Area: ACIL1K.are, Attribute: Item=AC#SHAN6.ITM
Area: ACIL1K.are, Attribute: Item=AC#BOW01.ITM
Area: ACIL1K.are, Attribute: Item=AC#SHAN4.ITM
Area: ACIL1K.are, Attribute: Animation=AC#MOONB.BAM
Area: ACIL1K.are, Attribute: Animation=AC#MOONB.BAM
Area: ACIL1L.are, Attribute: Area script=ACIL1L.BCS
Area: ACIL1L.are, Attribute: Character=AC#DER12.CRE
Area: ACIL1L.are, Attribute: Item=AC#RUNE1.ITM
Area: ACIL1L.are, Attribute: Item=AC#ARM01.ITM
Area: ACIL1L.are, Attribute: Item=AC#ARM01.ITM
Diese Liste werde ich jetzt nach und nach abarbeiten und das gleiche dann für Cres, Items und Script ebenfalls checken.
 

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.203
@Weigo : Das war Gedankenübertragung! :)
Ich suchte nämlich gerade nach einer Möglichkeit, in der Ursprungsmod sämtliche vorhandenen, aber nicht mehr benötigten Referenzen ebenfalls zu löschen. Da kommt mir die fj_are_struct_tpa sehr gelegen.
Jetzt muss ich mich nur noch in den Code einlesen. Das sieht für einen Anfänger wie mich ganz schön komplex aus. :wunder:
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
10.109
Lauriel hat sich auch Funktionen geschrieben, mit denen die Actors, Containers und Area Regions entfernen kann. Bei Interesse suche ich das ochmal raus.
Auch dieser Thread bei G3 könnte für manche Probleme einen Treffer haben - fällt mir auch jetzt erst ein.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
10.109
Zuletzt bearbeitet:

Taimon

Senior Member
Registriert
25.11.2001
Beiträge
1.334
Ich finde, man sollte hier abwägen, ob sich überhaupt der Aufwand für eine Programmentwicklung lohnt. (Kosten/Nutzen-Faktor)

Wenn man sich die Aufgabe anschaut, stellen sich mir spontan zwei Fragen:
  1. Was zählt alles als Ressource eines Gebiets?
    Es gibt eine Reihe von direkten Referenzen in ARE-Dateien, bei denen die Sache sicherlich klar ist. (Actors, Items, Ambients, …)
    Zusätzlich hat man aber auch viele indirekte Referenzen. Zum Beispiel Items oder Sounds, die von den Actors benutzt werden. Oder Sachen, die im Area Script referenziert werden.
    Einige Sachen werden auch erst bei der Installation verlinkt, wie z. B. der referenzierte Eintrag in die Songlist. (Falls man eine neue MUS hinzugefügt hat.)
    Obendrein gibt es dann auch noch implizite Referenzen, die von der Engine anhand des Namens abgeleitet werden. Damit sind Sachen wie Lightmap, Heightmap, TIS- und MOS-Dateien gemeint.
  2. In welcher Form liegen die Ressourcen vor, die man als "nicht benutzt" markieren soll?
    Ich stelle mir hier vor, dass es ein Verzeichnisbaum ist, den man abarbeitet. Dabei gibt es das Problem, dass der Dateiname in einem Verzeichnisbaum nicht eindeutig ist.
    Bei der Installation könnte eine Auswahl getroffen werden, ob die Datei aus Verzeichnis a oder b genommen wird. Und zusätzlich könnte auch eine Umbenennung stattfinden, dann hat man komplett verloren.

Ich weiß nicht, ob es sich wirklich lohnt, da viel Aufwand reinzustecken. Zumal das Problem sicher nicht so häufig auftritt.
 
Oben