Jump to content

[WIPz] TES5Edit


zilav

Recommended Posts

Thread where I'll be posting the latest updates.

Primarily for testing and discussion, new ideas.

 

Please remember those are developer versions from subversion control and so can destroy your mods, computer, and kill kittens :evil:

 

Version 3.2.3 contains the following changes:

  • merged patch fixes
  • [FO4/SSE] ESL support, mapping FormIDs or light plugins in FE slot similar to the game engine
  • caching of built references in the "Data\xEdit Cache" folder
  • new plugins selector window and fixes to load order sorting
  • themes support (right click menu on the window caption)
  • DPI awareness
  • Ctrl+S saves over the original files now, don't need to restart xEdit to save changes

 

Download

Link to comment
Share on other sites

Currently working on Worldspace browser script.

It builds the map from lod textures for selected worldspace and will allow to overlay cells grid, regions, map markers, references, etc.

Will show lod file names for that place when moving cursor over map, probably nearest references.

Supports all games: Skyrim, Oblivion, Fallout and New Vegas.

 

http://i.imgur.com/wvNNznH.png

  • Like 1
Link to comment
Share on other sites

- BSA files are loaded by exact matching with plugin names for TES5, and partial matching for previous games

What previous game is that the 'exact matching with plugin names for TES5' accurate for?  Is it only for Oblivion or is it accurate for Morrowind too?

Link to comment
Share on other sites

What previous game is that the 'exact matching with plugin names for TES5' accurate for?  Is it only for Oblivion or is it accurate for Morrowind too?

There is no TES3Edit, so I meant Fallouts and Oblivion.

  • Like 1
Link to comment
Share on other sites

Currently working on Worldspace browser script.

It builds the map from lod textures for selected worldspace and will allow to overlay cells grid, regions, map markers, references, etc.

Will show lod file names for that place when moving cursor over map, probably nearest references.

Supports all games: Skyrim, Oblivion, Fallout and New Vegas.

 

http://i.imgur.com/wvNNznH.png

 

This would be a great feature but, specifically for Skyrim (dunno for other games), LOD file names have several levels, as stated here. I'm now wondering if it was worth the effort to invest myself in LOD investigations...:(

 

BTW, may these LOD incursions lead to further functionalities ? I mean, can we expect TES5LODGen one day ? :D

Link to comment
Share on other sites

BTW, may these LOD incursions lead to further functionalities ? I mean, can we expect TES5LODGen one day ? :D

I highly doubt that since building objects LOD in Skyrim means creating NIF files while building LOD in Oblivion is just placing prepared meshes in the world. TES5Edit doesn't have any means for NIF manipulation yet. It is a task more suited for NifTools/NifScope.

  • Like 1
Link to comment
Share on other sites

esp files can be loaded before esm

Works like a charm, thanks :)

 

I'd caution one thing though - this should not be allowed when dealing with Oblivion load orders. The only reason to want to do this would be game breaking for OB anyway.

Link to comment
Share on other sites

Just noticed that hidden script properties (and their default values) are not yet displayed in TES5Edit. Might be an idea for a future release.

Link to comment
Share on other sites

Just noticed that hidden script properties (and their default values) are not yet displayed in TES5Edit. Might be an idea for a future release.

VMAD subrecord is fully displayed, nothing hidden there.

  • Like 1
Link to comment
Share on other sites

There is no TES3Edit, so I meant Fallouts and Oblivion.

I thought so but I wasn't sure.  Thanks and keep up the good work. :)

Link to comment
Share on other sites

im kinda confused by what the worldspace browser does, is it like a realtime representation of the world as a result of the mods in question?

Link to comment
Share on other sites

Great ! Could we have an option to export satellite maps in bmp or png ?

 

Yes, map with optional cell grid, but without overlays.

 

im kinda confused by what the worldspace browser does, is it like a realtime representation of the world as a result of the mods in question?

 

Kind of, it will allow to overlay different information. For example this is a "Cell override" mode for Dawnguard. Dashed rect - overridden cell, solid rect - overridden landscape, cross - overridden or added navmeshes/pathgrids

Dawnguard

  • Like 1
Link to comment
Share on other sites

Hello, and welcome to AFKMods, zilav :wave:

 

Very happy to see this dev thread here, thank you for this. The worldspace browser looks exciting!

 

One thing;

I highly doubt that since building objects LOD in Skyrim means creating NIF files while building LOD in Oblivion is just placing prepared meshes in the world. TES5Edit doesn't have any means for NIF manipulation yet. It is a task more suited for NifTools/NifScope.

What am I missing here? In both games, low poly meshes need to be placed in the world. Whether they need to be created or not. I myself have created _far nifs for Oblivion to generate the LOD required in modded areas. It's the equivalent of Skyrim's _lod nifs.

A TES5LODGen would go a long way for people to regenerate their own LOD to suit their needs without modders going through black magic wizardry of generating a full world for one or two files. Just dropping this crumb here. :cookies:

Link to comment
Share on other sites

Generating both LOD terrain (.btr files) and objects (.bto files) with the actual 3rd party tools is a huge PITA, yes. They are both basically 'rather standard' meshes in nif format.

 

In Oblivion, however, the .cmp and .lod files have nothing related with meshes. They are so tiny that, in my opinion, they just contain some sort of 'table of content' of objects to display from distance.

Link to comment
Share on other sites

Files generated by TES4LODGen are just binary data files with positions and angles for _far meshes, they are not meshes themselves.

In Skyrim objects lod (*.bto files) are actual nif meshes created from _lod meshes by merging them together (grouped by neighboring cells) in NiTriStrip nodes. So lod generation involves creation of nif meshes.

There are only 2 libraries that allow to do this atm: niflib and piffy, and they both don't support pascal. That's why I said that TES5LODGen is unlikely to happen.

  • Like 1
Link to comment
Share on other sites

I was using the Assets Manager and I was checking for missing assets.  I noticed that with the Mod "Arise - Chapter 1 - The Black Sacrament" that the mod author uses Texture Sets a lot in the mod.  I didn't even know what they were until I asked.  The idea being that there is one nif file for all of the color variants.  The .nif file states that the texture is in "armor\bsaarmor\boots.dds" when in fact it isn't.  It's located in "textures\dcvrworks\blacksacrament\basyllic" for one color and "textures\dcvrworks\blacksacrament\cypress" for another color.  Because of that there were 1082 missing files.  All of which are related to the inconsistancy between the .nif file and the TextureSet.

Link to comment
Share on other sites

Yes, sorry, you're right of course, zilav (and Nico, thanks)

After having my morning coffee I started to realize I was mixing up landscape and objects. Landscape is definitely a different animal in Skyrim. :)

Link to comment
Share on other sites

I was using the Assets Manager and I was checking for missing assets.  I noticed that with the Mod "Arise - Chapter 1 - The Black Sacrament" that the mod author uses Texture Sets a lot in the mod.  I didn't even know what they were until I asked.  The idea being that there is one nif file for all of the color variants.  The .nif file states that the texture is in "armor\bsaarmor\boots.dds" when in fact it isn't.  It's located in "textures\dcvrworks\blacksacrament\basyllic" for one color and "textures\dcvrworks\blacksacrament\cypress" for another color.  Because of that there were 1082 missing files.  All of which are related to the inconsistancy between the .nif file and the TextureSet.

The current nif parser in TES5Edit is very basic and primitive, it only reads texture entries from specific nodes and doesn't even support oblivion meshes for example. To implement alternate textures overrides via TXST It also needs to parse/read node names and other information from meshes, and that is more complicated. Maybe in future we'll add a full nif reader in xEdit so such logic will be possible to implement, but not now.

  • Like 1
Link to comment
Share on other sites

Maybe in future we'll add a full nif reader in xEdit so such logic will be possible to implement, but not now.

Makes sense.

Would it be best to hold off on talking about "Copy Referenced assets" also? It copies files from other places that are not in the Data folder even when you uncheck the Skyrim and Update bsa files. It does not copy the '0' nif files from the The Black Sacrament mod I listed. Separate from that mod it is not copying the lip and wave files for custom voices. I don't think Skyrim hard codes the file name into any file for the voice and lip files. However, I know the path and filename structure of the custom voice files if you want me to post it and I can provide an archive of the update I am working on for Dovahkiin Hideout for testing.

I like the Worldspace browser, Copy Referenced assets, and checking for missing assets.  Just makes TES5Edit that much more useful.  :grin:

Link to comment
Share on other sites

VMAD subrecord is fully displayed, nothing hidden there.

 

Not true.

 

For example, look at the record of an arbitrary weapon rack activator - say, 0006A4A4 (which is the player house version activator of a standard wooden rack) - and try to find the "PlayersDroppedWeapon" property on WeaponRackActivateScript. It's not displayed, but it is an existing property on that script.

Link to comment
Share on other sites

To implement alternate textures overrides via TXST It also needs to parse/read node names and other information from meshes, and that is more complicated. Maybe in future we'll add a full nif reader in xEdit so such logic will be possible to implement, but not now.

I did a little thinking and asking about the properties of NIF files in regards to the TXST records.  The TXST is a total override regardless of the nif settings.  NifScope dose not have to be used to set any special settings in the Nif file to use alternate textures.

Take any vanila .nif file in the official BSA file. I don't have to extract it, I can just copy an ARMA record that references a Boot for example. Then I open the Model Data window and assign alternate textures.  They will override what the nif file is looking for.  So in affect they add a MO2S and an MO3S in ARMA and an MO2S and an MO4S in ARMO. (I think)  Never the less those records point to the TXST record.

 

So the wbNifScanner does not have to parse the nif file any more than it does already.  Instead somewhere along the way it just needs to look at the MO2S, MO3S, MO4S (and any others) and check those in place of the NifFile itself.  I don't know the code I am not implying I do, I just looked and am trying to see what I can to explain this.

 

Here maybe

  // check textures in mesh
  if (atype = atMesh) and (optAsset and atTexture > 0) then begin
    // suppress possible errors for invalid meshes
    try
      // If Record uses wbMODL then Check if Record has assigned [wbMODS] (MODS,  MO2S,  MO3S,  MO4S,  MO5S)
      // If [wbMODS] is assigned then Check if TXST is valid
      // If TXST is valid check if TX00, TX01, TX02, TX03, TX04, TX05, (and any others are assigned)
      // If assigned check textures listed in TXST record instead of the NIF file
      // 
      // Insert code here to look for TXST Override, if none exists check Nif
      // if MODS, MO2S, MO3S, MO4S, MO5S exists then scna through the TXST Record
      // For i = 0 to 9
      // s := 'TX0' = NumToStr(i) -- making TX00, TX01
      // ScanForAssets(ElementByPath([something], s))
      // Else Look in Nif
      NifTextureList(ResourceOpenData(rescont, value), sl);
    except on E: Exception do
      AddMessage('NIF: ' + E.Message + ' ' + value);
    end;
    slTextures.AddStrings(sl); // remove duplicates
    for i := 0 to Pred(slTextures.Count) do begin
      s := NormalizePath(LowerCase(slTextures[i]), atTexture);
      ProcessResource(s, valuedescr + ': ' + value, atTexture);
    end;
    slTextures.Clear;
  end;
There is a chance it still won't work. Because the NifFile has 9 fields for textures. So it's possible that the TXST overrides can hold 0-x textures and the Nif file has any number from 0-x.

Could be done later as you mentioned but, just an example--it might not need to parse more of the Nif file then it does already. It just needs to check the TXST record first then the NIF file for textures that are not overridden by the TXST record.

Link to comment
Share on other sites

Not true.

 

For example, look at the record of an arbitrary weapon rack activator - say, 0006A4A4 (which is the player house version activator of a standard wooden rack) - and try to find the "PlayersDroppedWeapon" property on WeaponRackActivateScript. It's not displayed, but it is an existing property on that script.

Actually he's right. PlayersDroppedWeapon is set to a "None" value by default. It is not stored in the VMAD data in the ESP. TES5Edit can only show you the available VMAD data that's stored in the ESP. Values of "None" or ones that show up in scripts as "<Default>" will not be listed.

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...