PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein neues Item erstellen



|Lorn|
02.05.2010, 18:00
Halli hallo :D

Ein paar kennen mich vielleicht aus dem G3-Forum, wenn nicht ist's auch egal :p

Da ich mir jetzt doch noch Risen für den PC hole (habs nur auf der Xbox...) will ich jetzt auch in Risen ein paar Sachen verändern.

Was ich wissen wollte ist, wie man in Risen vorgehen muss, um ein neues Template zu erstellen.

Dass man es mit dem Risenaut entpacken, mit dem TPLEdit bearbeiten und dem RisenPak wieder in ein Pak-Archiv packen kann, weiß ich schon.

Was ich noch nicht weiß ist, wie man vorgehen muss, um neue Strings/Beschreibungen für das Item zu erstellen (gibt's sowas wie ne stringtable wie in G3?) und wie oder ob man das Item einem NPC/Objekt ins Inventar legen kann (Händlerinventar/Truheninventar).

Danke schonmal im Voraus und schönen Gruß
Lorn :gratz

Shak-otay
02.05.2010, 18:25
Halli hallo :D

Ein paar kennen mich vielleicht aus dem G3-Forum, wenn nicht ist's auch egal :pKennen? Kann man jmd. wirklich kennen? (Woody Allen)


Was ich wissen wollte ist, wie man in Risen vorgehen muss, um ein neues Template zu erstellen.Template klonen fast wie in G3:

http://forum.worldofplayers.de/forum/showpost.php?p=12736602&postcount=2


Was ich noch nicht weiß ist, wie man vorgehen muss, um neue Strings/Beschreibungen für das Item zu erstellen (gibt's sowas wie ne stringtable wie in G3?) Stringtableentsprechungen heissen hier *.tab. In der strings.pak findest Du focus und focus_unique.tab für die Itemnamen; in der items.tab dürften die Beschreibungen stehen.


und wie oder ob man das Item einem NPC/Objekt ins Inventar legen kann (Händlerinventar/Truheninventar).Kiste mit Items guckstu hier (http://forum.worldofplayers.de/forum/showpost.php?p=12348461&postcount=31).


Danke schonmal im Voraus und schönen Gruß
Lorn :gratz
Schönen Gruß zurück,
shak

|Lorn|
02.05.2010, 18:49
Na auf dich hab ich gehofft, shak :)


Kennen? Kann man jmd. wirklich kennen? (Woody Allen)

Eine wärmere Begrüßung hätte ich mir trotzdem erhofft :D


Template klonen fast wie in G3:

http://forum.worldofplayers.de/forum/showpost.php?p=12736602&postcount=2

Sieht ziemllich ähnlich aus. Gibt es denn neuerdings nur noch eine GUID? Würde mich doch stark wundern. Und bei neuen Items muss man keinen Eintrag mehr irgendwo erstellen (lrtpldatasc)?


Stringtableentsprechungen heissen hier *.tab. In der strings.pak findest Du focus und focus_unique.tab für die Itemnamen; in der items.tab dürften die Beschreibungen stehen.

Danke. PB war wohl unzufrieden mit der Größe der stringtable in G3 (?).


Kiste mit Items guckstu hier (http://forum.worldofplayers.de/forum/showpost.php?p=12348461&postcount=31).

Das muss ich mir erst nochmal in Ruhe durchlesen. Sieht aber schon um einiges "vielversprechender" aus als in G3 (wobei ich mich mittlerweile so schön dran gewöhnt habe :D).

Wie genau funktioniert das denn mit den lrents in Risen? Wird mit deinem lrtenter ein neuer "Sektor" erstellt oder schreibt der in bereits vorhandene Dateien?

Wird in deiner Kurzanleitung eine neue Truhe eingefügt oder eine vorhandene verändert?

Kann ich auch einfach eine vorhandene Entitiy verändern? Also einfach die GUIDS für das in der Truhe enthaltene Item ändern?

Shak-otay
02.05.2010, 20:20
Na auf dich hab ich gehofft, shak :)
Ähmmm, wir haben auf dich gehofft.;) Hier gibt's nämlich nicht viele fortgeschrittene modder...


Eine wärmere Begrüßung hätte ich mir trotzdem erhofft :D
Ja, sry, hab' dich nicht als Newcomer gesehen. Welcome to the Risen forum, Lorn.

Sieht ziemllich ähnlich aus. Gibt es denn neuerdings nur noch eine GUID? Würde mich doch stark wundern. Ähm, blubb...jetzt wo du's sagst: das bei Adresse 0x1E in den tple sieht doch tatsächlich wie eine Item-Hash aus. Aber mit templates hab' ich's ja nich so.:D



Und bei neuen Items muss man keinen Eintrag mehr irgendwo erstellen (lrtpldatasc)?Sieht nicht danach aus. Ob's so geht, wie ich beschrieben habe, werden wir merken, wenn lulix sich beschwert.:p


Sieht aber schon um einiges "vielversprechender" aus als in G3 (wobei ich mich mittlerweile so schön dran gewöhnt habe :D).
Na ja, ich habe schon geklonte Dungeons eingebaut. Wenn wir das in G3 gehabt hätten...


Kann ich auch einfach eine vorhandene Entitiy verändern? Also einfach die GUIDS für das in der Truhe enthaltene Item ändern?
Entity= Item? Du kannst in das bino-File der Truhe direkt die Ref-Hash des gewünschten Items eintragen (genauer: die eines vorhandenen überschreiben). Danach muss die bino mit dem Lrenter an die gewünschte lrent angehängt werden.

|Lorn|
02.05.2010, 20:36
Ähmmm, wir haben auf dich gehofft.;) Hier gibt's nämlich nicht viele fortgeschrittene modder...

Na das ist doch mal was :D Mal sehen wie ich mich bei Risen schlage bzw. wie viel Lust ich dazu habe.



Ja, sry, hab' dich nicht als Newcomer gesehen. Welcome to the Risen forum, Lorn.

Danke :gratz


Ähm, blubb...jetzt wo du's sagst: das bei Adresse 0x1E in den tple sieht doch tatsächlich wie eine Item-Hash aus. Aber mit templates hab' ich's ja nich so.:D

Ich erinnere mich :D



Sieht nicht danach aus. Ob's so geht, wie ich beschrieben habe, werden wir merken, wenn lulix sich beschwert.:p

Irgendwo müssen die aber fast erfasst werden oder nicht?



Na ja, ich habe schon geklonte Dungeons eingebaut. Wenn wir das in G3 gehabt hätten...

Wie kommt's denn dass Risen "besser" zu modden ist?


Entity= Item? Du kannst in das bino-File der Truhe direkt die Ref-Hash des gewünschten Items eintragen (genauer: die eines vorhandenen überschreiben). Danach muss die bino mit dem Lrenter an die gewünschte lrent angehängt werden.

Entity=Truhe. Ansonsten aber richtig, danke für die Info :)

Eine vorhandene Truhe zu bearbeiten geht aber nicht?

Falls nicht ist's auch nicht schlimm. Dann kann man ja (hoffentlich) immer per tinyhexer (ohne Skript :D) noch nach dem Ref-Hash der zu verändernden Truhe suchen, dort nach dem Ref-Hash des auszutauschenden Items suchen und diesen mit dem Ref-Hash des gewünschten Items austauschen, oder nicht?

Shak-otay
02.05.2010, 21:04
Irgendwo müssen die aber fast erfasst werden oder nicht?
Gute Frage, nächste Frage;) - ich habe jedenfalls noch nichts gefunden. Empfand die lrtpldatasc eigentlich immer als überflüssige Redundanz.
Möglicherweise nur dazu da, der engine eine schnellere Hash-Kontrolle zu ermöglichen.


Wie kommt's denn dass Risen "besser" zu modden ist?
Na ja, von "besser" kann keine Rede sein. Vllt. weil die Welt und die lrents kompakter sind? Oder weil ich mich bei Risen gleich auf die lrents konzentriert habe. Ausserdem sind es ja nur Klone, also keine "neuen" Objekte.



Eine vorhandene Truhe zu bearbeiten geht aber nicht?Ist nicht vorgesehen. Verschieben in der Welt geht aber.


Falls nicht ist's auch nicht schlimm. Dann kann man ja (hoffentlich) immer per tinyhexer (ohne Skript :D) noch nach dem Ref-Hash der zu verändernden Truhe suchen, dort nach dem Ref-Hash des auszutauschenden Items suchen und diesen mit dem Ref-Hash des gewünschten Items austauschen, oder nicht?Exactement.:D

|Lorn|
02.05.2010, 21:15
Gute Frage, nächste Frage;) - ich habe jedenfalls noch nichts gefunden. Empfand die lrtpldatasc eigentlich immer als überflüssige Redundanz.
Möglicherweise nur dazu da, der engine eine schnellere Hash-Kontrolle zu ermöglichen.

Ziemlich sicher sogar. Damit ist doch gewährleistet, dass die Engine beim Laden nicht noch überall herumsuchen muss. Es werden eben nur die in den lrtpldatascs eingetragenen Templates geladen.


Na ja, von "besser" kann keine Rede sein. Vllt. weil die Welt und die lrents kompakter sind? Oder weil ich mich bei Risen gleich auf die lrents konzentriert habe. Ausserdem sind es ja nur Klone, also keine "neuen" Objekte.

Na gut, das Format scheint ja ziemlich ähnlich zu sein (wenn die Risen-Engine eine verbesserte Genome-Engine ist ist's ja klar). Aber die Meshes hast du doch schnell extrahieren können :D


Ist nicht vorgesehen. Verschieben in der Welt geht aber.

Dann eben doch "hexen" :D


Eine (oder zwei :D) kleine Frage(n) hätte ich aber noch:

- Können diese *.tab-Dateien mit einem "normalen" Texteditor geöffnet werden?

- Welche Dateien müssen ins Spielverzeichnis und welche können/müssen ins User\AppData-Verzeichnis? Wie kommt's überhaupt, dass Risen daraus lädt?


Da kann man's doch gar nicht mehr erwarten, dass die PC-Version endlich eingetrudelt kommt (wie konnt' ich's mir nur für die 360 kaufen?... achja, ich wollte mit dem Modden aufhören :D) auch wenn man eigentlich so einige andere Sachen zu erledigen hätte.

Shak-otay
02.05.2010, 21:37
- Können diese *.tab-Dateien mit einem "normalen" Texteditor geöffnet werden?Öffnen: ja - bringt nur nichts. Entweder Du benutzt "RisenTab.exe" von NicoDE, um die *.tabs in csv (für notepad) umzuwandeln, oder Du verwendest einen Hexeditor. Wenn Du dich erst mal an die Unicode-Nullen gewöhnt hast, gehen kleinere Änderungen per Hexedit relativ fix ohne das Hin- und Herwandeln.

GANZ wichtig: die Änderungen werden offenbar nur dann vom game angenommen, wenn man eine strings.(p)00 erstellt ('p' bei der Demoversion). Anders habe ich es jedenfalls nicht hinbekommen.


- Welche Dateien müssen ins Spielverzeichnis und welche können/müssen ins User\AppData-Verzeichnis?Die gepackten nach Data\common bzw. Data\compiled. Tple, lrent, _xcom, _xmsh etc. nach AppData. Wobei es nicht uncool wäre, wenn die von den paks vorgegebene Ordnerstruktur von allen moddern beibehalten werden würde, auch wenn Risen das (chaotischerweise) egal ist.


Wie kommt's überhaupt, dass Risen daraus lädt?
Bin ich Jesus?:dnuhr: Wächst mir Moos aus der Tasche?:D

|Lorn|
02.05.2010, 22:48
GANZ wichtig: die Änderungen werden offenbar nur dann vom game angenommen, wenn man eine strings.(p)00 erstellt ('p' bei der Demoversion). Anders habe ich es jedenfalls nicht hinbekommen.

Okay, gut. Schade, dass Risen wohl nicht mehr aus Ordnern lädt...


Die gepackten nach Data\common bzw. Data\compiled. Tple, lrent, _xcom, _xmsh etc. nach AppData. Wobei es nicht uncool wäre, wenn die von den paks vorgegebene Ordnerstruktur von allen moddern beibehalten werden würde, auch wenn Risen das (chaotischerweise) egal ist.

Du meinst die Strukturen innerhalb der paks? (Wie bei G3 z.B. _compiledImage\animation etc?). Wenn ja, dann wäre das natürlich gut, sonst siehts aus wie in GD :D


Bin ich Jesus?:dnuhr: Wächst mir Moos aus der Tasche?:D

Das erste wage ich zu bestreiten, beim zweiten bin ich mir nicht so sicher... :D Vielleicht sollten wir mal ein Modder-Treffen machen :p

PS: Danke =)

Edit: Hm, also die Verwaltung der Inventar-Icons in Risen gefällt mir überhaupt nicht... Gibt es denn überhaupt eine Möglichkeit, ein neues zu erstellen? Die sind ja alle in einer Datei (GUI_IconSets01) enthalten. In den Templates steht dann vermutlich die Position, an der nach dem Icon gesucht werden soll. Aber festgelegt wird die wohl nicht im Template...

Shak-otay
03.05.2010, 10:06
Okay, gut. Schade, dass Risen wohl nicht mehr aus Ordnern lädt...Ich sprach von den *.tab; die lrents und Texturen werden auch ungepackt (aus AppData) "angezogen".


Du meinst die Strukturen innerhalb der paks?Jupp.


Gibt es denn überhaupt eine Möglichkeit, ein neues zu erstellen? Die sind ja alle in einer Datei (GUI_IconSets01) enthalten. Da wirst Du wohl selbst investigativ tätig werden müssen.:)
Ich kann dir nur sagen, wo die Icons referenziert werden: in der Property "IconImage" der class 4, gCItem_PS, einer Item-Entity. Das sieht dann so aus (Auszug aus Harbour_Town_Item.lrent, 0x4282 It_Fur_Wolf):


47ff IconImage
4801 eCGuiBitmapProxy2
ic_it_fur_wolf

Die Items befinden sich alle in den Item-lrents.


In den Templates steht dann vermutlich die Position, an der nach dem Icon gesucht werden soll. Aber festgelegt wird die wohl nicht im Template...Das ist nicht meine "Spielwiese", aber eine schöne Einstiegsaufgabe für dich, oder?§wink

|Lorn|
03.05.2010, 10:10
Ich sprach von den *.tab; die lrents und Texturen werden auch ungepackt (aus AppData) "angezogen".

Sprich die Dateien aus AppData werden denen im Spielverzeichnis vorgezogen?


Da wirst Du wohl selbst investigativ tätig werden müssen.:)
Ich kann dir nur sagen, wo die Icons referenziert werden: in der Property "IconImage" der class 4, gCItem_PS, einer Item-Entity. Das sieht dann so aus (Auszug aus Harbour_Town_Item.lrent):


47ff IconImage
4801 eCGuiBitmapProxy2
ic_it_fur_wolf

Die Items befinden sich alle in den Item-lrents.

Soweit war ich auch schon. Ob nun lrent oder Template dürfte ja (mehr oder weniger) egal sein.


Das ist nicht meine "Spielwiese", aber eine schöne Einstiegsaufgabe für dich, oder?§wink

Na toll :D Das riecht mir ja eher nach einer unlösbaren Aufgabe. Meine erste Vermutung war ja, dass die in den Materials irgendwie festgelegt sind, aber das ists wohl nicht ... ich hoffe mal, man kommt da irgendwie dran (normalerweise sind die Koordianten für die Texturen ja im Mesh hinterlegt...).


---------------------------------------------------------------


Edit: Gefunden :D Die Datei "compiled_imagelists.bin" aus "compiled\library" enthält die ominösen "IC_It"-Einträge. Wenn mir jetzt noch jemand sagt, wie ich diese Datei bearbeiten kann...

Da wird vermutlich auch die Position festgelegt. Im Template steht nur, welcher Eintrag verwendet werden soll...


Edit2: Wie ich's mir dachte: Das Austauschen von Strings in dieser Datei funktioniert wunderbar. Allerdings hilft das nicht viel, da die Icons für die ausgetauschten Strings dann ja fehlen. Die Datei zu klonen hat auch nicht geholfen. Das Spiel lädt nur die bin mit diesem Namen (compiled_imagelists.bin).

Ich bin erst mal mit meinem Latein am Ende. Ich denke, selbst wenn man es irgendwie hinbekäme, einen Eintrag vollständig zu kopieren und einzufügen, dann hätte man noch immer das Problem, dass das Icon dann von der Stelle genommen wird, auf die der ursprüngliche Eintrag zugreifen will. Um das zu ändern, müsste man erstmal wissen wie diese "Koordinaten" berechnet werden.

Das dürfte dann wohl der erste große Dämpfer fürs "fortgeschrittene" Risen-Modding sein, das über das Austauschen von Texturen hinausgeht. Wieso hat PB das denn nicht wie bei G3 gelöst...


Edit3: Jetzt ist mir doch glatt noch eine mögliche Lösung eingefallen, die trotz allem aber nicht allzu einfach bzw. gar nicht umzusetzen ist:

Vorausgesetzt, die "compiled_image.bin" verhält sich ähnlich wie derartige Dateien in G3, so gibt es (und das habe ich schon bestätigen können) einen "SizeToStringtable"-Wert am Anfang der Datei. Den Deadbeef müsste man noch herausfinden (der ist in den library-Dateien von G3 auch sehr seltsam...). Es dürfte also möglich sein, die Datei um ein paar Bytes zu erweitern.

Soweit so gut. Einzelne Abschnitte zu klonen macht nicht viel Sinn. Man müsste schon den größten Teil der Datei "nochmal" einfügen. Dazu zählen natürlich auch die Strings. Dazu müsste man natürlich erst mal die einzelnen Abschnitte identifizieren können. Sollte das gelingen, so könnte man "einfach" alles ab einschließlich der Referenz auf die Textur "klonen". Diese Texturreferenz könnte man dann ändern. Neue Texturen einfzufügen ist nach meinen bisherigen Tests ganz einfach möglich. Man müsste einfach die Original-GUI-Textur hernehmen und eben entsprechend umbenennen. Schon hätte man eine zweite Textur und, wenn alles geklappt hat, eine "compiled_image.bin", die auf beide Texturen verweist. Jetzt könnte man nach Belieben die String-Referenzen im neu eingefügten Teil verändern. Als Koordinaten für die Texturen hat man ja die der Original-Textur zur Verfügung (anhand der Bilder und der ITC-Strings sollte es relativ einfach möglich sein, diese zu identifizieren).

Alles in allem wäre es theoretisch schon noch möglich, neue Texturen einzufügen. Allerdings ist der Aufwand im Vergleich schon sehr groß und man hätte auch ein gewisses Problem in Bezug auf andere Mods. Wobei da eben jeder diese zweite Textur verwenden müsste. Es müsste eben festgelegt werden, dass die Inventar-Icons linear "abgearbeitet" werden. Fürs erste dürfte das eigentlich genügen.

So insgesamt gefiele mir eine G3-ähnliche Lösung mit einzelnen Inventar-Icons aber besser. Sieht mir aber nicht so aus, als ob das möglich wäre.

Shak-otay
03.05.2010, 21:09
Sprich die Dateien aus AppData werden denen im Spielverzeichnis vorgezogen?Genau.


Da wird vermutlich auch die Position festgelegt.
Gut erkannt, Sherlock Watson.;)


Um das zu ändern, müsste man erstmal wissen wie diese "Koordinaten" berechnet werden.
Vllt. hilft dir dies ja weiter (falls Du nicht sowieso schon soweit warst.:D)
Icon mit 40x40 Pixelsize

IC_It_Bag, RectOnTexture

00 00 00 00 2A 00 00 00 28 00 00 00 52 00 00 00

Vermutung x1/y1, x2/y2
0/42, 40/82 (Pixel?)

edit: die Size der meisten (aller?) Inventaricons dürfte 40x40 sein.
Allerdings ist die x-Startposition nicht immer ein Vielfaches von 40, wie dieses Beispiel zeigt:


IC_It_Amber_Small
1F 01 00 00 2A 00 00 00 47 01 00 00 52 00 00 00

Sollte das zufällig das 8. Icon von links sein und ein Pixel Abstand zwischen den Icons sein,
würde das ja passen (7x(40+1)=287).


Das dürfte dann wohl der erste große Dämpfer fürs "fortgeschrittene" Risen-Modding sein, das über das Austauschen von Texturen hinausgeht.Na na, wer wird denn gleich die Flinte ins Lorn werfen?;)

|Lorn|
03.05.2010, 21:29
Gut erkannt, Sherlock Watson.;)

Danke Dr. John Holmes (also irgendwas passt da wohl nicht :D).



Vllt. hilft dir dies ja weiter (falls Du nicht sowieso schon soweit warst.:D)
Icon mit 40x40 Pixelsize

IC_It_Bag, RectOnTexture

00 00 00 00 2A 00 00 00 28 00 00 00 52 00 00 00

Vermutung x1/y1, x2/y2
0/42, 40/82 (Pixel?)

Wie man an meinem neu erstellten Thread erkennt war ich noch nicht so weit :D

Du rettest mir, wie immer, meine letzten Nerven.


edit: die Size der meisten (aller?) Inventaricons dürfte 40x40 sein.

Zumindest von denen, die wir brauchen (die fürs "richtige" Inventar).


Allerdings ist die x-Startposition nicht immer ein Vielfaches von 40, wie dieses Beispiel zeigt:


IC_It_Amber_Small
1F 01 00 00 2A 00 00 00 47 01 00 00 52 00 00 00

Sollte das zufällig das 8. Icon von links sein und ein Pixel Abstand zwischen den Icons sein,
würde das ja passen (7x(40+1)=287).

Du bist ein Genie. In der zweiten Reihe von oben, an der Stelle, an der "unsere" Inventar-Icons beginnen ist an der 8. Stelle von links die Textur des "Kleinen Bernsteins" zu finden :eek:

Ich könnte mich kaum mehr über deine Antwort freuen. Wenn du doch nur ein paar Stunden früher geantwortet hättest :D

Aber um mal ernst zu bleiben: Das heißt also, der Wert x1 bestimmt wie weit das Icon mit dem linken Rand vom linken Rand der Textur entfernt ist, x2 bestimmt demnach den Abstand bis zum rechten Rand (mit Abstand zum nächsten Icon?). Der Wert y1 bestimmt den Abstand des oberen Randes des Icons zum oberen Rand der Textur, y2 den Abstand zum unteren Rand des Icons?


Na na, wer wird denn gleich die Flinte ins Lorn werfen?;)

Nachdem mir solche ungelösten Sachen keine Ruhe lassen werde ich das sowieso erst mal nicht :p

So, jetzt müsstest du mir nur noch einen Eintrag klonen :D Ich hab nämlich noch keinen Überblick über Anfang und Ende der Einträge oder die DeadBeef-Size (die SizeToStrintable hab ich schon gefunden).

Ich reservier' mir dann schonmal das Icon mit den Koordinaten 0/822, 40/862 :D

In Hex: 00 00 00 00 36 03 00 00 28 00 00 00 5E 03 00 00

Ich hoffe die unterste Reihe ist von PB schlauerweise nicht benutzt worden (könnte man ja später relativ leicht nachprüfen indem man sich alle Templates ins Inventar "given" lässt).

Shak-otay
03.05.2010, 22:09
[...]
Du bist ein Genie. Naja, nur weil ich Rectangle-Funktion kenne?


Aber um mal ernst zu bleiben: Das heißt also, der Wert x1 bestimmt wie weit das Icon mit dem linken Rand vom linken Rand der Textur entfernt ist, x2 bestimmt demnach den Abstand bis zum rechten Rand (mit Abstand zum nächsten Icon?). Der Wert y1 bestimmt den Abstand des oberen Randes des Icons zum oberen Rand der Textur, y2 den Abstand zum unteren Rand des Icons?Ich sag' mal: "ja" (ein Rectangle wird durch die Eckpunkte links oben und rechts unten festgelegt (wobei beim PC die Y-Achse i.d.R. nach unten zeigt).


So, jetzt müsstest du mir nur noch einen Eintrag klonen :D Ich hab nämlich noch keinen Überblick über Anfang und Ende der Einträge oder die DeadBeef-Size (die SizeToStrintable hab ich schon gefunden).

EINEN Eintrag zu klonen, wird nicht das Problem sein; aber ich fürchte, es wird nicht dabei bleiben?:D

Siehe auch meinen Kommentar im Parallelthread. (Wir sollten uns einigen, wo wir das Thema fortführen, damit wir kein thread-hopping betreiben müssen.;))

|Lorn|
03.05.2010, 22:13
Naja, nur weil ich Rectangle-Funktion kenne?

Meiner Meinung nach besteht deine Genialität erstmal im Analysieren der Dateien :) Wer kommt da schon so schnell drauf?


Ich sag' mal: "ja" (ein Rectangle wird durch die Eckpunkte links oben und rechts unten festgelegt (wobei beim PC die Y-Achse i.d.R. nach unten zeigt).

Gut, wie soll's auch anders sein :D Ich bin ja schon still.



EINEN Eintrag zu klonen, wird nicht das Problem sein; aber ich fürchte, es wird nicht dabei bleiben?:D

Nun, ich persönlich hatte eigentlich nicht vor, so viel für Risen zu modden wir für G3. Aber mal sehen was daraus wird. Die Idee eine zweite Mod-Textur anzulegen ist an sich eigentlich gar nicht schlecht. Dadurch hätte man schonmal eine gewisse "Sauberkeit" gewährleistet.


Siehe auch meinen Kommentar im Parallelthread. (Wir sollten uns einigen, wo wir das Thema fortführen, damit wir kein tread-hopping betreiben müssen.;))

Ich würde sagen, alles was wirkliche Erkenntnisse über das "Format" sind, kommt drüben rein, Diskussion bzw. Ausführung/Test erstmal hier.

Baltram
03.05.2010, 22:22
Hi,

Da ich schon etwas Erfahrung mit BINs hatte habe ich mal auf die Schnelle eine kleine Konsolenanwendung geschrieben mit dem Zweck, neue Inventarbildchen zu ermöglichen.
Ich sitzte gerade an meinem alten Gammelnotebook und kann die Sache daher leider nicht in Risen testen (werds aber morgen nachholen), deshalb kann ich euch nicht garantieren, dass ich nicht irgendeine Kleinigkeit vergessen habe.
Probierts einfach aus - das Tool sollte selbsterklärend sein.

Hier gehts zum Download: http://upload.worldofplayers.de/files5/extend_comp_imgl.exe

EDIT: Neuere Version: siehe hier (http://forum.worldofplayers.de/forum/showpost.php?p=12752181&postcount=24)

Falls es nicht startet braucht ihr vllt Visual C++ 2008 redist. (2 kleine DLLs)

MfG,
Baltram

EDIT:
Hab grad den zweiten Thread bemerkt - da gehört mein Post eig. eher hin.. sorry.

|Lorn|
03.05.2010, 22:27
Hi,

Da ich schon etwas Erfahrung mit BINs hatte habe ich mal auf die Schnelle eine kleine Konsolenanwendung geschrieben mit dem Zweck, neue Inventarbildchen zu ermöglichen.

Wow, so macht das doch Spaß (Blutrausch :D).


Ich sitzte gerade an meinem alten Gammelnotebook und kann die Sache daher leider nicht in Risen testen (werds aber morgen nachholen), deshalb kann ich euch nicht garantieren, dass ich nicht irgendeine Kleinigkeit vergessen habe.

Und ich hab die Demo grade nur am Laptop, die Dateien sind aber da.


Falls es nicht startet braucht ihr vllt Visual C++ 2008 redist. (2 kleine DLLs)

Also das Tool startet, per Drag and Drop passiert aber nicht viel. Du hattest es schon so gedacht, dass man die "compiled_imagelists.bin" einfach draufzieht?

Baltram
03.05.2010, 22:30
Du startest das Programm und es fragt dich nach einem Dateinamen, woraufhin du entweder was eingeben kannst oder eben das file in die Konsole ziehst (mit Enter bestätigen).

Am Ende wird [deinebin].bin.new erstellt.

|Lorn|
03.05.2010, 22:33
Du startest das Programm und es fragt dich nach einem Dateinamen, woraufhin du entweder was eingeben kannst oder eben das file in die Konsole ziehst.

Am Ende wird [deinebin].bin.new erstellt.

Bin ich auch schon drauf gekommen :D

Scheint gut zu klappen. Die neue bin wurde erstellt, die Koordinaten scheinen zu stimmen und der Strings-Eintrag ist auch da.

Kannst du denn evtl. auch noch einbauen, dass man gleich eine neue Textur verwendet (ich bin mir sicher, dass das jetzt schon viel Arbeit war)? Wäre halt moddingtechnisch gesehen einfacher...

Man sollte halt dann für alle Modder (die Inventar-Icons ändern wollen) die neue "compiled_image.bin" mit zweitem Texturverweis ausgeben. In der Originaltextur ist ja nicht unendlich viel Platz.

Neue Icon-Einträge kann man dann ja mit deinem Tool machen.

Baltram
03.05.2010, 22:46
Kannst du denn evtl. auch noch einbauen, dass man gleich eine neue Textur verwendet (ich bin mir sicher, dass das jetzt schon viel Arbeit war)? Wäre halt moddingtechnisch gesehen einfacher...Da sind doch noch einige freie Karos, oder? Naja, neue Textur würde sich schon machen lassen, wird aber vom Aufbau ein bissl (oder eig. um einiges) komplizierter.

Naja. Das was ich grad hochgeladen habe ist spontan innerhalb von ner halben Stunde oder so entstanden, ohne große Ambitionen. Wenn es wirklich gebraucht wird (im Momment modded ja leider keine Sau) könnte ich es gerne nochmal neu schreiben mit GUI und Zusatzfunktionen wie neue Textur etc...
Wobei dann vllt gleich ein allgemeiner BIN-Editor sinnvoller wäre...

Naja mal sehn... gut Nacht (meine Ausdrucksweise leidet schon^^).

EDIT: Zu deinem Edit:
Zwei "compiled_imagelists.bin"?? Den Texturverweis zu ändern ist simpel aber warum sollte Risen zwei verschiedene BINs für den gleichen Zweck simultan benutzen können? Geht das?
Mein Vorschlag wär ja einfach die Größe der DDS zu ändern (dann muss man halt wieder irgendeine BIN anpassen).

|Lorn|
03.05.2010, 22:57
EDIT: Zu deinem Edit:
Zwei "compiled_imagelists.bin"?? Den Texturverweis zu ändern ist simpel aber warum sollte Risen zwei verschiedene BINs für den gleichen Zweck simultan benutzen können? Geht das?
Mein Vorschlag wär ja einfach die Größe der DDS zu ändern (dann muss man halt wieder irgendeine BIN anpassen).

Nein, da hast du mich falsch verstanden. Ich meinte man sollte noch einen zweiten Texturverweis einfügen.

Das mit der Texturgröße geht natürlich auch, wäre aber schöner wenn man zwei Texturen hätte. Eben eine originale und eine "Mod"-Textur. Da reichts eigentlich schon wenn man eine hat. Die sollte genug Platz für Modder bieten. Müsste man eben ein paar Tutorials schreiben und Instruktionen geben, wenn man modden will. Man kann ja schlecht mehrere bins von Moddern hernehmen.

Wenn ich so drüber nachdenke wärs vermutlich das beste, wenn du ein Tool schreiben könntest, dass einfach, z.B. aus einer Textdatei, die nötigen Infos für die bin ausliest und man dann diese anstatt der bin ausliefert. Dann könnte man auch mehrere Mods nutzen. Es müsste einfach mit den mitgelieferten Daten eine neue bin erstellt werden (das könnte vll sogar der Mod-Starter, wenn man das Tool integriert).

Ich hoffe du hast verstanden was ich meine. Die Idee ist sicher noch nicht ausgereift, aber ich glaub ich muss jetzt auch ins Bett.

Gut Nacht! :)

Edit: Wenn's geht könnte mans natürlich so machen, dass man die Inventar-Texturen wie in G3 einzeln macht. Also neue Textur-Referenz in die bin mit Größe 40x40. Und dann so wie oben beschrieben (mit Textfile oder ähnlichem zum integrieren). Dann wären Mods schonmal kompatibel.

Edit2: Das Tool funktioniert leider nicht einwandfrei. Im Spiel (Startmenü schon) werden keinerlei Texturen mehr angezeigt. Da hats vermutlich einfach die Einträge in der bin irgendwie verschoben, sodasses nicht mehr stimmt (SizeToStringtable stimmt aber).

Baltram
04.05.2010, 06:31
Edit2: Das Tool funktioniert leider nicht einwandfrei. Im Spiel (Startmenü schon) werden keinerlei Texturen mehr angezeigt. Da hats vermutlich einfach die Einträge in der bin irgendwie verschoben, sodasses nicht mehr stimmt (SizeToStringtable stimmt aber).War ja irgendwie abzusehen. Ich werds mir heute nachmittag nochmal ansehen.

Zu deinen Vorschlägen: Einzelne Inventarbildchen würde ich gerne vermeiden, auch wenn's wahrscheinlich die Performance nicht allzusehr runterzieht - so wie's in Risen gemacht wird finde ich es einfach kompakter und übersichtlicher.
Ich könnte aber ein Tool schreiben, was 40*40 images automatisch in eine extra große Item-XIMG für Modder lädt (und evt. zwei davon zusammenführen kann) und die BIN entsprechend einrichtet, so müssten sich Modder immerhin schonmal nicht mehr mit Koordinaten rumschlagen.
Dann müssten Mods zwar immer noch manuell kompatibel gemacht werden aber das lässt sich glaube ich sowieso nicht vermeiden - außer der Mod-Starter würde nach jeder Konfigurationsänderung alle BINs neu erstellen...

|Lorn|
04.05.2010, 07:09
War ja irgendwie abzusehen. Ich werds mir heute nachmittag nochmal ansehen.

Danke :)


Zu deinen Vorschlägen: Einzelne Inventarbildchen würde ich gerne vermeiden, auch wenn's wahrscheinlich die Performance nicht allzusehr runterzieht - so wie's in Risen gemacht wird finde ich es einfach kompakter und übersichtlicher.

Da hast du natürlich recht.


Ich könnte aber ein Tool schreiben, was 40*40 images automatisch in eine extra große Item-XIMG für Modder lädt (und evt. zwei davon zusammenführen kann) und die BIN entsprechend einrichtet, so müssten sich Modder immerhin schonmal nicht mehr mit Koordinaten rumschlagen.
Dann müssten Mods zwar immer noch manuell kompatibel gemacht werden aber das lässt sich glaube ich sowieso nicht vermeiden - außer der Mod-Starter würde nach jeder Konfigurationsänderung alle BINs neu erstellen...

Mir ist da gerade etwas eingefallen (keine Ahnung ob du das gemeint hast):
Man könnte ja als Modder einfach seine Inventar-Icons mitliefern (in einem bestimmten Ordner). Per Modstarter und einem von dir geschriebenen Tool werden diese dann in eine neue Textur (GUI_IconSets_Mod_01) kopiert, welche zusammen mit den entsprechenden IC_It-Strings in der compiled_imagelists.bin referenziert wird. Die Namen für die Strings bekommt das Tool/der MDS aus einer Textdatei, die jeder Modder in einem bestimmten Ordner beilegen muss.

Sicher ist das nicht einfach zu programmieren, aber für mehrere Mods wäre das schonmal sehr gut.

Aber immer langsam mit den jungen Pferden. Am besten du schreibst bei Gelegenheit erst nochmal dein erstes Tool um, sodass es richtig funktioniert.

Auf jeden Fall super was du im Bereich Risen-Modding schon alles geleistet hast :gratz

Baltram
04.05.2010, 14:47
Ich glaube ich bin an einer Stelle in der BIN einfach um 2 bytes verrutscht...
Hier (http://upload.worldofplayers.de/files5/extend_comp_imgl_0_03.exe) daher die korrigierte Version des Tools (es wird jetzt übrigens auch direkt die BIN verändert).

EDIT: Neuere Version: http://upload.worldofplayers.de/files5/extend_comp_imgl_0_05.exe

Wie's aussieht, komme ich heute wohl auch nicht mehr dazu, Risen anzuwerfen. Wär nett wenn du (|Lorn|) schnell testen würdest ob es jetzt funktioniert.

Zu der Frage wie man das später bequem handhaben könnte mein Vorschlag:
Für jede Mod wird ein eigenes (Größe kann variieren) Bitmap mit Inventar- und GUI-Bildchen erstellt, da könnte man so wie du vorgeschlagen hast eine vom Modder bereitgestellte Textdatei durch ein entspr. Tool jagen, dass dann die BIN und die DDS zusammenstückelt.

Wenn man nun mehrere dieser Mods kombinieren will, muss der ModStarter nur noch die BINs abgleichen und daraus eine vollständige erstellen.

Das hätte den Vorteil, das man eine einzelne dieser Mods auch ohne ModStarter spielen könnte, dadurch dass man nicht bei jedem Spielstart erst Textdateien einlesen muss.

Aber das ist für mich eigentlich alles noch Zukunftsmusik - immoment gibt's finde ich noch eine Menge wichtigere Punkte beim Risenmodding, die angegangen werden müssen...

|Lorn|
04.05.2010, 15:20
Ich glaube ich bin an einer Stelle in der BIN einfach um 2 bytes verrutscht...
Hier (http://upload.worldofplayers.de/files5/extend_comp_imgl_0_02.exe) daher die korrigierte Version des Tools (es wird jetzt übrigens auch direkt die BIN verändert).

Wie's aussieht, komme ich heute wohl auch nicht mehr dazu, Risen anzuwerfen. Wär nett wenn du (|Lorn|) schnell testen würdest ob es jetzt funktioniert.

Klar seh ichs mir an :)


Zu der Frage wie man das später bequem handhaben könnte mein Vorschlag:
Für jede Mod wird ein eigenes (Größe kann variieren) Bitmap mit Inventar- und GUI-Bildchen erstellt, da könnte man so wie du vorgeschlagen hast eine vom Modder bereitgestellte Textdatei durch ein entspr. Tool jagen, dass dann die BIN und die DDS zusammenstückelt.

Man müsste eben dann in die Textdatei noch Infos zu der Bitmap bzw. dds (GUI-Textur) schreiben, damit der MDS/das Tool auch weiß, wie groß die Textur ist etc.


Wenn man nun mehrere dieser Mods kombinieren will, muss der ModStarter nur noch die BINs abgleichen und daraus eine vollständige erstellen.

Das wäre natürlich auch eine sehr gute Idee. Keine Ahnung allerdings, wie aufwändig sowas zum Programmieren ist...


Das hätte den Vorteil, das man eine einzelne dieser Mods auch ohne ModStarter spielen könnte, dadurch dass man nicht bei jedem Spielstart erst Textdateien einlesen muss.

Wäre auf jeden Fall gut (ich spiel z.B. auch grundsätzlich G3 ohne MDS).


Aber das ist für mich eigentlich alles noch Zukunftsmusik - immoment gibt's finde ich noch eine Menge wichtigere Punkte beim Risenmodding, die angegangen werden müssen...

Vor allem müssen mal ein paar Modder her. Risen ist aber auch nicht so gut zu modden wie G3 (sowohl technisch als auch ingame sozusagen). Einfach weil bei G3 schon mal von Grund auf mehr gefehlt hat und die Welt größer war.

Nichtsdestotrotz kann man bei Risen noch einiges machen!

Fürs erste sollte dein Tool (wenn es denn funktioniert) auch ausreichen.

Gruß
Lorn

-----------------------

Edit:

Das Tool scheint immer noch nicht richtig zu funktionieren. Es werden wieder keine GUI-Texturen dargestellt.

Hast du vielleicht vergessen, irgendeine Size-Angabe zu vergrößern? Die SizeToStringtable hattest du ja schon, fehlt vll noch der DEADBEEF?

Vermutlich gibt es für die Textur (GUI_IconSets01), die ja die erste "Class" darstellen dürfte auch einen SizeCount. Hast du darauf geachtet, den zu vergrößern?

Baltram
04.05.2010, 16:35
Ach Mensch... ich sollte mir das Zeug was mein Tool produziert echt mal ansehen, bevor ich es rausgebe (sorry für den Mehraufwand). Es waren natürlich immer noch die 2 Bytes Verschiebung, die ich zwar im Eintrag selbst korrigiert, bei der Insertposition aber vergessen hatte. Der Downloadlink ist angepasst - wenns jetzt nicht läuft dann...

Hast du vielleicht vergessen, irgendeine Size-Angabe zu vergrößern? Die SizeToStringtable hattest du ja schon, fehlt vll noch der DEADBEEF? Vermutlich gibt es für die Textur (GUI_IconSets01), die ja die erste "Class" darstellen dürfte auch einen SizeCount. Hast du darauf geachtet, den zu vergrößern?Es gibt zwei Size-, zwei Count und eine Offsetangabe die modifiziert werden müssen (solange man nur den Item-Icon-Pool erweitert) und die werden vom Tool alle korrekt angepasst.
Man müsste eben dann in die Textdatei noch Infos zu der Bitmap bzw. dds (GUI-Textur) schreiben, damit der MDS/das Tool auch weiß, wie groß die Textur ist etcOptimal wäre es, wenn man nur einen Ordner angeben muss und das Tool die Bitmapgröße automatisch errechnet und die Dateinamen der einzelnen Icon-Bitmaps in der BIN als ImageName verwendet. Dann kann man sich sogar die Textdatei sparen.
Keine Ahnung allerdings, wie aufwändig sowas zum Programmieren ist...Das ist keine große Sache - man muss nur die ImageCollectionNames vergleichen.
Vor allem müssen mal ein paar Modder her. Risen ist aber auch nicht so gut zu modden wie G3 (sowohl technisch als auch ingame sozusagen). Einfach weil bei G3 schon mal von Grund auf mehr gefehlt hat und die Welt größer war.Klar - bei Gothic 3 sind Erweiterungsmods sehr gefragt (gewesen), 'Komplett'-Mods mit eigenständiger Story und Welt würden mich persönlich allerdings mehr bei Risen reizen, einfach weil es dort scripttechnisch weitaus besser aussieht (vorausgesetzt man schafft es, die Risen DLLs nachzubilden, was wohl unglaublich aufwändig bis fast unmöglich ohne Infos von PB ist).
Shak hats ja neulich geshafft, einen eigenen Dialog zu integrieren. Wenn es in dem Bereich erst mal mehr Möglichkeiten gibt, wird denke (und hoffe) ich auch Risen Modder anziehen.

|Lorn|
04.05.2010, 18:19
Ach Mensch... ich sollte mir das Zeug was mein Tool produziert echt mal ansehen, bevor ich es rausgebe (sorry für den Mehraufwand). Es waren natürlich immer noch die 2 Bytes Verschiebung, die ich zwar im Eintrag selbst korrigiert, bei der Insertposition aber vergessen hatte. Der Downloadlink ist angepasst - wenns jetzt nicht läuft dann...

Leider immer noch das selbe Problem... könnte auch sein, dass es daran liegt, dass ich nur die Demo da habe... (kann ich mir aber fast nicht vorstellen) Vielleicht testest du es mal bei dir.


Optimal wäre es, wenn man nur einen Ordner angeben muss und das Tool die Bitmapgröße automatisch errechnet und die Dateinamen der einzelnen Icon-Bitmaps in der BIN als ImageName verwendet. Dann kann man sich sogar die Textdatei sparen.Das ist keine große Sache - man muss nur die ImageCollectionNames vergleichen.

Das wäre natürlich super.


Klar - bei Gothic 3 sind Erweiterungsmods sehr gefragt (gewesen), 'Komplett'-Mods mit eigenständiger Story und Welt würden mich persönlich allerdings mehr bei Risen reizen, einfach weil es dort scripttechnisch weitaus besser aussieht (vorausgesetzt man schafft es, die Risen DLLs nachzubilden, was wohl unglaublich aufwändig bis fast unmöglich ohne Infos von PB ist).
Shak hats ja neulich geshafft, einen eigenen Dialog zu integrieren. Wenn es in dem Bereich erst mal mehr Möglichkeiten gibt, wird denke (und hoffe) ich auch Risen Modder anziehen.

Wobei's da, wie du ja schon sagst, ohne größeres Tool-Angebot zum Automatisieren erstmal schlecht aussieht. Eine solche Mod ist ja, wenn sie überhaupt mal möglich ist, sehr aufwendig.

Baltram
04.05.2010, 20:06
Ich habe es gerade getestet und bei mir funktioniert es leider auch nicht.

Ich bin mir eigentlich sehr sicher, das die jetzt BIN okay ist, daher gehe ich davon aus, dass wohl nicht nur diese für die Icons zuständig ist. Trotzdem werde ich noch ein paar Sachen darin ausprobieren (z.B. Neue ImageCollection).

|Lorn|
04.05.2010, 20:20
Ich habe es gerade getestet und bei mir funktioniert es leider auch nicht.

Dachte ich mir.


Ich bin mir eigentlich sehr sicher, das die jetzt BIN okay ist, daher gehe ich davon aus, dass wohl nicht nur diese für die Icons zuständig ist. Trotzdem werde ich noch ein paar Sachen darin ausprobieren (z.B. Neue ImageCollection).

Hast du die bin fixen können? Sicher ist sie nicht für alle zuständig, die Texturen vom Hauptmenü gehen ja größtenteils. Nur der Rest nicht.

Baltram
04.05.2010, 20:52
Die BIN an sich ist imho OK (bin mir zu über 95% sicher) - ich wüsste da grad nicht was ich fixen sollte. Was ich vermute ist, dass noch eine oder mehrere andere Dateien geändert werden müssten außer der BIN.

Was komisch ist - du sagst bei dir werden alle Texturen außer die im Hauptmenü angezeigt während sich das bei mir genau andersherum verhält: Die Menüs (auch das Portrait des Inquisitors), Ladebildschirme (die Screens gibts noch aber der Rest ist weg), Mauszeiger und Ingamemenüs sind bei mir nicht mehr sichtbar bzw. komplett rot, alles andere wird aber ganz normal angezeigt - also Icons, Landschaftstexturen usw.

|Lorn|
04.05.2010, 20:55
Die BIN an sich ist imho OK (bin mir zu über 95% sicher) - ich wüsste da grad nicht was ich fixen sollte.

Was könnte es denn sein? SizeToStringtable? SizeUntilDeadCode? (beide im Datei-Header). Size der 1. Class (unsere GUI_IconSets01). Size der Stringtable.

Dass es noch eine Datei gibt, die man verändern muss, glaube ich fast nicht... wenn dann noch eine der bins, ist aber doch eher unwahrscheinlich.


Was komisch ist - du sagst bei dir werden alle Texturen außer die im Hauptmenü angezeigt während sich das bei mir genau andersherum verhält: Die Menüs (auch das Portrait des Inquisitors), Ladebildschirme (die Screens gibts noch aber der Rest ist weg), Mauszeiger und Ingamemenüs sind bei mir nicht mehr sichtbar bzw. komplett rot, alles andere wird aber ganz normal angezeigt - also Icons, Landschaftstexturen usw.

Bei mir fehlen der Mauszeiger und das Hintergrundbild im Hauptmenü. Den Rest konnte ich nicht checken, weil ich nichts gesehen habe (konnte kein Game laden).

Baltram
04.05.2010, 21:29
Was könnte es denn sein? SizeToStringtable? SizeUntilDeadCode? (beide im Datei-Header). Size der 1. Class (unsere GUI_IconSets01). Size der Stringtable.
Dass es noch eine Datei gibt, die man verändern muss, glaube ich fast nicht... wenn dann noch eine der bins, ist aber doch eher unwahrscheinlich.Mir kommt es ja eigentlich auch unwahrscheinlich vor aber anders kann ich's mir grade nicht erklären. Wenn dann vermute ich was in einer dll, nicht in einer der anderen BINs, weil die ja eigentlich alle einen festen Zweck haben.
Ich kann innerhalb der BIN von fast jedem Byte sagen, was seine Funktion ist. Die einzige Ausnahme, die mir spontan einfällt sind die 13 Bytes die jede Instanz einer Klasse (?) einleiten (die bleiben bei Instanzen selber Art aber gleich und sind deshalb kein Problem). Deshalb kann's nicht an der BIN selbst liegen, denke ich mir, weil die, so wie ich das sehe, völlig in Ordnung ist.
Bei mir fehlen der Mauszeiger und das Hintergrundbild im Hauptmenü. Den Rest konnte ich nicht checken, weil ich nichts gesehen habe (konnte kein Game laden).Ja da hatte ich mich verlesen. Wir haben wohl genau die selben 'Symtome'. Wenn man die Entfernungen abschätzt kommt man übrigens auch ohne Mauszeiger zurecht, ist aber sehr müham^^

|Lorn|
04.05.2010, 21:34
Mir kommt es ja eigentlich auch unwahrscheinlich vor aber anders kann ich's mir grade nicht erklären. Wenn dann vermute ich was in einer dll, nicht in einer der anderen BINs, weil die ja eigentlich alle einen festen Zweck haben.
Ich kann innerhalb der BIN von fast jedem Byte sagen, was seine Funktion ist. Die einzige Ausnahme, die mir spontan einfällt sind die 13 Bytes die jede Instanz einer Klasse (?) einleiten (die bleiben bei Instanzen selber Art aber gleich und sind deshalb kein Problem). Deshalb kann's nicht an der BIN selbst liegen, denke ich mir, weil die, so wie ich das sehe, völlig in Ordnung ist

Hm, du hast also alle von mir genannten Werte verändert? Komisch... Der Anfang der Klassen könnten doch die "Art" der Klasse selbst sein. Da die ja bei allen (Sub)Classes gleich sind (ist mir übrigens auch schon aufgefallen).

Und am Tool kanns nicht mehr liegen? Hast dus schonmal manuell versucht?


Ja da hatte ich mich verlesen. Wir haben wohl genau die selben 'Symtome'. Wenn man die Entfernungen abschätzt kommt man übrigens auch ohne Mauszeiger zurecht, ist aber sehr müham^^

Macht nur nicht viel Sinn :D


Vielleicht könntest du mir mal eine kleine Doku über die bin schreiben. Momentan finde ich mich zwischen den Klassen und Subklassen noch etwas schwierig zurecht. Vielleicht hast du da einfach nur nen Leichtsinnsfehler drin?

Baltram
04.05.2010, 21:48
Ich habe es nicht komplett manuell versucht aber wenn ich es täte käme dabei genau dasselbe raus (das Tool verändert ja nur eine Hand voll Stellen).

Was ich gemacht habe ist die BIN (mithilfe des Tools) um einen Eintrag zu erweitern und dann auf Konsistenz zu prüfen. D. h. ich gehe alle relevanten Stellen (also alles was sich geändert hat, dazu der StringTable-Offset, der StringTable-Count, die Sizes der beiden übergeordneten Klassen* und der Count der direkt übergeordneten Klasse) von vorn bis hinten durch und prüfe, ob alles passt.

*Irgendwie fällt mir grad kein guter Begriff dazu ein. Eine Klasse ist es ja eigentlich nicht, wenn dann eine Instanz, oder??


SizeUntilDeadCodeKenn ich nicht. Für mich hört der Header bei 0x0000000E auf. Siehe auch hier (http://www.bendlins.de/nico/risen/genomfle.txt).

|Lorn|
04.05.2010, 21:51
Ich habe es nicht komplett manuell versucht aber wenn ich es täte käme dabei genau dasselbe raus (Das Tool verändert ja nur eine Hand voll Stellen).

Was ich gemacht habe ist die BIN (mithilfe des Tools) um einen Eintrag zu erweitern und dann auf Konsistenz prüfen. D. h. ich gehe alle relevanten Stellen (also alles was sich geändert hat, dazu der StringTable-Offset, der StringTable-Count, die Sizes der beiden übergeordneten Klassen und der Count der direkt übergeordneten Klasse) von vorn bis hinten durch und prüfe, ob alles passt.

Hm klingt eigentlich richtig...


Kenn ich nicht. Für mich hört der Header bei 0x0000000E auf. Siehe auch hier (http://www.bendlins.de/nico/risen/genomfle.txt).

Mir war nur so, als gäbs das in den G3-Weltdaten (lrentdats). Kann aber auch sein, dass ich mich irre/dass es das in Risen/in den bins nicht gibt.

Vielleicht kommt ja shak noch hinter das Geheimnis? Wieso schaut der heute auch überhaupt nicht rein? :D

Baltram
05.05.2010, 15:52
Habs mir gerade nochmal angeschaut... mein Tool produziert immer noch Müll - nur dass die Offsets jetzt stimmen. Sorry für die unnötigen Spekulationen gestern, da war ich wohl nicht ganz auf dem Damm^^

Ich werde demnächst eine funktionierende Version hochladen, der manuelle Test hat in Risen immerhin schonmal funktioniert:

http://upload.worldofplayers.de/files5/DasMesser.jpg

|Lorn|
05.05.2010, 15:56
Habs mir gerade nochmal angeschaut... mein Tool produziert immer noch Müll - nur dass die Offsets jetzt stimmen. Sorry für die unnötigen Spekulationen gestern, da war ich wohl nicht ganz auf dem Damm^^

No problem. Hatte eh keine Lust für Geschichte-Klausur zu lernen :D


Ich werde demnächst eine funktionierende Version hochladen, der manuelle Test hat in Risen immerhin schonmal funktioniert:

http://upload.worldofplayers.de/files5/DasMesser.jpg

Nett :) Das Icon ist mir auch schon aufgefallen :D

Das Icon "Nix" wird aber nicht verwendet, oder? (Da stellt sich mir die Frage, welches Icon für die IC_It_None steht)

Baltram
05.05.2010, 17:07
So. Hier ist nun die erste Version, die auch (voraussichtlich :D) funktioniert:
http://upload.worldofplayers.de/files5/extend_comp_imgl_0_05.exe

Ich habe sie nicht in Risen getestet, weiß aber, dass bei entsprechenden Eingaben Byte für Byte das Selbe rauskommt wie im manuell veränderte BIN file, von dem ich weiß, dass es läuft.
Höchtens beim Hinzufügen von mehreren Einträgen könnte es theoretisch noch buggen - aber das halte ich für seeeehr unwahrscheinlich.

Da stellt sich mir die Frage, welches Icon für die IC_It_None stehtDie Koordinaten, die im Eintrag von IC_It_None stehen, geben eigentlich schon die Position von "Nix" an.

No problem. Hatte eh keine Lust für Geschichte-Klausur zu lernen :D:p Gestern habe ich während ich den ganzen Unsinn programmiert habe für eine Erdkunde-Klassenarbeit gelernt (war heut morgen) - ist aber echt gut gelaufen^^

|Lorn|
05.05.2010, 17:13
So. Hier ist nun die erste Version, die auch (voraussichtlich :D) funktioniert:
http://upload.worldofplayers.de/files5/extend_comp_imgl_0_05.exe

Na ich wills doch schwer hoffen :D

Edit: Funktioniert gut =) Super, danke.


Ich habe sie nicht in Risen getestet, weiß aber, dass bei entsprechenden Eingaben Byte für Byte das Selbe rauskommt wie im manuell veränderte BIN file, von dem ich weiß, dass es läuft.
Höchtens beim Hinzufügen von mehreren Einträgen könnte es theoretisch noch buggen - aber das halte ich für seeeehr unwahrscheinlich.

Ich vertrau dir mal (wieder) :p


Die Koordinaten, die im Eintrag von IC_It_None stehen, geben eigentlich schon die Position von "Nix" an.

Dann wird das wohl nur von keinem Template im Spiel verwendet.


:p Gestern habe ich während ich den ganzen Unsinn programmiert habe für eine Erdkunde-Klassenarbeit gelernt (war heut morgen) - ist aber echt gut gelaufen^^

Mal sehen wie's bei mir lief:scared: :D

Shak-otay
05.05.2010, 17:48
Hai, ihr zwai,

ich bringe gerade meinen Lrenter auf Vordermann, dass er auch die Icons "kann".

Allerdings habe ich noch ein ungutes Gefühl mit dem EntityCnt; der ist ja 6 (06 000000 an Adresse 0x19 oder so). Leider sind es ja deutlich mehr Entities.

Weiss einer von euch da mehr?

Baltram
05.05.2010, 18:02
Es gibt 6 'Haupt'-Entities die 'Unter'-Entities enthalten, die wiederum selbst welche enthalten, das sind dann die einzelnen 'Einträge'.

Die erste Hauptentity enthält beispielsweise eine untergeordnete Entity die wiederum 470 'noch-weiter-untergeordnete' Entities enthält.

Wenn dir in dieser BIN irgendwas nicht ganz klar ist, helfe ich dir gerne.

Shak-otay
05.05.2010, 18:09
Öhm, ja. Diese 10 Bytes pro Hauptentity-Eintrag- weisst Du, was die bedeuten?
Das letzte Word ist ja jeweils der Hauptentity-counter (0000 bis 0005).

Baltram
05.05.2010, 18:37
Kannste hier (http://forum.worldofplayers.de/forum/showpost.php?p=11015560&postcount=271) nachlesen.

Z.B. der erste Eintrag bedeutet also
19.06.2009, 12:41:26 | IMC_Icons.ximc

NicoDE
05.05.2010, 20:48
Ich habe nebenbei die registrierten Aufzählungen rausgesucht:
//
// eCGuiImage2
//
// [Resource]
// ImageName = The unique name of the image. Usually the file name of the raw texture this image has been created from.
// [Appearance]
// RectOnTexture = The rectangle on the containing list's texture.
// BlendMode = The frame buffer blending mode. Use Modulate2X if you want to both brighten and darken (black areas will be darkened, white a reas will be brightened).
//

enum eEImageBlend {
eEImageBlend_AlphaBlend = 0x00000000,
eEImageBlend_Add = 0x00001000,
eEImageBlend_AddScaled = 0x00002000,
eEImageBlend_Modulate = 0x00003000,
eEImageBlend_Modulate2X = 0x00004000,
eEImageBlend_Overwrite = 0x00005000
};

//
// eCGuiSplitImage2
//
// [Appearance]
// FrameIndent =
// DrawStyle =
//

enum eESplitImageStyle {
eESplitImageStyle_Scale = 0x0000001B,
eESplitImageStyle_RepeatX_ScaleY = 0x0000001C,
eESplitImageStyle_ScaleX_RepeatY = 0x00000023,
eESplitImageStyle_Repeat = 0x00000024,
};

//
// eCGuiLayeredImage2
//
// [Layers]
// BackgroundImage =
// OverlayImage =
// BackgroundBlendMode =
// OverlayBlendMode =
//

enum eEImageLayerBlend {
eEImageLayerBlend_FromImage = 0x00000000,
eEImageLayerBlend_AlphaBlend = 0x00010000,
eEImageLayerBlend_Add = 0x00020000,
eEImageLayerBlend_AddScaled = 0x00030000,
eEImageLayerBlend_Modulate = 0x00040000,
eEImageLayerBlend_Modulate2X = 0x00050000,
eEImageLayerBlend_Overwrite = 0x00060000
};

|Lorn|
05.05.2010, 22:40
@ Nico: Ich füge das mal zum Erkenntnis-Thread hinzu. Danke :)

Shak-otay
08.05.2010, 01:12
so, mit dem Lrenter hab' ichs jetzt auch hinbekommen. Allerdings gibt es ein Problem mit der dds in der "GUI_IconSets01._ximg".

Nachdem ich die dds per DXTBmp/Gimp (bmp) bearbeitet habe, wähle ich in DXTBmp beim Speichern die Option "DDS 888 24 bit" wählen, damit wieder ein 4 MB-File entsteht. Wenn ich diese DDS in die _XIMG zurückkopiere, gibt's beim Gamestart 'ne exception."DDS 888-8 32 bit" ohne MipMaps.

(Der DDS2 Converter zeigt beim aus der _XIMG extrahierten DDS
als Pixelformat A8R8G8B8 an; das sollte also passen, oder?)

Allerdings werden die Änderungen nicht im File abgespeichert, obwohl sie nach "Reload after edit" in DXTBmp sichtbar sind.

Wie macht denn ihr das?

|Lorn|
08.05.2010, 14:59
Wie macht denn ihr das?

Du sprichst von einer manuellen Veränderung der Textur, oder? Also nicht "paste" mit Tool oder ähnliches?

Also ich bearbeite die Textur einfach mit Paint.NET und speichere sie dann ab (natürlich mit DTX3- Explizites Alpha, sonst ist die Transparenz weg).

Shak-otay
08.05.2010, 15:14
Du sprichst von einer manuellen Veränderung der Textur, oder? Also nicht "paste" mit Tool oder ähnliches?

Also ich bearbeite die Textur einfach mit Paint.NET und speichere sie dann ab (natürlich mit DTX3- Explizites Alpha, sonst ist die Transparenz weg).Ok, danke. "Paste mit Tool" würde mir aber auch schon helfen.

Hast Du da 'ne Idee ?

(Habe nämlich Paint.NET aus irgendeinem Grund schon vorm Jahr vom PC verbannt und würde es nur ungern wieder installieren.§cry)

|Lorn|
08.05.2010, 18:21
Hast Du da 'ne Idee ?

Ehrlich gesagt nicht... Baltram hatte die Idee, ein Tool zu schreiben, das aus entsprechenden "Rohdaten" eine neue GUI_IconSets01 zusammensetzt. Ist aber noch nichts draus geworden.

Wie gesagt, ich benutze Paint.NET (schon lange) und habe keine Probleme damit. An Gimp konnte ich mich nie gewöhnen.

Wenn du willst, kann ich dir deine Textur "schnell" bearbeiten. Aber eine dauerhafte Lösung für dich ist das trotzdem nicht.

|Lorn|
08.05.2010, 18:45
Genau, ich probiers mal mit Paint-Net, äh Paint.Net; trotzdem 'danke' für das Angebot.

Okay :D Also ich mag das Programm. Bisher hat es mich eigentlich kaum im Stich gelassen :p

Edit: Ist zwar etwas unpassend, aber man kann tatsächlich einfach so Templates in Risen einbinden. Sie müssen nirgends eingetragen werden. Ich schätze mal, es macht keinen Unterschied, ob ich mir die Rüstung jetzt spawne oder sie tatsächlich ins Spiel einbinde.