ESLisation

De La Confrérie des Traducteurs

Dans Skyrim Special Edition et Fallout 4, l'ordre de chargement (load order) n'autorise que 256 entrées pour les plugins des ESP et ESM, ce qui peut très vite être atteint suivant vos ambitions de modding.

L'ordre de chargement des ESL/ESPFE, lui, permet d'atteindre les 4096 plugins. La plupart des moddeurs fournissent leurs mods directement en ESL/ESPFE, mais il peut arriver que ce ne soit pas le cas et que vous deviez le faire vous-même : ce tutoriel vous apprend comment vous y prendre.

Qu'est-ce qu'un ESL ?

Les ESL sont des plugins utilisant l'index (deux premiers caractères) FE de l'ordre de chargement et disposant d'un flag ESL dans leur header (d'où leur nom parfois de plugins flaggés ESL).

  • Les ESL ont pour extension ESL (logique) et sont chargés après les ESM. Ils ne peuvent pas être placés après un ESP.
  • Les ESPFE ont pour extension ESP et se placent exactement comme les ESP normaux.
  • Les ESM peuvent également être flaggés ESL et gardent leur place en tête.

L'objectif sera donc de convertir des ESP en ESPFE, sans changer leur extension, ce qui ne changera rien à leur placement.

Que convertir ?

Tout d'abord, notez que tous les plugins ne sont pas ELSisables : il y a une limitation de 4096 FormIDs (records) par mod depuis la version 1.6.1130 du jeu (le double d'avant). Les plus gros mods (quêtes, mondes) ne pourront donc pas être ESLisés.

Pour détecter les plugins qui peuvent être ESLisés, vous pouvez utiliser un script fourni dans xEdit : lancez-le via MO2, chargez tous vos plugins, faites un clic droit dans la colonne de gauche et choisissez Apply Script. Dans le menu déroulant, choisissez Find plugins which can be converted to ESL puis cliquez sur OK. Le programme va alors scanner tous les plugins chargés et sortir dans l'onglet Messages une liste des plugins pouvant être convertis

Vous aurez alors trois types de message possible sous le nom des plugins correspondant à trois cas de figure.

Cas n° 1 : ESLisation sans compactage

Can be turned into ESL by adding ESL flag in TES4 header Ces mods peuvent être ESLisés en priorité : ils ne nécessitent pas de compactage des FormIDs et il n'y a rien d'autre à faire qu'ajouter le flag ESL (voir partie suivante). Il peut s'agir des plugins vides (signalant au jeu de charger les archives BSA ou les scripts associés) indiqués par une icône d'œil barré dans LOOT et dans MO2 où les plugins eux-mêmes sont barrés, ou de plugins ne contenant que des FormIDs vanilla (essentiellement des ajustements et des patches). L'ESLisation est 100 % sûre avec ces plugins !

Cas n° 2 : ESLisation avec compactage

Can be turned into ESL by compacting FormIDs first, then adding ESL flag in TES4 header


In regards to compacting Form ID's, there are some things you need to consider first. When you compact the Form ID's of a mod, some patches or plugins that you install later that relies on that mod may no longer be able to recognize it due to its Form ID's having been changed. Any time you change the Form ID's of a mod, you need to have ALL plugins that call it master present and enabled in xEdit. Never use the CK to compact or renumber Form ID's, because the Creation Kit doesn't take into account the changes that also need to be made to said plugins patches. This is why, even when the SCRIPT that we will be using tells you to use the Creation Kit, ignore that.

To summarize, if you compact the Form ID's of a plugin, you need to have its patches enabled in xEdit as well. And, due to this, if you ever install a mod later on down the road that patches or relies on any mods that you've already compacted, you will need to reinstall the original uncompacted mod to bring it back to its original state (reinstating its original Form IDs) so that the new patches or plugins will function properly along with it. After you've enabled the new patches and plugins, then you can compact the Form ID's of the original once again, bringing all of the new patches and plugins into the fold, so to speak.

Compacting Form ID's will break mods that have assets that rely on the original uncompacted Form ID. Non-exhaustive Examples:

  • Facegen data (meshes & textures) for NPCs that have their formID changed will have to be renamed accordingly otherwise the dark face bug will occur.
  • .seq files need to be regenerated if the linked quest's formID was changed, otherwise the dialogue bug (dialogue missing until first reload) will appear again.
  • Scripts that use GetFormFromFile with a formID that was changed will have to be updated with the new formID and recompiled, otherwise they will break.

What this means is, do not compact the Form ID's of mods that have generated facegendata, scripts, or .seq (dialogue) files. This would be mods like followers, DLC's, quests, animation mods, NPC overhaul mods, etc. Just use your brain and delve into your mods to see what they consist of before compacting.


Sans fichiers dépendant des FormIDs

Avec fichiers dépendant des FormIDs

ESLisation déconseillée

Can be turned into ESL by compacting FormIDs first, then adding ESL flag in TES4 header

Warning: Plugin has new CELL(s) which won't work when turned into ESL and overridden by other mods due to the game bug

Comment convertir ?

Ne convertissez pas vos plugins en cours de partie. Regénérez votre Bashed Patch une fois que le travail est terminé.
  • Ouvrez xEdit.
  • Chargez le plugin que vous souhaitez convertir.
  • Une fois que le chargement est terminé, faites un clic droit sur le plugin et sélectionnez Compact FormIDs for ESL.
    • Si vous avez le message Nothing to do, c'est le cas n° 1.
    • Si vous avez un message indiquant le nombre de records à compacter, c'est le cas n° 2.
  • Sélectionnez le plugin, puis clic droit dans la partie Record Flags > Edit > ESL.
  • Cliquez sur OK, enregistrez et quittez.

Conversion avec compactage

Si vous avez l'avertissement avec le nombre de records à compacter, vous pouvez cliquer sur Yes et appliquer le flag ESL de la même façon une fois le compactage terminé (procédure très rapide). Toutefois, cette procédure nécessite de la prudence. Il faut :

  • s'assurer que le mod n'a pas de dialogues audio ni de nouveaux PNJs avec FaceGens, car ceux-ci sont nommés d'après les FormID ;
  • charger tous les patches dépendant en même temps lors de la conversion afin qu'xEdit y fasse suivre les changements de FormID ;
  • idéalement, tester chaque mod après conversion (xEdit fait une sauvegarde par défaut).

Sur le site de la Confrérie, le tag ESLisable est apposé sur les mods dont le plugin principal a été testé après conversion, mais qui n'est pas officiellement ESLisé (mises à jour, patches dispersés...).

Recherche d'un bug (très) rare issu de l'ESLisation

Un (très rare) bug peut se produire lorsqu'un plugin ESLisé écrase les records de CELL qui ont été ajoutés par un autre plugin ESLisé.

Dans ce cas, les références temporaires dans cette CELL n'apparaîtront pas dans le jeu. Avec un script xEdit, vous pouvez scanner votre ordre de chargement pour vérifier si vous avez ce bug et, si c'est le cas, supprimer le plugin affecté.

Téléchargez ce script et placez le dossier contenu dans l'archive dans le dossier Edit Scripts de xEdit.

  • Lancez xEdit et chargez TOUS vos plugins.
  • Faites CTRL+A pour sélectionner tous vos plugins dans la fenêtre de gauche, cliquez n'importe où dans la fenêtre et choisissez Apply Script.
  • Sélectionnez Check for ESL CELL Bug et laissez-le bosser.
  • Si vous n'avez aucun avertissement en fin de procédure, c'est que vous n'avez pas le bug. Sinon, supprimez le(s) plugin(s) qui sont touchés par le bug.