I wrote an xEdit script to facilitate ESL conversions, if anyone's interested. It's smart enough (by virtue of xEdit, not my coding prowess) to do most of the work to fix up any plugins depending your converted ESL too, provided they're loaded in xEdit when you run the script.
http://idek.chir.uno/fo4/Compact FormIDs.pas
It's worked on every mod I've tried it with so far except ones with one specific kind of dialog record... I'm not sure why that is, but xEdit will let you know if it fails, so whatever.
The only things to keep in mind before ESLifying something are:
- The plugin cannot have more than 2047 new records; I think any number of overrides are okay though.
- Your ESLs typically always load after your ESMs but before your ESPs; this behavior is forced by the game engine, and cannot be overriden by changing your load order.
- If you ESLify a mod that depends on an ESP, it will forcibly cause the ESP to load just before your ESL, regardless of what your Plugins.txt says
- If you convert someone else's mod using this script, you're probably going to be stuck with that version of the mod for the rest of the playthrough, since running the script on different versions of the same ESP will almost certainly not play nicely with your saves.
Assuming you're okay with all of that, here's how to use it:
- Download the script I linked above and put it in the "Edit Scripts" folder in your xEdit directory (while we're at it, make sure you have the latest version of xEdit from the GitHub)
- Load up xEdit, including your entire load order (do NOT shift-click the OK button, it's critical that xEdit is allowed to build reference info for this process)
- Find the mod you want to convert. Right click it -> Check for Errors, make sure xEdit isn't complaining about the plugin
- Right click it again -> Apply Script... -> Compact FormIDs
- Your mod's now most of the way to being an ESL. Check for errors again and be sure that no new errors have come up; if any have, something about the script failed and you'll have to abort (make sure that you untick any changed plugins in the save dialog since, clicking the X is the same as OK)
- You're going to need to set the ESL flag on the ESP. Expand the plugin, go into the File Header, right click -> Edit on Record Flags and tick "ESL"
- If any plugins had a dependency on your ESP, they'll be bolded in the left column since xEdit has edited them too. You're going to need to go into each one, go into File Header again, then find the name of the plugin that you're editing and change the extension from esp to esl.
- Save in xEdit; if you're being prompted to save any plugins other than the one you're converting, make sure you followed the previous step on all of them
- Find the saved plugin file and change the extension from *.esp to *.esl
It's a bit of a hassle, but I find it's still faster and more reliable than trying to use the CK, especially if any of your other mods are dependent on the ESP you're converting. It's also not an arcane "black box" like the CK's same function, where it doesn't tell you exactly what it's doing to your plugin. I remember, when I used it on my logistics station mod, the CK renamed and moved
every single script I had written for the mod up to that point... those aren't even part of the plugin file, and it took me like 2 hours to fix everything back up, so I've distrusted the feature ever since.
I mostly wrote the script because I wanted to automate an annoying process I had been doing by hand, whereby every time I added any new form to any of my mods that I've released as ESLs, I would need to save the plugin, open it in xEdit and renumber each form ID individually, by hand, to fit between 0x800 and 0xFFF. This allows me to just load it in xEdit, run the script on it, then reload it in the CK, and I'm not likely to make any stupid mistakes doing it manually. The script ought to work just as well for doing the initial conversion too, however, so I figured I'd share it
somewhere.