Difference between revisions of "Category:Troubleshooting"

1,832 bytes added ,  17:18, 18 July 2007
→‎Changing Script Variables: added missing explanation thanks to ElminsterEU
imported>Haama
imported>Dev akm
(→‎Changing Script Variables: added missing explanation thanks to ElminsterEU)
Line 117: Line 117:


== Changing Script Variables ==
== Changing Script Variables ==
This issue is best described in Wrye's ESF thread [http://www.elderscrolls.com/forums/index.php?showtopic=625194 Overriding Scripts and CTDs] based on discussions started in MentalElf's ESF thread [http://www.elderscrolls.com/forums/index.php?showtopic=603536 In desparate need of a save game editor].


This issue is best summarized in Wrye's ESF thread [http://www.elderscrolls.com/forums/index.php?showtopic=625194 Overriding Scripts and CTDs] based on discussions started in MentalElf's ESF thread [http://www.elderscrolls.com/forums/index.php?showtopic=603536 In desparate need of a save game editor]
However, a good summary of the issue is probably worth providing here. The big problem with script variable changes is not which mod wins the conflict in a specific configuration, but that it can change over time.  


This info really hasn't made it into popular circulation yet.
Suppose someone is using a hypothetical BaseModA.esm, which defines MyScript to have the variables '''VarA''', '''VarB''' and '''VarC'''. These variables get the indices 1, 2 and 3. The savegame will just contain the information:
 
  script FormID = xxxxxx
  value for variable index 1 = x
  value for variable index 2 = y
  value for variable index 3 = z
 
In other words, only the position of the variable is stored.
 
Now if the player after some time decides he would like to add OptionalAddOnB.esp, and it contains slight alterations to MyScript, then it may still have the variables '''VarA''', '''VarB''', and '''VarC''', but they now have the indices 3, 2, 1. When the savegame is loaded, it sees that the script FormID is still the same, so it loads variable index 1 into '''VarC''', index 2 into '''VarAB''', and index 3 into '''VarA''' (i.e., in the wrong positions). Depending on the meaning of these variables, serious problems can arise.
 
It gets even worse if '''VarA''' is a ref variable and '''VarC''' is a float variable. You now have the binary representation of that float value in the ref variable and the contents of a ref variable in the float variable. Complete chaos!
 
The only way to resolve this is to start the game without ANY mods active that define that particular FormID, load the savegame (which strips out everything), save, add the files you want in the order you want, and start again. Unfortunately, this solution won't work for changes to scripts that originated in Oblivion.esm (since you can never load without those FormIDs).
 
This is a critical issue that can cause a lot of CTDs, but somehow people still don't seem to know about it.


== Savegame Bloating ==
== Savegame Bloating ==
Anonymous user