Jump to content

TES5Edit - Error using 'Copy as Override' Function


PresidentDylan5

Recommended Posts

I keep having a strange error while creating custom patches using TES5Edit. When I use the 'copy as override into..' or 'deep copy as override into..' functions and select 'new file' as the plugin to copy into, I while sometimes get an error about mapping a formid. It then simply won't perform the copy but will create the plugin; if I then simply repeat the function except select the newly created plugin rather than 'new file' it will perform the override seemingly without any problems but this nevertheless seems worth asking about. I've attached the bug report:

 

 

 

Thanks for any help

Link to comment
Share on other sites

I didn't know why the error would occur either so I had to ask Zilav. He said, "If missing master file is referenced by a parent record (like you copy INFO but master is used in DIAL) then similar error will happen. Need to add all required masters first." Which makes sense because the error is saying that it can't map the FormID. Which to me means that the FormID being copied has other FormIDs contained in its subrecords. Since those subrecords reference a master not part of the plugin you are working on when you try to copy the record, it gives an error.

 

I get an simular error when I try to change a FormID from for example [05]0345F3 to [03]0345F3 in a mod. Say 00 is Skyrim, 03 is ModA.esp and 05 is TheModIAmWorkingOn.esp. I am trying to change a FormID to point to ModA.esp instead of the mod I am working on. When I do that I will get an error that xEdit can't reference that FormID because it's from a master that isn't part of TheModIAmWorkingOn.esp. It will even go as far as to tell me an error occurred and I should close xEdit. Well I know I don't have to do that because I know why the error happened.

 

What I do instead is I add the master, sort masters, and close xEdit. It is recommended to always save the plugin when you add a master because everything xEdit is doing is stored virtually. It's not saved as you go like a text document. Once you add the master the FormIDs native to the plugin will change. Meaning originally all FormIDs pointing to Skyrim.esm are always 00 and the FormIDs native to the plugin are always 01. Once you add a master now you have 00-Skyrim.esm, 01-TheAddedMaster, 02 all the FormIds native to the plugin. The FormIDs have to all be renumbered.

 

You want all the FormID prefixes (01, 02, 03,) to be managed properly while you are copying records. Which is why I recommend that the mod is immediately saved after any master is added. If you decide to add several masters save the plugin, load the plugin, sort masters, save the plugin, load the plugin and continue working on it.

 

This is all important because once the plugin is used in game 00 is constant because it's Skyrim.esm. However, 01-master, 02-master, and 03-Native Values are going to be changed to whatever they are in your load order. 01 could become 07, 02 could become 08 and 03 could become 4F. The numbers are always in Hex.

 

Many people don't want certain masters to be part of the mod. However, not copying the supporting records breaks things which is what causes unresolved references. So if you do have masters you don't want, use the script "List records referencing specific plugin.pas" to show you which records reference the master you don't want as part of your plugin. Once you resolve that by adding more records and renumbering them or whatever you decide to do, then you can use the Clean Masters routine to safely remove the unwanted master.

Edited by Sharlikran
Link to comment
Share on other sites

Hlp was mentioning to the team that the exception should be caught by xEdit's internal routines. Can you list how you reproduce the error? Can you list the exact plugins used, masters, and which FormID you are trying to copy so that Hlp can refine how xEdit handles that type of error?

Link to comment
Share on other sites

Sorry for taking so long to reply. Since I didn't notice any consequences for the error and didn't get it again after that I sort of forgot to check my page :O. I tried to reproduce the error and found that it only seems to occur when I use deep override, at least with these plugins. I'll outline it:


My full load order (with some custom and merged plugins)

 

 

  Reveal hidden contents

 

 

  • I loaded Guard Dialogue Overhaul.esp and the two Immersive Armors plugins, Hothtrooper44_Armor_Ecksstra.esp and Hothtrooper44_ArmorCompilation.esp, into TES5Edit, along with their masters, Skyrim.esm and Update.esm. All three plugins have both Skyrim.esm and Update.esm as masters.
  • Apply Filter for Conflict Losers.
  • Expand Dialogue Topic under Guard Dialogue Overhaul.
  • Deep Copy as Override of record 0002BDDD into new file (Image 1).
  • Asks for Skyrim to be made master of new plugin then returns error (Image 2,Image 3, bug report below)

 

 

Interestingly, when I copy the individual sub records instead (Copy as Override) it asks for the new plugin to have Skyrim.esm, Update.esm and Guard Dialogue Overhaul.esp as masters, rather than just Skyrim.esm as with the Deep Copy as Override, and doesn't return an error. Maybe this is a problem with Deep Copy as Override?

Edited by PresidentDylan5
Link to comment
Share on other sites

  • 2 weeks later...

Man I missed that too. After I reminded Zilav and Hlp about it, one of your images caught Zilav's attention. There are injected records in the plugins. So they have no source or origin that they belong to.

 

So if your master is Skyrim.esm and the FormID is 0014F43E, but that FormID isn't even in Skyrim.esm because it's injected then that has to be resolved first. Meaning it can't be injected to a master. If it's being injected into official DLC then don't do that at all. Make it native the plugin. So if the plugin has Skyrim.esm as a master and nothing else all the records native to the plugin will have a prefix of 01. So the example FormID I had 0014F43E would need to be changed to 0114F43E and everything has to be updated. I'm glad xEdit is catching that. It should error when it sees something like that because if it didn't it would end up as an unresolved reference.

Link to comment
Share on other sites

Uhh sorry quite new to xEdit, how do I know if a record is an injected record? The records in the images seem to be in Skyrim.esm as well. Is this some kind of problem with Guard Dialogue Overhaul? I'm confused :p

 

EDIT: looked it up a bit, think I know what an injected record is now :D. Still not sure how it applies to my example, though; the Guard Dialogue Overhaul plugin is in italics (which I think means it contains injected records) but the actual records I'm copying aren't. Or does that just mean every record in the plugin is an injected record? And anyway why does it make a difference whether I perform a deep copy as override or copy each individual plugin? Sorry if I'm annoying

Edited by PresidentDylan5
Link to comment
Share on other sites

It's not annoying. So yes italics means it's injected.

 

  Reveal hidden contents

 

Those are all injected. Have you manually sorted down the list of all the Dial Topics to see if there are any injected records, in the subrecords? FormID 0002095C has one for SPIKEWeapWickedAxe [KYWD:01DA015F]. So you try to copy 0002095C and xEdit tries to Copy 01DA015F (or nil) and can't do it. For xEdit how can nil be copied? It's going to look at Update.esm for those records and they don't exist.

 

It would take you a while, but in order to do this you would need to make a MyMaster.esm file, sort that right after Update.esm, added it as a master of the files, sort the masters of all the files, (so the plugin header is correct) then used copy as override into... (and copy the injected records to the MyMaster.esm file) renumber all the FormIDs properly (just change the prefix [01]XXXXXX, don't change the suffix), line up up all the overrides what you are doing might work.

 

What they are doing is creating compatibility between the mods by injecting the records into Update.esm since everyone probably has that in their Data folder. It also eliminates requiring another file. There used to be a Spike.esm for this if I remember correctly. You know people do actually try to play with 255 mods installed so having one more file is a big deal to those people. Also if the script is looking for element #5 in a Form List you can't ever alter that. It needs it to be in the 5th position or the script will fail. So some of that is made as a framework.

 

To find all the records you can read the messages panel, use List records referencing specific plugin.pas and, you can also hold CTRL and double click the FormID number to jump to the record. So that's what I did. A bunch of Keywords were shared.

Edited by Sharlikran
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...