View Single Post in: Tutorial - How to Change Career Names/Job descriptions! - OUTDATED

Test Subject
#22 Old 14th Sep 2009 at 2:40 PM
Quote: Originally posted by Kolipoki
Would any mods that use this tutorial conflict with each other?


(for those like me who are scouring old threads for information)

Yes, I expect that mods created using this tutorial would conflict with each other. This tutorial advocates overwriting the entire string table. A better way has since been found.

In order to overwrite only select portions of the string table, you must create a NEW STBL. (I use S3PE, personally, and go to Resource > Add)

For type, of course, use the standard STBL value: 0x220557DA

For group, again, use the standard: 0x00000000

Instance is where the magic happens. You must create a new, unique instance for your STBL. I highly recommend using random characters where possible, in order to minimize the chances of another modder choosing the same instance (in which case your mods would conflict). The instance you choose, however, must follow a particular template.

We know that the US_ENG STBL in DeltaBuild0.package (as of the 1.3 patch or so, we use DeltaBuild0, not FullBuild0!) has instance 0x000F16B00BA8342F. Let me break that apart for you.

The first byte, 0x00, is the language code. 0x00 means ENG_US. (Google can find you a list of all language codes if you need it, or you can check the first two characters of the desired language's instance in any package file. Note that the '0x' does NOT count as the first two characters. It is merely used by programmer types to indicate that what follows is a hexadecimal number.)

The next three bytes, 0x0F16B0, are random (as far as we know now). You should change these three bytes to a new random value in order to minimize conflicts. (Remember, a byte is a two-character hex number. Meaning you can only use the digits 0-9 and the letters A-F.)

The last four bytes, 0x0BA8342F, indicate the priority. The lower the number represented by these four bytes, the higher your priority. So if you are trying to override strings in the default table, you must choose these four bytes to be LOWER than 0x0BA8342F. (If you don't speak hex, just make sure that the first digit is 0 and the next is a number 0-9. The rest, of course, should be randomly chosen 0-9 or A-F.)

So a few examples of random, valid instances for US_ENG STBLs:
0x0016AE7B06B358E6
0x00B57E0901BE6A78
0x0038A5B30937C8DD

Notice that the first, second, and ninth digit are always zero. The tenth digit is always a number, not a letter. (Although those of you who understand hex will see that it could be an A, or even a B in some cases.) The rest of the characters can be any number or any letter A-F. G-Z are never, ever used in hexadecimal.

I think it goes without saying that you should probably avoid using one of my three examples verbatim.

In this new STBL, include ONLY the strings that you wish to overwrite. You will use the same keys found in the old STBL (as in this tutorial), and whatever string you wish to overwrite it with. Adding new strings is of course possible as well, but that is outside the scope of this tutorial.

(hope that was painfully clear enough)