Jump to content

[WIPz] TES5Edit


zilav

Recommended Posts

Ah, makes sense.  Derp.

 

Although I think it would be pretty easy to adjust the code to not remove those ITM injected records, and more generally to work fine at cleaning when multiple mods are loaded.

Cleaning when several conflicting mods are loaded at once will always get mixed results, I don't see any point of fixing anything here. You can never fix stupidity or ignorance anyway :facepalm:

  • Like 1
Link to comment
Share on other sites

Cleaning when several conflicting mods are loaded at once will always get mixed results, I don't see any point of fixing anything here. You can never fix stupidity or ignorance anyway :facepalm:

 

Well UDRs shouldn't change regardless of what mods the user loads.  ITMs should be resolvable if you just check what file the master version of the record is in.

Link to comment
Share on other sites

Well UDRs shouldn't change regardless of what mods the user loads.  ITMs should be resolvable if you just check what file the master version of the record is in.

I don't see anything wrong with the current cleaning process, only the wrong usage of it. ITM cleaning uses the global conflict state initialized by applied filter, don't want to add any additional checks there for no reason.

  • Like 1
Link to comment
Share on other sites

I don't see anything wrong with the current cleaning process, only the wrong usage of it. ITM cleaning uses the global conflict state initialized by applied filter, don't want to add any additional checks there for no reason.

While that's true, I remember that the first time I cleaned my main files, I'd tried cleaning them all at once. Had to restore and do it over one-at-a-time.

 

Basically, it's not obvious. Could there be a check, something like I know what I'm doing, when more than 1 active subject is involved? Or only ever clean the 1 active subject, never anything above it?

Link to comment
Share on other sites

I don't think the code needs to be updated to babysit people who aren't reading the process they're engaging in. Every guide and video on the subject is crystal clear about not loading more than the mod being cleaned. It's been this way since Morrowind and before xEdit even existed, and everyone understood this just fine.

Link to comment
Share on other sites

I don't think the code needs to be updated to babysit people who aren't reading the process they're engaging in. Every guide and video on the subject is crystal clear about not loading more than the mod being cleaned. It's been this way since Morrowind and before xEdit even existed, and everyone understood this just fine.

 

But extraordinarily time consuming if you have anything near a substantial load order.  The time suck for cleaning 250 ESP files individually is absurd.  It's not unfeasible (or even difficult) to create an automated cleaning process that could work on an entire load order.

Link to comment
Share on other sites

But extraordinarily time consuming if you have anything near a substantial load order.  The time suck for cleaning 250 ESP files individually is absurd.  It's not unfeasible (or even difficult) to create an automated cleaning process that could work on an entire load order.

Technically you don't need global conflict state of records to clean some mod, only compare records with the last master ones. I suppose that filter is used because of implicit dependecies where xEdit couldn't know the last real "master" to compare with if it is not in the plugin's header, so the global conflict is checked for all loaded plugins. I admit that such situations are quite rare in Skyrim, I personally don't know any though since I'm not modding Skyrim actively. It is more of an Oblivion legacy really, but still the mechanic itself is valid for all games and should not be changed imho.

You can modify my ITPO script to remove ITM records instead (compare not with the previous override record, but with the last master override of a plugin) and clean all loaded mods at once without any filtering at all if you are in rush.

  • Like 1
Link to comment
Share on other sites

But extraordinarily time consuming if you have anything near a substantial load order.  The time suck for cleaning 250 ESP files individually is absurd.  It's not unfeasible (or even difficult) to create an automated cleaning process that could work on an entire load order.

 

Though you can't clean multiple plugins in the same session, if the plugins aren't inter-dependant, you can run multiple instance of xEdit in parralel to clean multiple files in a short amount of time :teehee:

Link to comment
Share on other sites

You can even script the process so all those instances are open at once:

Using something along those lines...

for %%f in ( *.es? ) do xEdit -CheckForErrors %%f
for %%f in ( *.es? ) do xEdit -CheckForITM %%f
for %%f in ( *.es? ) do xEdit -CheckForDR %%f



 

 

 

Link to comment
Share on other sites

Technically you don't need global conflict state of records to clean some mod, only compare records with the last master ones. I suppose that filter is used because of implicit dependecies where xEdit couldn't know the last real "master" to compare with if it is not in the plugin's header, so the global conflict is checked for all loaded plugins. I admit that such situations are quite rare in Skyrim, I personally don't know any though since I'm not modding Skyrim actively. It is more of an Oblivion legacy really, but still the mechanic itself is valid for all games and should not be changed imho.

You can modify my ITPO script to remove ITM records instead (compare not with the previous override record, but with the last master override of a plugin) and clean all loaded mods at once without any filtering at all if you are in rush.

 

That's what I was thinking.

 

 

You can even script the process so all those instances are open at once:

Using something along those lines...

for %%f in ( *.es? ) do xEdit -CheckForErrors %%f
for %%f in ( *.es? ) do xEdit -CheckForITM %%f
for %%f in ( *.es? ) do xEdit -CheckForDR %%f

 

That RAM usage though... p_q

Link to comment
Share on other sites

HI everybody.

 

Please help me with script. Idea is to change Water level in all worldspace cells if level is 0

 

for example if 0 than -30000, if not 0 than skip. It is for Oblivion game.

Link to comment
Share on other sites


if Signature(e) = 'CELL' then

if not GetIsPersistent(e) and (GetElementNativeValues(e, 'DATA') and 1 = 0) then // exterior temporary cells only

  if GetElementNativeValues(e, 'XCLW') = 0 then

SetElementNativeValues(e, 'XCLW', -30000);

  • Like 1
Link to comment
Share on other sites

if Signature(e) = 'CELL' then
  if not GetIsPersistent(e) and (GetElementNativeValues(e, 'DATA') and 1 = 0) then // exterior temporary cells only
    if GetElementNativeValues(e, 'XCLW') = 0 then
      SetElementNativeValues(e, 'XCLW', -30000

Thanks, I made a similar it works). Where I can look for all script commands?

Link to comment
Share on other sites

Is there a technical reason to not have skyrim's ingredients displayed in the "referenced by" tab of their magic effects ? Or just an oversight ?

Link to comment
Share on other sites

Is there a technical reason to not have skyrim's ingredients displayed in the "referenced by" tab of their magic effects ? Or just an oversight ?

References information is not built by default for the main master file to speed up loading times. You can do it manually right click -> other -> build reference info

  • Like 1
Link to comment
Share on other sites

Aah, thanks :) any way to make it default ? (an argument ? or pressing a key while clicking OK before loading mods ?)

 

 

Also, question about "hardcoded" stuffs :

What about dawnguard's crossbow & vampire lord transformation, or dragonborn's mounted dragons ? Those mechanics aren't in the base game. But say someone doesn't have Dawnguard or Dragonborn, would he be able to have it with a mod ? 

As far as I understand it, hardcoded stuffs which are in Skyrim.Hardcoded.keep.this.with.the.exe.and.otherwise.ignore.it.I.really.mean.it.dat, and show up under Skyrim.exe in TES5Edit, are actually records injected by the program itself in the record structure of plugins. Since Skyrim.exe is the same no matter which DLC you have, I'm wondering about it.

 

 

And finally, still about hardcoded stuffs : Can I get Skyrim.exe to load in TES5Edit, without having Skyrim.esm ? 

Link to comment
Share on other sites

Aah, thanks :) any way to make it default ? (an argument ? or pressing a key while clicking OK before loading mods ?)

Nope, but you can create hotkeyed script for that if needed.

BuildRef(FileByIndex(0));

 

But say someone doesn't have Dawnguard or Dragonborn, would he be able to have it with a mod ? 

As far as I understand it, hardcoded stuffs which are in Skyrim.Hardcoded.keep.this.with.the.exe.and.otherwise.ignore.it.I.really.mean.it.dat, and show up under Skyrim.exe in TES5Edit, are actually records injected by the program itself in the record structure of plugins. Since Skyrim.exe is the same no matter which DLC you have, I'm wondering about it.

I did not create this file, JustinOther provided it. I assume those are forms shown in CK without any loaded plugins at all.

No idea about any hardcoded forms in DLCs. Anyway I'm not sure anyone cares about someone not having DLCs at this point, even USKP went full DLCs only way for future updates.

 

And finally, still about hardcoded stuffs : Can I get Skyrim.exe to load in TES5Edit, without having Skyrim.esm ?

It is an ordinary ESP plugin, change extension and load in TES5Edit.

  • Like 1
Link to comment
Share on other sites

I did not create this file, JustinOther provided it. I assume those are forms shown in CK without any loaded plugins at all.

This.

It's a file that stores form IDs for things that are in the CK with no plugins loaded at all, AND do not have entries listed in the game's master file when it loads.

DLC is never a consideration for this because the DLCs are always just large plugin files.

Link to comment
Share on other sites

Thanks for the answers. I was more interested in knowing where those mechanics where actually "stored", but seems like I'll have to investigate more on my side if I want to know ^^

 

Thx for the script tip, I'll put it in my scripted filter so I get all the infos at once :)

Link to comment
Share on other sites

:cry:

In Oblivion the presense of Shivering Isle expansion (the only real DLC) is the default assumption nowadays, some mods don't even bother to mention it. Skyrim is 4 years old game which is eternity by modern game industry standards, you should have all DLCs if you are interested in modding and playing it in 2015. Just my imho though.

  • Like 1
Link to comment
Share on other sites

edit: disregard, it's a mesh issue from a custom LOD model.

I get an error message from FO3Gen using the latest dev. version 180815 and the LOD is not fully produced.

[Wasteland] Generating LOD

[Wasteland] Building LOD textures atlas: D:\Steam\steamapps\common\Fallout 3 goty\Data\textures\landscape\lod\Wasteland\Blocks\WastelandObjectsLOD.dds

[Wasteland] Saving LODGen data: C:\Users\Stefan\OneDrive\Games\Fallout 3\Tools\FO3LODGen\Edit Scripts\LODGen.txt

[Wasteland] Running C:\Users\Stefan\OneDrive\Games\Fallout 3\Tools\FO3LODGen\Edit Scripts\LODGen.exe "C:\Users\Stefan\OneDrive\Games\Fallout 3\Tools\FO3LODGen\Edit Scripts\LODGen.txt" --dontFixTangents --removeUnseenFaces --dontGenerateVertexColors

============================================================

Skyrim Object LOD Generator v0.9

Created by Ehamloptiran and Zilav

Updated by Sheson

Log started at 17:05

Game Mode: FNV

Fix Tangents: False

Generate Tangents: True

Generate Vertex Colors: False

Merge Meshes: True

Remove Faces under Terrain: True

Remove Faces under Water: True

Use HD Flag: True

Ignore Materials: False

Global scale: 1,00

Specific level: No

Specific quad: No

Using UV Atlas: C:\Users\Stefan\OneDrive\Games\Fallout 3\Tools\FO3LODGen\Edit Scripts\LODGenAtlasMap.txt

Output: D:\Steam\steamapps\common\Fallout 3 goty\Data\meshes\landscape\lod\Wasteland\Blocks

Generating LOD for worldspace Wasteland

Finished LOD level 4 coord [16, -4] [272/263]

Finished LOD level 4 coord [8, -8] [240/240]

Finished LOD level 4 coord [4, -16] [160/160]

Finished LOD level 4 coord [20, -4] [464/458]

Finished LOD level 4 coord [4, -12] [118/118]

Finished LOD level 4 coord [0, -8] [42/42]

Finished LOD level 4 coord [12, -8] [592/579]

Finished LOD level 4 coord [8, -4] [80/80]

Finished LOD level 4 coord [16, -12] [80/80]

Finished LOD level 4 coord [12, -4] [272/264]

Finished LOD level 4 coord [12, -16] [296/274]

Finished LOD level 4 coord [0, -16] [1780/1663]

Finished LOD level 4 coord [0, -12] [462/462]

Finished LOD level 4 coord [16, -20] [468/466]

Finished LOD level 4 coord [20, -12] [566/566]

Finished LOD level 4 coord [4, -8] [590/569]

Finished LOD level 4 coord [4, -16] [1966/1736]

Finished LOD level 4 coord [20, 0] [428/428]

Finished LOD level 4 coord [12, -8] [3111/2990]

Finished LOD level 4 coord [-12, 24] [580/580]

Finished LOD level 4 coord [-28, 20] [580/580]

Finished LOD level 4 coord [-16, 24] [1160/1160]

Finished LOD level 4 coord [-16, -20] [2292/2292]

Finished LOD level 4 coord [0, -20] [2156/1982]

Finished LOD level 4 coord [12, -12] [3893/3417]

Finished LOD level 4 coord [-24, 24] [580/580]

Finished LOD level 4 coord [24, 0] [100/93]

Finished LOD level 4 coord [4, -12] [10708/9290]

Finished LOD level 4 coord [16, -4] [8048/7012]

Finished LOD level 4 coord [8, -8] [9867/8419]

Finished LOD level 4 coord [20, -4] [5547/4948]

Ausnahmefehler: System.ArgumentOutOfRangeException: Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.

Parametername: index

bei System.ThrowHelper.ThrowArgumentOutOfRangeException()

bei LODGenerator.LODApp.GetMeshTextures(NiFile file, NiTriShape shape)

bei LODGenerator.LODApp.TransformShape(QuadDesc quad, StaticDesc stat, NiFile file, NiTriBasedGeom geom, Matrix44 parentTransform, Single parentScale, Int32 numGeom)

bei LODGenerator.LODApp.IterateNodes(QuadDesc quad, StaticDesc stat, Int32 level, NiFile file, NiNode parentNode, Matrix44 parentTransform, Single parentScale)

bei LODGenerator.LODApp.<>c__DisplayClass4.<GenerateLOD>b__2(Object state)

bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)

bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

bei System.Threading.ThreadHelper.ThreadStart(Object obj)

Finished LOD level 4 coord [8, -12] [6341/5925]

LOD level 4 total triangles 24592 reduced to 23321

Ausnahmefehler: System.ArgumentOutOfRangeException: Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.

Parametername: index

bei System.ThrowHelper.ThrowArgumentOutOfRangeException()

bei LODGenerator.LODApp.GetMeshTextures(NiFile file, NiTriShape shape)

bei LODGenerator.LODApp.TransformShape(QuadDesc quad, StaticDesc stat, NiFile file, NiTriBasedGeom geom, Matrix44 parentTransform, Single parentScale, Int32 numGeom)

bei LODGenerator.LODApp.IterateNodes(QuadDesc quad, StaticDesc stat, Int32 level, NiFile file, NiNode parentNode, Matrix44 parentTransform, Single parentScale)

bei LODGenerator.LODApp.<>c__DisplayClass4.<GenerateLOD>b__2(Object state)

bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)

bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

bei System.Threading.ThreadHelper.ThreadStart(Object obj)

Finished LOD level 4 coord [-12, -8] [5276/4007]

[Wasteland] Objects LOD generation error: LODGen process error, exit code -532462766

LOD Generator: finished (you can close this application now)

not sure if this is something new or a user error on my part. it's my first test at using LODgen. funny enough: i get an error crashed popup from windows after that. if i select different worldspaces though, the program continues running generating LOD for the other worldspaces.

Link to comment
Share on other sites

Uploaded new version.

Updated LODGen.exe, new scripting function and fix for immersive citizens mod using MSTT form as a package target.

There is also a new option "Show elements count for group records" which will display the number of elements (records and group records) for group records in the Name column. Keep in mind that CELL, WRLD and DIAL records have child group records following them, however xEdit doesn't show them but instead makes those records browsable in the navigation tree when such child groups are present. But they are still counted for the number of elements since they are the real (group)records stored in a plugin inside that group record. For example here 2 cells in subblock but 4 elements shown

 

6WY9BuG.png

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...