Modified Gibbed’s Tools
FOR SKY FORTRESS & MECH LAND ASSAULT MODS: SEE HERE.
UPDATED 12/04/2016: See the changelog and the forum thread (I will keep it updated with changes).
NOW WITH A GITHUB REPOSITORY ! (AND EVEN MORE CAPS THINGS AT THE TOP OF THE DESCRIPTION)
NEW: A search tool appeared, please read the corresponding forum topic on how to use it.
NOTE: Those are not the originals tools as made by Rick Gibbed. They have been quite heavily modified. For further information about this, read the LICENSE.txt and README.txt files in the archive.
NOTE: If your mod somehow doesn't work, even with those tools, please make sure there's no file with the same name in the patch folder. If the file that make the game crash is an ADF file, you're left with the "good ol´ way": your best friend and worst beloved enemy: the "hex-editor-of-your-choice".
--- --- ---
Rick Gibbed originally wrote a set of modding tools for JC3, but with some of the recent updates the mods created with it were... broken. I don't know why they've made that change, but it will most probably be to speed-up the loading and fix some crashes. The Rick Gibbed tools produced files that would have an incorrect format and somehow -- luck ? -- the old JC3 loader would load them. (There's also some files in the new patch that replace old ones but that's something else).
That's for the story.
--- --- ---
Changes include an ADF serializer. This format is a pain in the *ss when you have to open you hex editor and change things. For most of the ADF files (.*tunec, .onlinec, ...) the conversion to and from the xml file should work. If there's a problem, read the second NOTE. If there's still a problem... Please contact me with the path of the file that caused the problem. I'll try to fix the problem if it's something that can be fixed. (the adf format is mostly a memory dump and one missing byte could crash the whole game, but that makes harder to recreate the correct file from a xml one).
In the XML file generated by ConvertAdf, you'll find a tag -- that can be quite big -- that looks like this:
<type-definitions WARNING="DO NOT TOUCH THAT FUCKING THING">.
Please skip that part of the file until you see something like:
<instances NOTE="HERE YOU CAN TOUCH, BUT BE GENTLE">
I will not go in the abyssal depths of the ADF format, but touching -- or even looking at -- the content of the type-definitions tag will most likely break everything. Another important thing: do not touch attributes.
The attribute offset-in-file="..." is the hexadecimal offset of the value in the in the case the serializer would give incorrect results and you have to edit the file with your bare hands.
For advanced modders (when you want to add contents to an ADF file, not simply change some values) :
- If you're modifying a string and that string tag's has a reference-string-from attribute, the value of that attribute is the id of the element that contains the actual string, so you'll have to change both.
- First order <member> must have an ID. If you plan to add an array, you have to search for the greatest ID (they may not be in the correct order), add one and voilà, you've got you're new ID. Make sure that you've copied the array from an existing one, else you'll have to recreate all it attributes from what is contained in the <type-definitions> tags and you're more likely to break things.
- Arrays are typed. Please use the correct one.
- InlineArrays are evils. Please don't mess with them. Please.
- You can add new elements / remove elements to/from any Array elements. (but NOT InlineArrays)
- <member name="Ints" gbltype="Array" is-reference="yay" id="3" type-hash="..." type="A[VariableInt]" /> is a reference the array with the id 3.
- A reference tag with is-reference="yay" id="-1" is a tag with a null reference.
As a last note, some files with InlineArrays may ignore their values or give incorrect result even if they appears to be correct in the XML file. I'm not very sure of that, but this may appears and if it appears, I can't fix the ADF serializer (but for the sake of curiosity, please tell me which file caused that). If that's the case, the problem must also appear if you immediately serialize/deserialize the file, without touching it. If not, you've probably screwed something in your changes.
For everything else, TRY, FAIL, REPEAT.
I didn't know that was a song from Walls of Jericho. Great. Now you know it too. But that's metal, and it is known that metal kills peoples: guns, knifes, and even nukes are made out of metal. So don't listen. No. This Will Destroy You.
Oh god, that's also a group. If you find any typos, I'm
not englishfrnehc, please correct them !
Nothing to install here. Simply extract the archive somewhere and it's all good !
- Fix ConvertProperty
- Improve a lot GenerateNameList
- Add QueryHashList
- New Patch/DLC support (file list, string list, DLCPacker, ...)
- HUGE speed improvement
- GenerateNameList now only takes 30minutes max on HDD
- ConvertStringLookup is now instant, even on HUGE files
- HUGE speed improvement
- Improve ConvertTexture to handle hmddsc files (see the forum thread in tutorials)
- Add ConvertStringLookup (see the forum thread in tutorials)
- Add a Batch executable to batch conversions (to and from XML, DDS, ...)
- Add a RecurveBatchAndPack executable to batch XML conversion and Pack the folder into a AAF archive
- Fix ConvertTexture being too permissive.
- Add to Pack the ability to detect filetypes. (it already was there, no wasn't so much working).
- Make ConvertTexture import/export at least most of the textures.
- 03/04/2016-2 Release (codename: "canard-fortress")
- Add the Pack executable that creates .arc and .tab files from game[0-9]+_unpack (the reverse of Unpack)
- Add the SkyFortressPacker executable to handle a dropzone_sky_fortress folder
- It creates a backup if something already exists (that way it can prevent stupid errors)
- But please backup your sky fortress files. Never too sure.
- 03/04/2016 Release (still named "canard"):
- Fix the generated.namelist monstrous size while having 16% of completeness
- Add the generated.hashlist for an easy filter of the namelists (I hours generating this list). It contains all the hash ever used in JC3 RTPC files (including patch and DLC).
- Fix and improve GenerateNameList
- It now generates and uses generated.hashlist
- It has now a more reliable way to generate strings
- 02/04/2016 Release (still named "canard"):
- ADF Files:
- Add offset-in-file attribute in generated XML
- Fix a small bug
- RTPC Files (properties):
- Found a way to have some strings in the place of hashes. So now you will have names in the RTPC files ! (the originals tools allowed this, but didn't have any string DB). It doesn't works for all the strings, some are still unknown, but for at least 25%. That's better than nothing !
- Spent a few hours running a shell script and a program extracting strings from all over the game (It has mostly extracted pure crap -- more than 60% -- but still, this gives some quite good results !). I should filter it through all RTPC files again, but that will take something like an eternity...
- Added the GenerateNameList.exe program that you shouldn't touch (if you remove the generated.namelist file, it will re-parse the whole game ! (taking a most 5Gb of space on your drive, but for hours)).
- Change the archive format to 7z (because of the dramatical size of the archive)
- ADF Files:
- Initial Release (codename "canard"):
- Fix ConvertProperty (if checksums are not the same, that's because Avalanche pads with 'P' whereas I pad with '')
- Fix SmallPack
- Add the ability to SmallPack to create compressed files
- Add the missing ADF serializer in ConvertAdf
- As the ConvertAdf is now working, remove ConvertItem, ConvertUpgrade and ConvertTask