Jump to content

Home

Jade Empire modding (see first post for info summary)


stoffe

Recommended Posts

After many days of labor, here's a very rough structural layout of an MDL file. It's incomplete and I'd need to sift through many more MDL files to find all the other structures. And right now, I no longer have the time to continue doing that...

 

I say "structural layout" since I can't (easily) check what that non-structural data (e.g. vertices, normals, texture info, etc.) does. I pieced all this info just by looking at the hex of MDL files and using the following two sites as reference:

 

http://home.comcast.net/~cchargin/kotor/mdl_info.html (documents KoToR 1/2's MDL format)

http://web.archive.org/web/20041021050414/www.torlack.com/index.html?topics=nwndata_binmdl (documents NWN1's MDL format)

 

The result is that although I can guess at the data types and structures that MDL contains, I can't tell what what those structures are exactly for, unless that structure is very similar to a structure from the old MDL formats. For example, I can tell if something is a floating point value, but I may have no clue what that FP value is for.

 

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

 

- unless otherwise noted, number of bytes per item is 4

- item numbers and floating point numbers are given in decimal

- all other numbers are given in hex (which means "a" is 10, "10" is 16, etc.)

- if x is a model ptr, it refers to offset (x + 14); null model ptr = 00000000

- short and long values are given in big-endian form

- all numbers in big-endian form are always written as 8 digits

- tree of nodes are in pre-order

- floats, longs, null ptrs all have the same 0 value: 00000000

- function ptrs are the memory addresses (datatype long) of functions once the game's binary code is loaded into memory

 

MDL file

1) file header

2) model header

3) animation blocks; number of blocks is model header data's item 4

4) model nodes

5) unknown array 1 (if it exists)

 

file header

loc 0

1) 00008700

2) offset to raw data or end of file if no raw data (torlack); never seen any raw data

4) MDX part 1 size

5) MDX part 2 size (item 4 + item 5 = MDX total size)

6) 00000000?

size 14

 

model header

loc 14

1) geometry header block

2) model header data block

3) names array

size dc (items 1 to 2)

 

model header data

loc 64

1) long? does torlack's info apply here?

2) 00000000?

3) model ptr to animation ptr array

4) number of animations

5) same as item 4

6) long or float? seen 0, (cb90020 or 2.85e-31)

7) bounding box min x? (cchargin)

8) bounding box min y? (cchargin)

9) bounding box min z? (cchargin)

10) bounding box max x? (cchargin)

11) bounding box max y? (cchargin)

12) bounding box max z? (cchargin)

13) radius? (cchargin)

14) long? seen values of 1 and 2 so far

15) float? animation scale? (torlack)

16) supermodel name (20-len null-terminated string) (cchargin)

17) model ptr to a node, typically but not always the model root node

18) 00000000?

19) same as file header item 4

20) same as file header item 5

21) 00000000?

22) model ptr to names array

23) number of names

24) same as item 23

25) long? seen 0, 80100, cdcdcd00 (probably junk)

26) model ptr to unknown array 1 (or end of file if block doesn't exist?)

27) number of items in array specified at item 26

28) same as 27

size 8c

 

geometry header

1) function ptr

2) function ptr

3) model/animation name (20-len null-terminated string)

4) model ptr to model/animation's root node

5) number of nodes in model/animation (recursively includes nodes in super model + 1)? (torlack)

6) 6 00000000's?

7) reference count? seen only 0 (torlack)

8) geometry type (char) (torlack)

9) 3 chars padding? (torlack)

size 50

 

names array

loc f0

1) model ptrs to the strings in item 2; number of model ptrs is model header data's item 27

2) strings delimited by null chars; number of model ptrs is model header data's item 27

 

animation ptr array

1) model ptrs to animation headers; number of model ptrs is model header data's item 4

 

animation block

1) animation header block

2) event array

3) animation nodes

 

animation header

1) geometry header block

2) animation length (float)? (cchargin)

3) trans time (float)? (cchargin)

4) short? seen only 0, 101, 1

5) model name or part name (20?-len null-terminated string)

6) padding (short)? seen 4, 0

7) model ptr to event array or null if no events

8) number of events

9) same as item 8

10) 00000000?

size (items 1 to 10) 8c

size (items 2 to 10) 3c

 

event array

1) events; number of events is animation header's item 8

 

event

1) activation time? (float) (cchargin)

2) event name (20-len null-terminated string (cchargin)

3) 00000000?

size 28

 

node

1) node header block

2) subheader block (depends on node header's item 1 and apparently also node header's item 2?); can be nonexistent

3) data (depends on node header's item 1); can be nonexistent

4) child node array (if any children)

 

node header

1) node type (short) (torlack)

2) super node number (short)? (cchargin)

3) node/part number (short)? (cchargin) all values are unique within a model geometry/animation geometry block, generally increasing

4) n where node is n-th node of model node tree laid out in pre-order; if two different node header's have the same item 3, they also have the same item 4 (this applies for both model and animation node trees)

5) model ptr to parent animation header or null if no such parent

6) model ptr to parent node or null if no such parent

7) position X? (float) (cchargin)

8) position Y? (float) (cchargin)

9) position Z? (float) (cchargin)

10) rotation W? (float) (cchargin)

11) rotation X? (float) (cchargin)

12) rotation Y? (float) (cchargin)

13) rotation Z? (float) (cchargin)

14) model ptr to array of child node ptrs (or end of node if no children)

15) number of child nodes

16) float? seen 1.0

17) float? usually 1.0e10, seen 10.0, 30.0

size 3c

 

child node array

1) model ptrs to nodes; number of model ptrs is node header's item 15

 

mesh node subheader (type 0021)

1) 3 00000000's?

2) a floats

3) 00000000?

4) long? seen 10

5) 20 bytes that seem to vary in format (not sure what determines format):

5a) 10 shorts?

5b) 8 floats

5c) 10-len null-terminated string + 4 floats

6) if item 7 is not 0, number of items in array specified at item 7; otherwise, some long? seen 2e8, 321, f72, 954 (can't be model ptr since it can be larger than mdl file size)

7) 00000000 or model ptr to mesh node data array

8) -1 (long) if item 7 is 0?; otherwise, seen 61 and 62 (can't be index into array since it can be larger than array size)

9) long? seen 3 and 4

10) c bytes that seem to vary in format (not sure what determines format):

10a) 1 long and 4 shorts? or 6 shorts?

10b) 3 floats

11) long? seen 1c, 20, 24, 10, 34

12) long? seen 6b, 63, 27, 21, 823

13) 00000000?

14) long? seen c

15) long? seen 10, -1

16) long? seen 14, 10, -1

17) long? seen 18, -1

18) long? seen 1c, -1

19) long? seen -1

20) long? seen -1

21) long? seen -1

22) long? seen -1

23) long? seen -1

24) long? seen -1, 10

25) long or 2 shorts?? seen 2083d, 1017a, 11099, 10229, 2002e, 18, 10270 (can't be model ptr or offset in MDX file since it can be too large)

26) long?? seen 0, 7088, 43cb, 740, 180 (can't be model ptr since it can be larger than mdl file size)

27) long or 2 shorts?? seen 91fa0f8, 7690178, 76adc08, 76833a8, 76834d8, 0, abbcb10

28) long?? seen 3ccd, 3922, 3920, 4a92, 391c, -1, 443a (can't be model ptr since it can be larger than mdl file size)

29) long? seen 1

30) float? seen 0.0, 1.0

31) float? seen 0.0, 1.0

32) float? seen 0.0, 1.0

30) float; seen 1.0, 0.9

31) 00000000?

32) long or 2 shorts?? seen 91f7fe8, 7684fa0, 859ffc8, 7684b30, 0, c0affc8; difference between item 27 and 32 is relatively small (probably same "type")

33) offset in MDX file; either 0 or always past MDX part 1 (greater than MDX part 1 size); seen MDX part 1 size

34) offset from item 33?; always less than MDX part 2 size; seen MDX part 2 size

size e4

 

mesh node data array (type 0021)

(exists only have mesh node subheader's item 7 is not 0)

1) shorts; number of shorts is mesh node subheader's item 6

 

skin mesh node subheader (type 0061)

1) mesh node subheader block

2) 00000000?

3) 00000000?

4) 00000000?

5) long? seen 1c

6) long? seen 2c

7) model ptr to skin mesh node array 1 (cchargin)

8) number of items in array specified at item 7

9) model ptr to skin mesh node array 2

10) number of items in array specified at item 9

11) same as 10

12) model ptr to skin mesh node array 3

13) number of items in array specified at item 12

14) same as 13

15) model ptr to skin mesh node array 4

16) number of items in array specified at item 15

17) same as 16

18) 2c shorts? (number of shorts is same as item 6, but could be coincidence)

19) float? seen 1.0

20) float? seen 1.0

size (items 2 to 17) 74

size (items 2 to 20) d4

size (items 1 to 17) 158

size (items 1 to 20) 1b8

 

skin mesh node array 1

1) shorts? number of shorts is skin mesh node subheader's item 8

 

skin mesh node array 2

1) skin mesh node array 2 blocks; number of blocks is skin mesh node subheader's item 10

 

skin mesh node array 2 block

1) float?

2) float?

3) float?

4) float?

size 10

 

skin mesh node array 3

1) skin mesh node array 3 blocks; number of blocks is skin mesh node subheader's item 13

 

skin mesh node array 3 block

1) float?

2) float?

3) float?

size c

 

skin mesh node array 4

(only seen this array have 0 len, so don't know its structure)

 

light node subheader (type 0003)

1) 10 00000000's (torlack has info but I can't verify)

2) light priority (torlack)

3) ambient only flag (torlack)

4) dynamic type (torlack)

5) affect dynamic flag (torlack)

6) shadow flag (torlack)

7) generate flare flag (torlack)

8) fading light flag (torlack)

9) float? b/w 0 and 1?

10) float? b/w 0.0 and 1.0?

11) float? b/w 0.0 and 1.0?

12) float? b/w 0.0 and 1.0?

13) float? b/w 0.0 and 1.0?

14) float? seen 0.0

15) float? seen 0.0 and 1.0

16) float? seen 0.0 and 1.0

17) float? seen 0.0 and 1.0

18) float? seen 2000.0 and 500.0

19) float? seen -1.0

20) float? seen 0.0

21) float? seen 1.0

22) float? b/w 0.0 and 1.0?

23) float? b/w 0.0 and 1.0?

24) float? b/w 0.0 and 1.0?

size 9c

 

unknown node type 1 subheader (type 1001)

1) long? seen 0, 1

2) float? seen 0.0

3) float? seen 0.0

4) float? seen 0.0

5) float? seen 1.0

6) float? seen 1.0

7) float? seen 1.0

size 1c

 

unknown node type 2 subheader (type 0001 + super node 0002)

1) float?

2) float?

3) float?

4) float?

5) float?

6) float? seen 2.4138735e-9

7) float?

8) float?

9) float?

10) 00000000?

11) 00000000?

12) 00000000?

13) 00000000?

14) 00000000?

15) model ptr to array of child node ptrs or next node? same as node header's item 14?

16) same as node header's item 15? only seen 00000000 and the nodes had no children

17) 00000000?

18) 00000000?

size 48

 

unknown node type 3 subheader (type 0001 + super node 0004)

1) node type of corresponding node under model geometry (there's a node with the same node number in the node tree whose root's offset is specified in model header's geometry header's item 4)? (short)

2) model ptr to controller array or null if no controllers

3) number of controllers

4) same as item 3

5) model ptr to unknown node type 3 array 1 or null if no array

6) number of items in array specified at item 5; = sum of all controller's item 3's (i.e. total number of time keys)?

7) model ptr to controller data array or null if no controller data

8) number of controller data items

9) long? seen 6, 15, 16, 17

size 24

 

controller array?

1) controller blocks; number of blocks is unknown node type 3 subheader's item 3

 

controller?

1) controller type (long)? seen 8 (position), 14 (orientation)

2) short? = item 1 + 8?? seen 10, 1c

3) number of rows (and hence, number of time keys) (short)?

4) index into array specified at unknown node type 3 subheader's item 5? sum of all previous controller's # rows (item 3) or 0 if no previous controllers

5) index into controller data array (short)? sum of all previous controller's [# rows (item 3) * (# columns (derived from item 6) + 1)] or 0 is no previous controllers

6) column type (char)? seen 2 (2 columns), 5 (1 columns), 4 (0 columns)

7) char? seen 5, b3

8) short? seen 12, 4c (both multiples of 12...)

size 10

 

unknown node type 3 array 1

1) shorts that are related to time keys? number of shorts is unknown node type 3 subheader's item 6; seen values uniformly b/w 0 and 155 (larger values no doubt exist); typically x0, x5, or xa, where x is any digit(s)

 

controller data array?

1) the array is partitioned into controller data blocks that correspond to each controller; number of blocks is number of total floats/4-bytes is unknown node type 3 subheader's item 8;

 

controller data block

1) time keys? number of keys is controller's # rows (controller's item 3) (not sure if this is just another column since unknown node type 3 array 1 seems to contain integral versions of the time keys

2) controller data block items; number of items is controller's # rows * # columns; item data type seems to depend on unknown node type 3 subheader's item 1

 

controller data block item?

1) float? all 4 bytes almost always non-00, but the numbers can be extremely small or large (e.g. -1.9581039E22, 2.1989652E-16, even 4.0277763E-38)

 

controller data array item (controller node type (unknown node type 3 subheader's item 1) = 1001 and last 10 bytes of controller data)??

1) 2 shorts?

(when I see node type is 1001 with column type 5, the controller always has 2 rows, and the controller data always looks like this: 00020080 00001000 00020080 00001000; I also see this if node type is 1001 and no controllers are specified)

 

unknown array 1

1) unknown array 1 blocks; number of blocks is unknown node type 3 subheader's item 6

 

unknown array 1 block

1) model ptr to a node; denote as node A

2) model ptr to a node; denote as node B

3) 7 floats? 7 = node B's part number - node A's node's part number?

 

MDX file

1) MDX part 1

2) MDX part 2

 

MDX part 1

?

 

MDX part 2

1) function ptr?

2) long? seen 5 and 6 so far

3) 0018?

4) char?

5) char? usually 4x or 5x where x is any digit

6) array of shorts, adjacent values are usually have very small difference

7) 00000000?

8) 00000000?

Link to comment
Share on other sites

  • Replies 438
  • Created
  • Last Reply

I found out how to get nwnnsscomp working without a NWN installation. nwnnsscomp doesn't actually use an NWN files - it just does a crude check to see if you have NWN installed. This is easy to bypass (with a bit of technical knowhow). Here's how:

 

1) Create a new txt file. Paste the following into it:

 

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\BioWare\NWN]
[HKEY_LOCAL_MACHINE\SOFTWARE\BioWare\NWN\Neverwinter]
"Location"="D:\\Games\\Jade Empire"

 

Change the "D:\\Games\\Jade Empire" to whatever your Jade Empire directory is. Make sure each back-slash is doubled as shown above.

 

2) Rename this txt file to install.reg, or any other name that ends with the extension reg. Make sure you uncheck "hide extensions for known file types" in Windows Explorer's Tools->Folder Options->View, or else you'd actually be renaming it to install.reg.txt.

 

3) Right-click this reg file and click Merge. It should ask you have you really want to merge the reg file with the Windows registry - click yes. Then it should inform you that the operation was successful.

 

4) Create a new txt file in your Jade Empire directory called chitin.key. Again, make sure you uncheck "hide extensions for known file types", or else you'd get chitin.key.txt.

 

That's it. nwnnsscomp should now work without requiring a NWN installation. Saved me 1.5gb on my puny laptop HD :)

Link to comment
Share on other sites

I found out how to get nwnnsscomp working without a NWN installation. nwnnsscomp doesn't actually use an NWN files - it just does a crude check to see if you have NWN installed.

(snip)

That's it. nwnnsscomp should now work without requiring a NWN installation. Saved me 1.5gb on my puny laptop HD :)

 

You can also use one of the nwnnsscomp variants adapted for modding Knights of the Old Republic along with the nwscript.nss file from Jade Empire. Works fine to compile JE scripts with as well, from what I've noticed (not had any problems with malfunctioning scripts so far), and does not require any NWN or KOTOR game installations. :)

Link to comment
Share on other sites

Nice goin guys! It's very helpful (the ones I can comprehend that is) but I still got the same problem as wurzelp****(sorry) which is headless pc. I only messed with the 'appearance.2da' and some .rim files up until now anyway and I need a help on a few things.

 

1. I've checked all (If I'm remembering it correctly) the .rim and .mod in /data and I found that only a few names has all extensions required in the same name (the 'h_*'s and 'n_*'s in .mdl, .mdx, and .txb) and DAMN I forgot to note them down (and DAMN I can't even find any .erf files). I think there's got to be something/file that configures or lists which head use which body or vice versa. Can anyone help me on this please?

 

2. I was wondering if it's possible for stoffe's 'tsl patcher' to be used as 'je patcher' instead. Both games uses the same system right?

 

3. If I wanted to create my own pc, then I'm gonna need all those .mdl, .mdx, and .txb pairs (and maybe the answer to my 1st question too) right? I've found the .tga to .txb converter but I can't find anything to edit the .mdl's and .mdx's. I don't know if 3ds Max or Maya (I only know those two) will do but I do know that I don't have enough free space for neither one of them. Any software (though I'd prefer freeware) suggestion?

 

Thanks for noticing a noob.

Link to comment
Share on other sites

Since the data files are so spread out I've made a quick search utility that allows you to search for files with a specified name within all the game's MOD and RIM files. It is listing all matches in a sortable list along with in what MOD/RIM archive they were found. It also has an extraction feature where it can extract the selected files from the search result to a folder on your hard drive.

 

You can use wildcards in a limited way within the filename, for example to search for all files of a specific type ("*.2da" to find all 2DA files), or a match against a sub-pattern of a file name within a specific type ("p_ling*.txb" to find all TXB files with "p_ling" as part of the name, or "p_li*h01.txb" to find all TXB files with names containing "p_li", potentially followed by something else and then followed by "h01").

 

Wildcards do not work within the file extension itself ("*.md*" for example) at the moment, and may sometimes behave in a bit weird way when used in the middle of a filename pattern. Hopefully those bugs should be fixed in the next version when I have the time to do it properly. :)

 

It seems to work from what I've tested, though it's not considered complete yet. As said above the search works in a somewhat peculiar manner currently, which I hope to make more logical in later versions. Future plans include adding support for searching in the KEY/BIF data files as well as the override folder so that all data can be searched.

 

If anyone wants it, you can downoad it from the link in the first post in this thread.

Link to comment
Share on other sites

1. I've checked all (If I'm remembering it correctly) the .rim and .mod in /data and I found that only a few names has all extensions required in the same name (the 'h_*'s and 'n_*'s in .mdl, .mdx, and .txb) and I forgot to note them down. I think there's got to be something/file that configures or lists which head use which body or vice versa. Can anyone help me on this please?

 

Keep in mind that I'm by no means an expert on this since I haven't done much in the way of character substitution so this is mostly guesswork, but from what I have seen it seems like the head is part of the body model, but has a separate texture for most human models.

 

I haven't been able to find any 2DA that sets the name of the texture (except for when you're a spirit), so I'd assume it's either set in the Model files, or uses a naming convention hardcoded in the game engine.

 

The head texture seems to be named the same as the body texture but with a "h" added on (P_Li01 --> P_Lih01) for the player character models. For NPC models it seems to be named the same as the body texture but with a h_ prefix instead of the n_ prefix the body textures tend to have (n_silk01 --> h_silk01).

 

2. I was wondering if it's possible for stoffe's 'tsl patcher' to be used as 'je patcher' instead. Both games uses the same system right?

 

Not in its current form. Some of the data files have different formats in Jade Empire (the dialog.tlk file, some 2DA files, slight changes to the ERF/RIM format etc). A version could be made with those adaptations, if anyone would have any interest in it. Could be a fair bit of work involved making those adaptations though, I'm not sure. Depends on how lazy I was when I made TSLPatcher. :)

 

3. If I wanted to create my own pc, then I'm gonna need all those .mdl, .mdx, and .txb pairs (and maybe the answer to my 1st question too) right? I've found the .tga to .txb converter but I can't find anything to edit the .mdl's and .mdx's.

 

MDL files are model files, MDX are paired with MDL files containing extra model data that has been added on, TXB are compressed textures. MAB files seem to contain material data of some kind.

 

There is currently no MDL/MDX converter that works with Jade Empire. Maian seems to be working on figuring out how some of it works, but it might be too early to tell where that leads.

Link to comment
Share on other sites

I'm interested on "How to make a new technique" guide by stoffe and I wondered:

1. If it's possible for us to make a new weapon/martial arts style move sets

2. If characters or .mdl and .mdx from other Bioware games (say TSL or SWKOTOR1) can be altered in such way that it's usable in JE

 

I'm a noob but if anyone can show me the way then I'll walk the line.

Link to comment
Share on other sites

I'm interested on "How to make a new technique" guide by stoffe and I wondered:

1. If it's possible for us to make a new weapon/martial arts style move sets

2. If characters or .mdl and .mdx from other Bioware games (say TSL or SWKOTOR1) can be altered in such way that it's usable in JE

 

You can add new weapon/martial/support/magic styles that behave differently, but you'll have to re-use the animations the characters play from a pre-existing style since, as mentioned above, there is currently no way of creating new MDL/MDX files that works with Jade Empire.

Link to comment
Share on other sites

Ooh how I wish I could do some programming myself. I feel bad just relying on you guys. Then again, I'll just wait and try to figure out these ccreature.cpp failure message myself I guess. Thanks again guys!

 

 

"Three keys in learning are: creative, prideful, and masochism." -someone I knew-

Link to comment
Share on other sites

Well, I'm not sure if I'm qualified or want to extend MDLOps to support JE mdl/mdx files. As I said before, I'm not a modeler, I don't have modeling software, and I don't really know much about the format that's needed to import into that modeling software. I'm also new to Perl, which MDLOps is programmed in. I think I'll leave that up to someone more qualified.

 

I was only using MDLOps source code to help understand the format of mdl/mdx files. I planned to edit the files by hand, but after seeing how complex the format is and how many values there are which purpose eludes me, I'm not sure I can do that (and it would take a while).

Link to comment
Share on other sites

I'll just wait and try to figure out these ccreature.cpp failure message myself I guess.

 

Have you moved all the relevant model and texture data files into the override folder for the appearance you try to change your player into? The player data in players.mod appear to be always loaded, but many other NPC appearances seem to be stored within the module(s) where a character using that appearance exist. Those resources would not be found if you are in another area unless you put it in the override folder where it can always be found.

 

 

For example, to use the Princess Sun Lian appearance instead of Unmasked Silk Fox for SF from Chapter 4 and onward I had to put the files h_prnces01.txb, n_prnces01.txb, n_prnces_.mdl and n_prnces_.mdx in the override folder for it to work. They were previously found in the a300/City Core module files only.

 

 

* * *

 

A completely unrelated question:

Do anyone know which .GUI file handles the quick key/style mapping display that pops up in the lower left corner of the screen when you enter combat mode?

 

I already know what my keys are mapped to and that big interface element is taking up space needlessly, so I'd like to make it invisible (set the ALPHA field to 0).

 

I seem to have trouble finding which file it is that handles it though. I'm finding pretty much everything else instead when modified some of the files with names that seemed likely. :confused:

 

Edit: Nevermind, I figured it out. Turns out it was one of the files I had checked, though the method I used to make it invisible didn't work since the game apparently already used the Alpha value to hide/unhide it when entering and leaving combat mode. Resizing it did the trick instead. :)

Link to comment
Share on other sites

I've uploaded a minor update to my Jade Empire data file search tool (JEFindRes v0.2.0a), see the first post in this thread for a download link.

 

Version v0.2 has the Txb2Tga converter integrated, allowing it to automatically convert any TXB files it extracts to TGA format if you check a checkbox.

 

This version should also make using wildcard characters (*) in the file name (resref) part of the search string more reliable. It now works like wildcards usually do in a search:

 

No wildcard characters used: Only files whose name exactly matches what you type will be found.

 

No file extension set: Files of any type matching the name you type in will be found.

 

Wildcards at the beginning and/or end of search string: Your search string can be found anywhere within the filename.

 

Wildcards inside the search string: Allow any (or none) characters to exist in that position of the file name and only match the rest of what you type.

 

For example:

Search string  Result
-------------- ----------------------------
p_li01         Files of any type with the name "p_li01".
p_li01.*       Same as above
p_li01.txb     All TXB files with the name "p_li01.txb"
*p_li          Files of any type that ends with "p_li", e.g. "j00_c_app_li.ncs"
*p_li.ncs      All NCS files that ends with "p_li", e.g. "j00_c_app_li.ncs"
p_li*          Files of any type that starts with "p_li", e.g. "p_li01.txb" and "P_Ling_.mdl".
p_li*.txb      TXB files where the name starts with "pi_li", e.g. "p_li01.txb" and "p_lingh01.txb"
*p_li*         Files of any type containing "p_li" somewhere in the name, e.g. "j01p_lion_altar.pla" and "p_li01.txb"
p_li*01        Files of any type starting with "p_li" and ending with "01", e.g. "p_li01.txb", "p_lih01.txb" and "p_lingx01.txb"
p_li*01.txb    Same as above, but only finds TXB files.
p_li*h*01      Files starting with "p_li", followed by anything, then an "h", followed by anything and then ending with "01", e.g. "p_lih01.txb" and "p_lingh01.txb".
*.2da          All files of the 2DA file type, regardless of name
*.*            All files in the game data (might take some time to list, there are [b]many[/b])

Link to comment
Share on other sites

Have you moved all the relevant model and texture data files into the override folder for the appearance you try to change your player into? The player data in players.mod appear to be always loaded, but many other NPC appearances seem to be stored within the module(s) where a character using that appearance exist. Those resources would not be found if you are in another area unless you put it in the override folder where it can always be found.

 

I did but what I'm trying to do is switching Blossom with Crimson Khana. The problem is that there's no mercf sets (the n_*'s and h_*'s) available with the same name (the head was h_mercf01 but the body was n_mercf if I remember correctly). I converted to TGA and renamed it, renamed the TXB, edit the original TGA and put the other TGA part per part above it, but it all failed. Hell I even made "appearance_override.2da" and add "appearance_override" line under JE.ini's [DEBUG] line and of course, it failed and I laughed to myself (I still am, seriously). I can't figure out how to persuade the system to use another head I want (I bought you damnit!!).

 

It's not that bad though. The "Face Off" operation explained on page one can really amuse me anyway. I made some tiger-ish tattoo on (of course) TigerShen and ProdigyLu looks like Monkey King (looks cool with Monkey Paw style) which reminds me, is it possible to make Monkey Paw style able to finish harmonic combo or to choose it from the first time we choose the character? I would've mess with the .2da myself if it weren't for the roof leak which blast my power supply off.

 

 

God has a weird sense of humor. I never get it nor like it.

Link to comment
Share on other sites

I did but what I'm trying to do is switching Blossom with Crimson Khana.

 

Do you want to replace the Blossom player appearance with Crimson Khana, or do you want to make Crimson Khana (the NPC in the arena) use Blossom's appearance? If it's the latter it would be quicker to change the appearance number in the relevant .CRE files to point to Blossom's line in appearance.2da. Open the CRE files with k-gff 1.2 and change the Appearance field (under the Looks struct).

 

If it's the former, the problem seems to be that Crimson Khana's appearance is one where the head and body are set separately (so they can re-use the body model with a variety of different heads). The body used is line 104 in appearance.2da and the head is line 22 in heads.2da.

 

This is problematic since all the standard player models have the head and body as a single model where you can't swap out the head. Thus I don't know how you'd tell the game to use a particular head along with the body for the player appearance, since you only pick an appearance and not a head.

 

 

ProdigyLu looks like Monkey King (looks cool with Monkey Paw style) which reminds me, is it possible to make Monkey Paw style able to finish harmonic combo or to choose it from the first time we choose the character?

 

Open the monkeypawas.2da file and on line 7 (Slam) change the value in the synergyprestate column from **** to 1. This will make the Monkey Paw power attack able to finish a harmonic combo.

 

To make it a starting style open stylesuperlist.2da and on line 22 (C_Monkey_paw) change the value in the StartingStyle column from 0 to 1. This should make the style pickable when creating a new character. You'll most likely need to remove one of the standard styles though (by setting the same column to 0 on its line) to make room for it, since the list of available styles already is full.

Link to comment
Share on other sites

If it's the latter it would be quicker to change the appearance number in the relevant .CRE files to point to Blossom's line in appearance.2da. Open the CRE files with k-gff 1.2 and change the Appearance field (under the Looks struct).

 

Actually, my problem was the former but to hell with that. Until now I thought k-gff deals only with .gff files, I don't know if it deals with .cre too. By the way, which relevant .cre file is it?

Link to comment
Share on other sites

GFF stands for "generic file format" which is basically just a way to arrange the data within the file. Many files in the Bioware/Obsidian games are GFF formatted though they have a variety of extensions. CRE files are one of those types.

 

I didn't add CRE files as a known GFF file type in KGFF (in the File: Open dialog, "GFF Files" filter) because CRE aren't used in KotOR or TSL. You should still be able to choose File: Open and set the filter to All Files or simply associate CRE files to open with KGFF.

Link to comment
Share on other sites

There's also http://gulbsoft.de/doku.php/games/jade/jade. There's a downloadable character mod and some tutorials down there but I don't know how to upload your files there. I think Georg Zwoller (or something, sorry if I'm sucks with names) owns it. He's in a site somewhere around the site links in his site...... yeah that's it.

 

Edit: Stoffe, where did you get that avatar pic? I think it looks like Radiant Jen Zi with a different hair and skin tone AND in 3D. Just curious, really.

Link to comment
Share on other sites

Stoffe, where did you get that avatar pic? I think it looks like Radiant Jen Zi with a different hair and skin tone AND in 3D. Just curious, really.

 

It's a screenshot from the game using a quick re-skin I've made of the Radiant Jen character, which I'm currently playing as:

 

jadereskinradiantge4.th.jpg jenswordfightgf4.th.jpg radiantscholargarden2fp0.th.jpg jenfightmagicuq0.th.jpg

Link to comment
Share on other sites

Which sword is that stoffe?

 

The Demon Sword, which you can find in the first area of the Spirit Realm you arrive in (the "Follow my light" area). If you head in the opposite direction of the blue pillar of light across the battlefield you'll eventually come across a cannon and some bodies. The sword can be looted from one of the bodies.

Link to comment
Share on other sites

I've uploaded another version (0.3a) of the JEFindRes search utility. This version will look inside the KEY/BIF files as well (in addition to the MOD/RIM files like before), along with the override folder for completeness. It can extract resource from all locations it finds them, and convert TXB files to TGA+TXI files when extracting them, if desired.

 

See the first post in this thread for the download link if you're interested. :)

 

 

I put together a minimal readme file with this version as well:

JE - Resource Search utility (v0.3a)

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

 

This simple tool will allow you to search for filenames and filetypes within the game resource of the game Jade Empire by Bioware.

 

The first time you do a search the utility will ask for the location of your Jade Empire game folder. This is the folder where the JadeEmpire.exe file is located. The location will then be saved in a file named "jefindres.ini" in the same folder this utility is located in. If you need to change the installation path of the game you may delete the "jefindres.ini" file to cause the utility to ask for the game folder location again.

 

This utility will look for resources of matching name and type inside the BIF, MOD and RIM files in the data folder, along with the content of the override folder for completeness. Matching resources are listed, and you can choose to extract the resources you select in the result list. The result list can also be sorted by name, filetype and source file/folder by clicking on the respective column headers.

 

When extracting TXB files you can choose to make the utility convert them to TGA+TXI files by checking the checkbox under the Extract button.

 

When searching you may use * as a wildcard character to make partial matches against the name of the resources. This should work like most wildcard searches tend to do elsewhere. Note that partial matches against file type is currently not supported: you'll gave to search for either one file type or all of them matching the specified name. A few examples:

 

Search for: p_li01

Result: Files of any type with the name "p_li01".

 

Search for: p_li01.*

Result: Same as above

 

Search for: p_li01.txb

Result: All TXB files with the name "p_li01.txb"

 

Search for: *p_li

Result: Files of any type that ends with "p_li", e.g. "j00_c_app_li.ncs"

 

Search for: *p_li.ncs

Result: All NCS files that ends with "p_li", e.g. "j00_c_app_li.ncs"

 

Search for: p_li*

Result: Files of any type that starts with "p_li", e.g. "p_li01.txb" and "P_Ling_.mdl".

 

Search for: p_li*.txb

Result: TXB files where the name starts with "pi_li", e.g. "p_li01.txb" and "p_lingh01.txb"

 

Search for: *p_li*

Result: Files of any type containing "p_li" somewhere in the name, e.g. "j01p_lion_altar.pla" and "p_li01.txb"

 

Search for: p_li*01

Result: Files of any type starting with "p_li" and ending with "01", e.g. "p_li01.txb", "p_lih01.txb" and "p_lingx01.txb"

 

Search for: p_li*01.txb

Result: Same as above, but only finds TXB files.

 

Search for: p_li*h*01

Result: Files starting with "p_li", followed by anything, then an "h", followed by anything and then ending with "01", e.g. "p_lih01.txb" and "p_lingh01.txb".

 

Search for: *.2da

Result: All files of the 2DA file type, regardless of name

 

Search for: *.*

Result: All files in the game data (might take some time to list, there are many)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...