The general idea of Lenny’s Mod Loader is to provide an easy way to modify the game. In its current state for RDR 2 it will allow you to replace any file in the game, whether they are streaming files such as models or data files, font files etc. Now will full UI support akin to the GTA V version.
The three screenshots show replaced assets, replaced font and an altered meta file to change the police response in Valentine to Saint Denis police. These are all provided in an example download, see “Examples” further down below for more information.
1.) Copy all files from “ModLoader” into your RDR 2 game root folder so that files such as vfs.asi are in the same folder as your RDR2.exe.
2.) The Mod Manager folder can be anywhere and does not need to be inside the game folder.
3.) New mods go into lml folder or use the button “Download with Mod Manager” on the mod website if it is supported (see installation video for an example).
The biggest new feature in this update is the support for ymt file editing even if the source file contains unknown hashes. In order to replace a file, export the ymt to xml with OpenIV and then either use replacement via install.xml or the replace folder to replace the original file. Since you are replacing the ymt file, make sure that your file also has the ymt extension even though it contains xml. For the replace folder method you also need to match the file name. Now you can edit the file in plaintext and the game will treat it as a ymt with all names fixed up when loading. See the included examples for more information.
If you do end up finding a file where you feel that it is not properly fixed up by LML (for instance when exporting the file directly from OpenIV without any changes breaks the game), please let me know. The only file I know of that will currently cause problems is weapons.ymt, but this is not due to LML but because of an export bug in OpenIV which cuts off certain weapon flags. The High-Roller revolver example has these flags manually restored and hence works fine, but this is not the case when exported directly from OpenIV. I have notified the team and trust that they will fix this export problem in the future. Until then you will have to manually inspect the ymt, gather the flags and restore them manually in the xml for weapons if you plan to use them. Please note that this requires advanced knowledge of game structures.
This download comes with extensive examples courtesy of @Modifiver that modify various aspects of the game. Check them out in the included examples folder and copy them to your lml folder to try them out!
Upgrading from earlier LML versions
This version of Lenny’s Mod Loader introduces install.xml files to instruct LML on how to load your mods. Thus, mods can be separated in folders and no longer require nested folder structures. This is a proven concept from our GTA V version and has now been ported over. You can still use the replace and stream folder under your lml folder. Please note, however, that the Mod Manager UI will only pick up mods that use the new install.xml system so it is recommended to convert your mods to the new system. Only mods using install.xml support Download with Mod Manager. Consult the examples below to learn how to use the new system.
Verify your file got replaced
If you feel that your file is not being replaced properly, have a look at the log file and see if you can find any entry related to it. Perhaps the path was not correct and hence it did not work. Search for “replaced” for files in replace and “adding” for files in stream.
Detailed explanation of stream vs replace (older versions)
In the lml folder you can find two subfolders, one called “replace” and one called “stream”. Both can be used for the same thing but replace is ultimately more powerful, but also more advanced. The stream folder you might recognize from Map Editor or Rampage Trainer and just loads streaming files directly.
As mentioned, similar to other tools available this merely loads streaming files into the game when the game is loading. For instance, model or texture files would go in there and will replace the existing assets in the game. If you do not know the name of an asset, but only its hash, simply name it 0xhash.ext (e.g. 0x9E54B506.ytd for w_melee_machete01+hi.ytd) and it will still be recognized and replace the asset correctly.
This is the most convenient way to quickly replace streaming files as you do not have to worry about where in the game files they are located but only their name.
This folder creates a virtual mapping of the entire game file structure and hence allows you to replace any game file, granted you know its full location. This is similar to the paths you can see in OpenIV when navigating RPFs, but not exactly the same. If you want to change the dispatch.meta file for instance, you will need to modify it in update.rpf, as the one in common.rpf is superseded by that. To do that, you would create the following structure: “replace\update\common\data\dispatch.meta”. This is exactly the path you would use in OpenIV (without the .rpf ending for update). Now, whenever the game wants to access this file, it will load yours instead. It is that simple!
If you want to replace the font file font_lib_efigs.gfx in scaleform_frontend.rpf for instance, you would create the following structure: “replace\update\x64\patch\data\cdimages\scaleform_frontend\font_lib_efigs.gfx”.
Word of caution: File paths do not always match their RPF names unfortunately, hence this is a bit more advanced but also allows greater control. Say you want to replace player_zero_coat_001_open.ydd which is present in both packs_1.rpf (original) and dlc.rpf (from patchpack001, an update to the file). Files DLCs follow a slightly different pathing scheme. The full path to this file would be “replace\dlc_patchPack001\x64\packs\base\models\component_models\player_zero_coat_001_open.ydd”. As you can see, it does not match the file path directly, which is also why for many files using the stream folder is just simpler. This is because the game maps some files differently and when you open the dlc.rpf (in patchpack001) and its setup2.xml you will see why: the device name is dlc_patchPack001 which is the “root” of all files inside this archive. Thus the path starts at “dlc_patchPack001” and then follows the RPF structure until you arrive at “replace\dlc_patchPack001\x64\packs\base\models\component_models\player_zero_coat_001_open.ydd”. Not that complicated, but certainly not as easy as the streaming folder and something to look out for.
Thanks to NTA for his work on fwEvents, hooking, fiDevice and sysAllocator
Thanks to listener for his work on fiDevice and advice over the years (hope you are well!)
Thanks to the OpenIV team for OpenIV
Thanks to dexyfex for CodeWalker
Thanks to Gan Ceann, Will and GameRoll for testing as well as Jewels, GuiCORLEONEx794, jack.sharif and Modifiver for providing example assets
What’s New in Version 0.5.7837.34504
Quite a few changed files, best to replace all (I will also keep the previous version in case any of the changes break existing mods)
Added yld and ydd to streaming files auto detection
Added game version logging
Added support for large string replacements (up to 4kb per string up from 512bytes)
Added settings file (lml.ini) to configure log level and other features
Added experimental ymap support
Added experimental ytyp support
Added support for bk2 files
Improved string parser when dealing with special characters
Improved Mod Manager handling of protected folders (should no longer crash)