Jump to content

[WIPz] TES5Edit


zilav

Recommended Posts

As I said, I added a new script only.

 

Small hotfix to avoid removing non empty worldspaces, cells and topics

http://pastebin.com/4KJHksR0

 

So the process of "cleaning" is following:

1. ITM clean plugin (to remove ITM and also empty groups like Persistent and Temporary)

2. apply ITPO script

3. ITM clean plugin again (remove empty groups after ITPO script and ITM worldspaces, cells and topics if child records were ITPO and deleted)

  • Like 1
Link to comment
Share on other sites

There is something in your system, clicking on the scroll bar doesn't reverse order.

 

Normally it is clicking the square above the scroll bar which causes this to happen (to the right of column header "Name") - I had forgotten that it is only clicking here which does it as I have gotten so used to ensuring I never click anywhere near there - with Windowblinds the effect is expanded across the entirety of the scroll bar and is also triggered when scrolling.

Link to comment
Share on other sites

Tested the new script with my Smashed Patch.  390 records removed.  25% reduction in plugin size.  Now if only I could recognize those ITPOs before Smash wastes time conflict resolving them.

Link to comment
Share on other sites

Normally it is clicking the square above the scroll bar which causes this to happen (to the right of column header "Name") - I had forgotten that it is only clicking here which does it as I have gotten so used to ensuring I never click anywhere near there - with Windowblinds the effect is expanded across the entirety of the scroll bar and is also triggered when scrolling.

I doubt we can fix this interference from Windowsblinds as it will require extra changes in VirtualTreeView component which I want to avoid. Maybe you can switch to another tool having similar functionality.

  • Like 1
Link to comment
Share on other sites

{
  Apply custom scripted filter for female NPC characters
}
unit ApplyCustomScriptedFilter;
 
function Filter(e: IInterface): Boolean;
begin
  if Signature(e) <> 'ARMO' then
    Exit;
  
  // Female flag
  Result := ElementBySignature(e, 'BODT');
end;
 
function Initialize: Integer;
begin
  FilterConflictAll := False;
  FilterConflictThis := False;
  FilterByInjectStatus := False;
  FilterInjectStatus := False;
  FilterByNotReachableStatus := False;
  FilterNotReachableStatus := False;
  FilterByReferencesInjectedStatus := False;
  FilterReferencesInjectedStatus := False;
  FilterByEditorID := False;
  FilterEditorID := '';
  FilterByName := False;
  FilterName := '';
  FilterByBaseEditorID := False;
  FilterBaseEditorID := '';
  FilterByBaseName := False;
  FilterBaseName := '';
  FilterScaledActors := False;
  FilterByPersistent := False;
  FilterPersistent := False;
  FilterUnnecessaryPersistent := False;
  FilterMasterIsTemporary := False;
  FilterIsMaster := False;
  FilterPersistentPosChanged := False;
  FilterDeleted := False;
  FilterByVWD := False;
  FilterVWD := False;
  FilterByHasVWDMesh := False;
  FilterHasVWDMesh := False;
  FilterBySignature := False;
  FilterSignatures := '';
  FilterByBaseSignature := False;
  FilterBaseSignatures := '';
  FlattenBlocks := False;
  FlattenCellChilds := False;
  AssignPersWrldChild := False;
  InheritConflictByParent := True; // color conflicts
  FilterScripted := True; // use custom Filter() function
 
  ApplyFilter;
 
  Result := 1;
end;
 
end.

I am not trying to restrict this to ARMO but I wanted to test it and see if I could get it working. To start I thought I would look for all ARMO records with BOD2. Then once that worked I would look for what I want which is looking for all records with BODT. What am I doing wrong?

Link to comment
Share on other sites

@Sharlikran:
First thing that jumps out at me is that ElementBySignature returns an IInterface element, not a boolean.  I think you want:

Assigned(ElementBySignature(e, 'BOD2'))

I don't know how to use Filter(e: IInterface): boolean because I've never used it before, but I'd assume you're supposed to return a boolean on whether or not to include a record in the Result variable?  In that case you can just exit if you find a record that doesn't need to be processed, leaving Result at the default value of False.  So like:

 

if not Assigned(ElementByPath(e, 'BOD2\BODT')) then exit;

 

 

-Mator

Link to comment
Share on other sites

Result := ElementExists(e, 'BODT');

No need to exit here, it is the last command in a function. You can also remove signature check command to filter all records.

  • Like 1
Link to comment
Share on other sites

Zilav, out of curiosity, is there any chance that the svn number associated with xEdit might be put into a variable that is accessible from scripts?  It would be nice to be able to determine the svn a user is running so a script that uses recently added scripting functions can gracefully terminate and inform the user if they're not using the required svn.

Link to comment
Share on other sites

Zilav, out of curiosity, is there any chance that the svn number associated with xEdit might be put into a variable that is accessible from scripts?  It would be nice to be able to determine the svn a user is running so a script that uses recently added scripting functions can gracefully terminate and inform the user if they're not using the required svn.

I'd rather just release 3.0.33, need to decode a few last remaining flags for reference records.

  • Like 1
Link to comment
Share on other sites

I'd rather just release 3.0.33, need to decode a few last remaining flags for reference records.

 

Ok, that'd be great!  I've been really looking forward to seeing this version publicly released!

Link to comment
Share on other sites

Uploaded new version.

TES5Edit now has proper record header flags depending on record types, also references flags depend on their base objects. For example REFR of LIGH has "Casts Shadows", ACHR has "Starts Dead", etc.

  • Like 1
Link to comment
Share on other sites

hi , i was using 3.0.32 now i switched to 3.033 , i accessed one of my files , wanted to change a value under a "current follower faction" entry , now i find that i can't do that anymore , was changing it to 255 , it's always turning back to -1 ! .

Link to comment
Share on other sites

ok, thanks .

how can i rebuild the form id list if i deleted it ?

Deleted what? Rebuild what list? You asked only about faction rank value which is signed now in 3.0.33.

  • Like 1
Link to comment
Share on other sites

hi , i was using 3.0.32 now i switched to 3.033 , i accessed one of my files , wanted to change a value under a "current follower faction" entry , now i find that i can't do that anymore , was changing it to 255 , it's always turning back to -1 ! .

It is -1 in the CK for some factions like the Follower factions, therefore it was changed from unsigned to signed.

ok, thanks .

how can i rebuild the form id list if i deleted it ?

Once it's deleted it's gone, you would need to restore a backup.
Link to comment
Share on other sites

Uploaded new version with minor fixes. Upped version number to 3.1.0 as proposed by Elminster, this will be an official nexus release version if nobody reports issues in the next few days.

hi , can you explain a bit how the search system works , is it possible to search for an id by beginning with the name like typing "nazeem" somewhere ?

Yes, you can search either by FormID or partial EditorID.
  • 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...