|
Post by JRavens on Jun 25, 2016 15:33:23 GMT
Hi guys, This is for Fino, Predaaator or any other modders who are looking for clean copies of the latest FC4 files from the official patch. Will attach them to this thread and detail their file paths and what they are for. These typically need to be converted using Gibbed.Dunia2.ConvertXml.exe from the Gibbed Dunia2 tool set. (Occasionally some may require the convert binary object tool instead Gibbed.Dunia2.ConvertBinaryObject.exe typically I have found .FCB require this, while .RML files require the Convert XML tool) FILES so far: "CEF" file aka "NomadObjects"Link: CEF2050C2780F74C.fcb (828.93 KB) Path: patch_hd\__UNKNOWN\game\CEF2050C2780F74C.fcb Use: Controls a LARGE amount of settings such as skills, mission rewards, craft item capacities, and a slew of other things. A large and fairly unreadable file which requries a lot of tinkering. Some setting adjustments can be found in other modding threads here. Tutorial: There is no one specific tutorial for this file (because it is so freaking big and NONE of it is human readable - it's all binhex crap), but I will link relevant tutorials that mess with different bits of it here. * How to change the out of bounds timer farcrymods.freeforums.net/thread/63/modding-108-change-bounds-timer* How to change the XP and Karma levels farcrymods.freeforums.net/thread/169/modding-109-change-karma-levels* How to change skills [ Tutorial NOT created yet ] "Cost Multiplier File"Link: BF774EC796CA7319.maybe.rml (4.33 KB) Path: patch_hd\__UNKNOWN\misc\BF774EC796CA7319.maybe.rml Use: This readable XML file sets buy and sell multipliers for various item types according to difficulty level. So for example you could make all weapons cost x3 as much or make selling skins worth .5 (half) as much. You can set them for all difficulty levels or just certain ones. Tutorial: farcrymods.freeforums.net/thread/9/modding-105-changing-prices"CDC" aka "Shop File"
Link: CDCB723F8C565609.maybe.rml (836.81 KB) Path: patch_hd\__UNKNOWN\misc\CDCB723F8C565609.maybe.rml Use: This is a human readable XML file that handles the pricing, etc of items bought and sold in the shop on an individual basis. Each item whether it's a weapon, accessory, loot, plant, skin or whatever has a separate entry. Tutorial: farcrymods.freeforums.net/thread/20/modding-106-mod-shop-file
|
|
|
Post by Valky on Jun 25, 2016 16:22:13 GMT
Nice! Thank you, i will go through it
|
|
|
Post by predaaator on Jun 25, 2016 17:20:44 GMT
Thx my friend, this is very important I will take a look.
|
|
|
Post by pj on Jun 25, 2016 22:08:48 GMT
Hi guys: following your your adventure trail through the forum here, I came across JR's post above, and it reminded me that he had been the guy who had taught me (fairly successfully) about modding the Far Cry 4 game, and he mentions the last file I was involved with - that great big (351218 lines) CEF-blah-blah.fcb. RazorF had done some small amount of work in converting the file, and JR had picked up on that: We chatted about it, him giving me lots of information, tips and advice, and so, being retired I started on the attempt to unravel it a bit further. I didn't finish it by any standards, but did get (down to the 71000 th line) mostly all converted, with other lines and most section (text) headers all the way down to the bottom. The file is here, on my Dropbox, and you are welcome to use it as you wish, and if you want - finish it off completely! It's not too professional - I'm sure you and/or others - especially RazorF. could do a better job! But it does work, and I hope you can use it (and maybe finish it too!..) www.dropbox.com/s/ijptx583eoraxjb/CEF2050C2780F74C.binaryobjectfile.zip?dl=0Just unzip it into your Dunia2 (179 build 115) folder - (drive) \Dunia2_179\bin\projects\Far Cry 4\binary objects\files\ ...and use it exactly in the way the other Drag ;'n' Drop files work - drag the CEF file across to the Gibbed.Dunia2.ConvertBinaryObject.exe, and an .xml will be produced. Along with that I used a small data type conversion "helper" note, (so I didn't need to use Razor'converter every time):- 06000000 Int32 0000C841 BC74133C B81E453F Float32 0000803F 0AD7233C 7B14AE3E Float32 CDCC0C40 Float32 CDCC4C3F Float32 5374696D7300 String 50703F57 Uint32 78797A00 6D792380 1106D1DE 9A99993F 5DA423FF 9C9FC5DF BC74133C Float32? Int32 AD3DFB4DE7060000 Uint64 TextPad Search / Replace type="BinHex">\([0-9]*\)</field> type="BinHex">\([0-9]+[A-Za-z]*\)</field> type="BinHex">\([A-Za-z]*\)</field> type="BinHex">\([0-9]+[A-Za-z]*\)</field> type="BinHex">\([0-9]+[A-Z]+[0-9]*\)</field> type="UInt64">\([0-9]*\)</field> FCB files all have the first 4 bytes "nbCF" Hope you can use it! My thanks to JR. All the Best, pj
|
|
|
Post by Valky on Jul 9, 2016 0:59:04 GMT
Heya I dont know if someone can use it, but... Here i have the *.game.xml and the *_depload.xml for all dlc - plus some *.ark.xml i could find: Click here...For usage, create a folder like this example: MOD_FOLDER\generated\worlds\dlc_d90_dlc -or- MOD_FOLDER\worlds\dlc_pvp_waterfront>> Please do not upload those files to any other site, thanks
|
|
|
Post by JRavens on Jul 10, 2016 14:45:30 GMT
Heya I dont know if someone can use it, but... Here i have the *.game.xml and the *_depload.xml for all dlc - plus some *.ark.xml i could find: Click here...For usage, create a folder like this example: MOD_FOLDER\worlds\dlc_d90_dlc -or- MOD_FOLDER\worlds\dlc_pvp_waterfront>> Please do not upload those files to any other site, thanks Thanks for this Fino! I have found a main game one in: \generated\worlds\fcc_main\fcc_main.game.xml but unfortunately this one is unreadable (encrypted?) and none of the tools convert it If you would be willing to share any filepaths you have uncovered with me I will add them to my master list and upload it here for you and evryone. This list decodes many (over 100,000+) of FC4's files but there are still many I could not find so any additions would be very helpful.
|
|
|
Post by Valky on Jul 10, 2016 15:13:54 GMT
Sure, i will share mostly everything other people can use and they are asking for. But, what you mean with file path i have uncovered? Sorry, i dont know what you mean You mentioned a master list which decodes way more stuff. What's that? Custom project definitions for the gibbed tool?
|
|
|
Post by JRavens on Jul 10, 2016 17:30:33 GMT
>But, what you mean with file path i have uncovered?
For example if you found these files: \worlds\dlc_pvp_waterfront\dlc_pvp_waterfront_depload.dat \worlds\dlc_pvp_waterfront\dlc_pvp_waterfront_depload.xml
(actually is that path right because they don't seem to extract from DLC60 to there...)
>What's that? Custom project definitions for the gibbed tool? Yes. Basically a HUGE 300,000+ line file I have added to over the last 2 years as I grep and guess at file names. Many of the lines don't work (only about 1/3 work) and you cannot use it with any other file definitions - you have to use it instead of Razor's or anyone else but it includes all of those files in it anyway.
The problem is there are still many important files it doesn't include the path for AND it does not convert binhex (converting binhex is handled by different files - this just tells what the file paths are)
|
|
|
Post by Valky on Jul 10, 2016 18:37:32 GMT
Ahh ok now i got it, thanks i had a look again for the paths, and the one i told was false -sorry! The correct ones are: DLC-30:generated\worlds\fcc_dlc30\ generated\worlds\fcc_dlc30\levels\ generated\worlds\fcc_dlc30\levels\#MAP#\ generated\worlds\fcc_dlc30\levels\#MAP#\vistas\ DLC-60:generated\worlds\dlc_pvp_reeducation\ generated\worlds\dlc_pvp_reeducation\levels\ generated\worlds\dlc_pvp_reeducation\levels\#MAP#\ generated\worlds\dlc_pvp_steelhead\ generated\worlds\dlc_pvp_steelhead\levels\ generated\worlds\dlc_pvp_steelhead\levels\#MAP#\ generated\worlds\dlc_pvp_training\ generated\worlds\dlc_pvp_training\levels\ generated\worlds\dlc_pvp_training\levels\#MAP#\ generated\worlds\dlc_pvp_waterfront\ generated\worlds\dlc_pvp_waterfront\levels\ generated\worlds\dlc_pvp_waterfront\levels\#MAP#\ DLC-90:generated\worlds\fcc_d90_dlc\ generated\worlds\fcc_d90_dlc\levels\ generated\worlds\fcc_d90_dlc\levels\#MAP#\vistas\ >> NOTE : DLC-60 will take the vistas from generated\worlds\fcc_main\levels\#MAP#\vistas\
#MAP# Names for the complete folder paths above: DLC-30:f7, h4, g4, h7, i6, g7, i9, f6, h3, j9, h6, i5, g6, i8, f5, f8, j8, h5, i4, g5, h8, i7, g8 DLC-60:f6_reed, g6_reed, f5_reed, g5_reed, f3_steel, f4_steel, f7_training, g7_training, e4_waterfront, d4_waterfront, e5_waterfront, d5_waterfront DLC-90:a2, b1, c0, c3, a1, b0, b3, c2, a0, a3, b2, c1
EDIT: Can you use anything else? I dont know how i could help you out with that How could i help you in the case to decrypt the files? Did you saw the new post here yet?
|
|
|
Post by Steve64b on Jul 20, 2016 10:36:26 GMT
Along with that I used a small data type conversion "helper" note, (so I didn't need to use Razor'converter every time):- Sorry for going a bit offtopic, but I'm rather new to FC4 modding and am trying to make sense of all this. Please correct me if I'm wrong; as I understand this correctly, to turn the xml into a humanly readable format, we need to: - Determine the actual value of the binary object (BinHex), and its corresponding datatype. Your fragment has part of this mapping.
- Decode the CRC32 'type' attribute to get a humanly readable Name attribute.
So, to create a hybrid XML document, one could perform the following Regular Expression replaces in Notepad++ (according to your 'helper' note): change
hash="(.+)" type="BinHex">(06000000)</field>
to
name="DECODE_CRC32(\1)" type="Int32">BINHEX_TO_Int32\(\2)</field>
change
hash="(.+)" type="BinHex">(0000C841|BC74133C|B81E453F|0000803F|0AD7233C|7B14AE3E|CDCC0C40|CDCC4C3F)</field>
to
name="DECODE_CRC32(\1)" type="Float32">BINHEX_TO_Float32\(\2)</field>
change
hash="(.+)" type="BinHex">(5374696D7300)</field>
to
name="DECODE_CRC32(\1)" type="String">BINHEX_TO_String\(\2)</field>
change
hash="(.+)" type="BinHex">(50703F57|78797A00|6D792380|1106D1DE|9A99993F|5DA423FF|9C9FC5DF)</field>
to
name="DECODE_CRC32(\1)" type="Int32">BINHEX_TO_UInt32\(\2)</field>
change
hash="(.+)" type="BinHex">(AD3DFB4DE7060000)</field>
to
name="DECODE_CRC32(\1)" type="UInt64">BINHEX_TO_UInt64\(\2)</field>
// unsure about these:
change
hash="(.+)" type="BinHex">(BC74133C)</field>
to
name="DECODE_CRC32(\1)" type="Float32_or_UInt32">BINHEX_TO_Float32_or_UInt32\(\2)</field>
And, by that logic, perhaps:
change
<object hash="(.+)">
to
<object name="DECODE_CRC32(\1)">
change
hash="(.+)" type="BinHex">(00|01)</field>
to
name="DECODE_CRC32(\1)" type="String_or_Boolean">BINHEX_TO_STRING_or_Boolean\(\2)</field>
?
Then, we need to perform the BINHEX_TO_* functions, as well as the DECODE_CRC32 functions. My questions: - How to determine which datatype+value a BinHex converts to? I'm assuming a BinHex of "00000000" can translate to either '' (empty String), a '0' (Int32) or a 'False' (Boolean)? Likewise, your mapping of "78797A00" to Uint32 results in '8026488', while a String value for that would have been 'xyz' (hey Fino, perhaps that value relates to which axes an object can be rotated over? Perhaps trees have only 'z', BinHex value 7A ).
- Since CRC32 is one-way, I wonder how people are able to 'bruteforce' the CRC32? Is it just by cleverly guessing and trial & error? And is there a repository of all uncovered Far Cry-related CRC32 values?
|
|
|
Post by Valky on Jul 20, 2016 13:13:21 GMT
Likewise, your mapping of "78797A00" to Uint32 results in '8026488', while a String value for that would have been 'xyz' (hey Fino, perhaps that value relates to which axes an object can be rotated over? Perhaps trees have only 'z', BinHex value 7A ). Thanks for this, will have look for it Since CRC32 is one-way, I wonder how people are able to 'bruteforce' the CRC32? Is it just by cleverly guessing and trial & error? And is there a repository of all uncovered Far Cry-related CRC32 values? For my bruteforce method i am using some normal word dictionaries and a list with all decrypted entries from FC2, FC3 and FC4. >> If you are searching for already decrypted and readable values from FC2 and FC3, just have a look into they're project definition files for gibbed tools. EDIT: short python script (placed in same directory of gibbed's tools) for getting values from an existant file and write it into a new file called new.txt: # # READ'n'WRITE #
# Open first file file_known = open("projects/Far Cry 4/binary objects/classes/CAnimationComponent.binaryclass.xml","r") file_readed_01 = file_known.read() file_known.close()
# Open second file file_known = open("projects/Far Cry 4/binary objects/classes/CCameraBoneComponent.binaryclass.xml","r") file_readed_02 = file_known.read() file_known.close()
# Write everything into new.txt file_new = open("projects/new.txt","w") file_new.write(file_readed_01 + "\n") file_new.write(file_readed_02 + "\n") file_new.close()
# Close script exit - This script is for adding the whole content of one file into a new one - Just add... # Open X file file_known = open("projects/Far Cry 4/path/to/file.xml","r") file_readed_0X = file_known.read() file_known.close() - ..then add.. file_new.write(file_readed_0X + "\n") - ...for getting more files at once. NOTE: # = Comment "r" = open for read "w" = open for write "\n" = new line >>> Now you can use "new.txt" for bruteforce or other methods EDIT2: A bit better code, with exact the same effect but the code above is easier to understand # Open first file with open("projects/Far Cry 4/binary objects/classes/CAnimationComponent.binaryclass.xml", "r") as file_r: file_r_01 = file_r.read()
# Open second file with open("projects/Far Cry 4/binary objects/classes/CCameraBoneComponent.binaryclass.xml", "r") as file_r: file_r_02 = file_r.read()
# Get all values at once values = (file_r_01 + "\n" + file_r_02 + "\n")
# Write everything into new.txt with open("projects/new.txt", "w") as file_w: file_w.write(values)
# Close script exit
|
|
|
Post by Steve64b on Jul 27, 2016 20:26:42 GMT
RazorF had done some small amount of work in converting the file, and JR had picked up on that: We chatted about it, him giving me lots of information, tips and advice, and so, being retired I started on the attempt to unravel it a bit further. I didn't finish it by any standards, but did get (down to the 71000 th line) mostly all converted, with other lines and most section (text) headers all the way down to the bottom. The file is here, on my Dropbox, and you are welcome to use it as you wish, and if you want - finish it off completely! It's not too professional - I'm sure you and/or others - especially RazorF. could do a better job! But it does work, and I hope you can use it (and maybe finish it too!..) www.dropbox.com/s/ijptx583eoraxjb/CEF2050C2780F74C.binaryobjectfile.zip?dl=0Just unzip it into your Dunia2 (179 build 115) folder - (drive) \Dunia2_179\bin\projects\Far Cry 4\binary objects\files\ Thanks for the CEF2050C2780F74C.binaryobjectfile.xml. I noticed that my definition script dabble at steve64.eu5.org/fc4-xml.php further translates some more of its hashes to names/values. I also noticed some discrepancies in some datatypes, floats being recorded as Int32. Perhaps it's a good idea to work towards centralizing our findings in a more structured manner? Towards this end, I'm planning on changing my scripts to a somewhat more interactive nature, allowing any modder to lookup and/or submit their findings. Perhaps that'll allow for some more structure in uncovering the structure of the game.
|
|
|
Post by pj on Jul 27, 2016 20:51:01 GMT
Thanks, Steve - I'm glad you could make some sense of it - better than I could too! I get stuck on writing DOS bat files..... You have a great app there,and some obvious skills that I wish I possessed. I like too, your tongue-in-cheek "may still add value" description of your "dabble". pj
|
|
|
Post by Steve64b on Aug 1, 2016 13:13:09 GMT
>What's that? Custom project definitions for the gibbed tool? Yes. Basically a HUGE 300,000+ line file I have added to over the last 2 years as I grep and guess at file names. Many of the lines don't work (only about 1/3 work) and you cannot use it with any other file definitions - you have to use it instead of Razor's or anyone else but it includes all of those files in it anyway. The problem is there are still many important files it doesn't include the path for AND it does not convert binhex (converting binhex is handled by different files - this just tells what the file paths are) I would be pretty interested in those lines. I made a small update to my tool at steve64.eu5.org/fc4-xml.php to allow better format conversion, notices whenever something may be off (i.e. UInt probably being Ints instead), as well as the option to download the internal hashtable/datatype mapping in CSV format. Perhaps your filenames are yet some other piece of the puzzle.
|
|
|
Post by JRavens on Aug 2, 2016 17:38:36 GMT
I would be pretty interested in those lines. I made a small update to my tool at steve64.eu5.org/fc4-xml.php to allow better format conversion, notices whenever something may be off (i.e. UInt probably being Ints instead), as well as the option to download the internal hashtable/datatype mapping in CSV format. Perhaps your filenames are yet some other piece of the puzzle. Sent your way via pm Steve! Hope it is of some help
|
|