pknight Posted June 1, 2016 Share Posted June 1, 2016 With the newest version, whats the best way to search for a questscript that relates to a specific quest id? Link to comment Share on other sites More sharing options...
Roy Batty Posted June 1, 2016 Share Posted June 1, 2016 The UI seems to be a lot slower in the latest release, particularly when scrolling through worldspace records. Link to comment Share on other sites More sharing options...
zilav Posted June 2, 2016 Author Share Posted June 2, 2016 The UI seems to be a lot slower in the latest release, particularly when scrolling through worldspace records. That's strange, there were no changes that could do that. Even the new "stick to" option does nothing unless you enable it manually. If you have mods that contain a lot of records referencing them, then scrolling will be slower due to updates of "Referenced by" list. Link to comment Share on other sites More sharing options...
fireundubh Posted June 2, 2016 Share Posted June 2, 2016 That's strange, there were no changes that could do that. Even the new "stick to" option does nothing unless you enable it manually. If you have mods that contain a lot of records referencing them, then scrolling will be slower due to updates of "Referenced by" list. I haven't looked at the source, but is xEdit preloading the Referenced By tab? If so, I think there are two versions of an optimization you could do: only count the number of references, don't preload the data into the control, and load the data into the control only when the user accesses the tab; or determine whether there is at least one reference, replace the count with an asterisk to indicate that there are references, don't preload the data into the control, and load the data and update the count only when the user accesses the tab. I'm not sure how much of an optimization that would be though. Link to comment Share on other sites More sharing options...
Arthmoor Posted June 3, 2016 Share Posted June 3, 2016 Too awhile to get back to this, but your updates to the Tree LOD script fixed the problem I was having in Shor's Stone. So thanks, and you should stick that in the next xEdit update Link to comment Share on other sites More sharing options...
Arthmoor Posted June 3, 2016 Share Posted June 3, 2016 GAH! Actually nevermind, that didn't help one bit. Something else is going on here and I can't figure it out. Are trees not using the same quad map that object LOD uses or something? If I regenerate ALL tree LOD for Tamriel, patch it with your updated script, then load the game the LOD in front of the spot I saved is correct. If I then delete all tree LOD from my folder except for the two that should be in the quad affected by this, the tree LOD is wrong and they're sitting well above ground level. I don't get it. Any idea how I'd go about determining which files are actually correct for the area I'm editing? EDIT: Is there any possible way to manually edit the data in these BTT files? Link to comment Share on other sites More sharing options...
Arthmoor Posted June 4, 2016 Share Posted June 4, 2016 Ok. I figured it out. Sort of. After getting progressively more annoyed at the tree thing, I decided to go grab the vanilla one from the Skyrim BSA. Dropped that into the folder. Edited your tree script to simply write back values for every form ID except the 5 I needed to change, which I then let it change according to the logic you have established. That worked. The distance view is now correct and the 5 trees I actually touched are correctly handled as far as I can see. So I decided to throw out the file (after copying it to my distro folder for the mod of course) and start from scratch. I popped open the CK, generated tree LOD for a strictly vanilla data set. Dumped all but the one file I was testing. Ran your script on the newly generated CK file. Sure enough, tree LOD not where it belongs, sitting far too high above the ground. I saved the output of each of these to a text file. The vanilla file I hacked to change 5 trees has one set of values for the "Rot" while the vanilla one has an entirely different set and the errant LOD *ONLY* shows up after running your script on the file, not before. So something about how the "Rot" is being handled, at least for this quad (filename Tamriel.4.40.-16.BTT) isn't being handled right. I couldn't tell you what though cause it doesn't look to me like you're actually changing that but it's hard for me to know. for reference, this is what I did to the script you gave me: for t := 1 to NumTrees do begin x := reader.ReadSingle; y := reader.ReadSingle; z := reader.ReadSingle; rot := reader.ReadSingle; scale := reader.ReadSingle; formid := reader.ReadInteger; f := FileByLoadOrder(formid shr 24); r := RecordByFormID(f, LoadOrderFormIDtoFileFormID(f, formid), false); if not Assigned(r) then begin AddMessage('Can''t locate record with formid=' + IntToHex(formid, 8)); Result := False; Exit; end else if (Signature(r) <> 'REFR') or (Signature(LinksTo(ElementBySignature(r, 'NAME'))) <> 'TREE') then begin AddMessage('Record with formid=' + IntToHex(formid, 8) + ' in BTT file is not a reference of TREE'); Result := False; Exit; end else begin AddMessage('Int: ' + IntToStr(formid) + ' FormID: ' + IntToHex(formid, 8) + ' X: ' + IntToStr(x) + ' Y: ' + IntToStr(y) + ' Z: ' + IntToStr(z) + ' Rot: ' + IntToStr(rot) + ' Scale: ' + IntToStr(scale) + ''); if( formid = 674507 ) or ( formid = 674508 ) or ( formid = 674511 ) or ( formid = 674512 ) or ( formid = 674513 ) then begin AddMessage('I found one of the ones you want!'); r := WinningOverride(r); x := GetElementNativeValues(r, 'DATA\Position\X'); y := GetElementNativeValues(r, 'DATA\Position\Y'); z := GetElementNativeValues(r, 'DATA\Position\Z'); if ElementExists(r, 'XSCL') then scale := GetElementNativeValues(r, 'XSCL') else scale := 1.0; end; end; writer.WriteSingle(x); writer.WriteSingle(y); writer.WriteSingle(z); writer.WriteSingle(rot); writer.WriteSingle(scale); writer.Write(formid); writer.Write(reader.ReadInteger); // unknown int writer.Write(reader.ReadInteger); // unknown int end; These are the files that the hacks produced to check with: BTTOutputTest.7z Link to comment Share on other sites More sharing options...
Sharlikran Posted June 4, 2016 Share Posted June 4, 2016 I am using the Fo4Edit -View -Saves option and I want to look for properties that a script added to the save. The FormID in question is 00106DA2. So what should have happened is a mod added a FLST to that FormID. For example it has 12 entries, the script ran, and now there are 13 entries in the Form List. Where do I look for that? Changed Forms, or FormIDs? Can I filter for that or search of it? Link to comment Share on other sites More sharing options...
zilav Posted June 4, 2016 Author Share Posted June 4, 2016 Rot value isn't used at all by LOD since billboards are flat images and changing their rotation does nothing. I don't remeber now, but TES5LODGen even leaves it at 0 for all trees or fills with random angle. The script also doesn't handle Rot, it reads and writes it back unchanged as is. Compare LST files from vanilla game and after your generation, they must be identical otherwise you can't interchange BTT files. Maybe you have non vanilla _lod_flat.nif file that alters tree LOD generation in CK. Link to comment Share on other sites More sharing options...
Arthmoor Posted June 4, 2016 Share Posted June 4, 2016 I don't have any tree LOD meshes installed at all. Only whatever the CK comes with. I can see your code says it doesn't mess with the "Rot" value, whatever those mean, but nonetheless, running the file through the script produced a list of Rot values that were wrong and that file with the wrong values in it is what caused the incorrect tree height issue. I'm not even using an LST file so I have no idea what role that plays and all my tree LOD for every other village mod works fine. I really don't know how much more information I can give you to show that SOMETHING is obviously going wrong. Worst case though, I at least know how to dance around it if I ever run into this again. Link to comment Share on other sites More sharing options...
zilav Posted June 4, 2016 Author Share Posted June 4, 2016 I'm not even using an LST file so I have no idea what role that plays and all my tree LOD for every other village mod works fine. I really don't know how much more information I can give you to show that SOMETHING is obviously going wrong. Worst case though, I at least know how to dance around it if I ever run into this again. Rot value isn't used so it doesn't matter. I know what is wrong here - the CK. I forgot it's bugged overcomplicated LOD generation like a bad dream Link to comment Share on other sites More sharing options...
Arthmoor Posted June 4, 2016 Share Posted June 4, 2016 Well either way, I managed to poke it into submission. Probably a far fetched request, but would it ever be possible to offer some way to manually edit the contents of a BTT and then simply write the modified data back when you're done? Link to comment Share on other sites More sharing options...
zilav Posted June 4, 2016 Author Share Posted June 4, 2016 Well either way, I managed to poke it into submission. Probably a far fetched request, but would it ever be possible to offer some way to manually edit the contents of a BTT and then simply write the modified data back when you're done? There was a template for 101 Editor http://www.sweetscape.com/010editor/ to browse and edit btt files on official forum, but since Search doesn't work there it would be hard to find now. Link to comment Share on other sites More sharing options...
fireundubh Posted June 4, 2016 Share Posted June 4, 2016 There was a template for 101 Editor http://www.sweetscape.com/010editor/ to browse and edit btt files on official forum, but since Search doesn't work there it would be hard to find now. The old official forum? Search works there, but you have to log in. You can also search the new official forum, but the search engine sucks. http://forums.bethsoft.com/topic/1368378-tree-lod-btt-files-%E2%80%93-finding-a-solution-to-wall-of-trees-32-cell-problem/page-2?hl=%2B010+%2Btemplate#entry22012841 Link to comment Share on other sites More sharing options...
hlp Posted June 4, 2016 Share Posted June 4, 2016 I am using the Fo4Edit -View -Saves option and I want to look for properties that a script added to the save. The FormID in question is 00106DA2. So what should have happened is a mod added a FLST to that FormID. For example it has 12 entries, the script ran, and now there are 13 entries in the Form List. Where do I look for that? Changed Forms, or FormIDs? Can I filter for that or search of it? Unfortunately the display is pretty useless for forms. I need to restart working on that. And I did not look at all at the filtering possibilities. My recommendation here would be to xDump your save (using -df:42 to restrict data to FormList). Link to comment Share on other sites More sharing options...
Sharlikran Posted June 4, 2016 Share Posted June 4, 2016 Unfortunately the display is pretty useless for forms. I need to restart working on that. And I did not look at all at the filtering possibilities. My recommendation here would be to xDump your save (using -df:42 to restrict data to FormList). Would I use "fo4dump.exe -Saves -df:42" or what would I rename dump to? Link to comment Share on other sites More sharing options...
hlp Posted June 4, 2016 Share Posted June 4, 2016 This will work, but only once I actually decode FLST changed forms. I never remember I did do any forms yet in saves. Theatrically there are only 2 record there and the first is the flags that is common to all forms. EDIT: Definition updated. You can try compiling now. Link to comment Share on other sites More sharing options...
Kesta Posted June 4, 2016 Share Posted June 4, 2016 Could any of you (zilav ? ) provide some kind of IDLE explorer via a script since it's impossible to browse those in the CK ? Essentially grouping those belonging to the same .hkx, and linking sub/roots/action under some kind of tree. Whenever you have time and motivation for this obviously, that would just make the whole group a bit easier to apprehend. Edit : Nvm, the Idle Animations interface of the CK is actually good enough. would be nice to have a per-folder split, but that's good enough. Link to comment Share on other sites More sharing options...
fireundubh Posted June 5, 2016 Share Posted June 5, 2016 I have a script that changes the Form ID of a record based on the Next Object ID. Is there a way to tell xEdit to update linked records with the new Form ID when using SetLoadOrderFormID (similar to the Change Form ID dialog)? edit: This doesn't seem to work with VMAD references. VMAD retains the old Form ID. for i := 0 to ReferencedByCount(e) - 1 do CompareExchangeFormID(ReferencedByIndex(e, i), iOldFormID, iNewFormID); SetLoadOrderFormID(e, iNewFormID); edit: I tried logging the process: Updating: Vault111OverseersTerminal [TERM:000A0F1C] <- Override Updating: [:00000000] <- QUST VMAD edit: Not running CompareExchangeFormID yielded the right output: Updating: Vault111OverseersTerminal [TERM:000A0F1C] Updating: dubhAutoLootHolotapeQuest [QUST:01001014] edit: So, I guess I have to store this information in a list before working on it. edit: LOL. Now it's not updating Ref[0]. Applying script... Updating: Vault111OverseersTerminal [TERM:000A0F1C] Updating: dubhAutoLootHolotapeQuest [QUST:01001014] [Apply Script done] Processed Records: 1, Elapsed Time: 00:00 [00:00] Checking for Errors in [01] Auto Loot.esp [00:00] Vault111OverseersTerminal "Overseer's Terminal" [TERM:000A0F1C] [00:00] TERM \ Items \ Item \ CNTO - Item \ Item -> [01001013] < Error: Could not be resolved > [00:00] All Done! edit: The problem was twofold. I was setting the old Form ID with FormID() instead of GetLoadOrderFormID(), and I wasn't looping through the references in reverse. This works: iOldFormID := GetLoadOrderFormID(e); iNewFormID := StrToInt64('$' + sLoadOrder + sNextObjectID); for i := Pred(ReferencedByCount(e)) downto 0 do CompareExchangeFormID(ReferencedByIndex(e, i), iOldFormID, iNewFormID); SetLoadOrderFormID(e, iNewFormID); Link to comment Share on other sites More sharing options...
Mator Posted June 6, 2016 Share Posted June 6, 2016 fireundubh: You should view the source code of merge plugins and my experimental FormID compacting script. You need to also adjust the formIDs of overrides and there's a complete function in there for handling the renumbering of a FormID including all of its references and overrides. Note that when changing the FormIDs of overrides you'll get injected messages, and there doesn't seem to be a way to avoid it. https://www.reddit.com/r/skyrimmods/comments/4kxfo8/psa_compacting_form_id_space_research/ Link to comment Share on other sites More sharing options...
zilav Posted June 6, 2016 Author Share Posted June 6, 2016 xEdit doesn't renumber FormIDs of overrides as Mator mentioned. I added it to GUI renumbering only recently by request, however scripts call engine functions directly and hence my GUi code is bypassed anyway. You have to handle overrides yourself. Link to comment Share on other sites More sharing options...
fireundubh Posted June 6, 2016 Share Posted June 6, 2016 Thanks, guys. I just skip the overrides. Don't need to renumber them. Link to comment Share on other sites More sharing options...
alt3rn1ty Posted June 12, 2016 Share Posted June 12, 2016 Zilav I am currently using the update 3.1.3 of xEdit provided on FO4 Nexus ( FO4Edit 3.1.3 - bec9ac9 ) .. For UDRs and ITMs in Skyrim Master files Checking the results of my cleaning guide, the UDRs and ITMs still tally correct But the resulting file CRCs have all changed compaired with the last time I checked - Is this to be expected ? Old results New results Link to comment Share on other sites More sharing options...
zilav Posted June 12, 2016 Author Share Posted June 12, 2016 I changed what is included into ONAMs, xEdit had been doing it slightly wrong. Overridden persistent refs should not be included, but since the game loads all of them anyway I doub't it really matters. It is still a mystery what do they actually do. Link to comment Share on other sites More sharing options...
alt3rn1ty Posted June 12, 2016 Share Posted June 12, 2016 Okay I roughly understand what that is about, thank you for clearing it up, I thought I had missed a step in the automated cleaning process or something ( which did not make sense because I would not make such a mistake repeatedly in this process, especially when trying to keep the guide 100% accurate with current software versions in use ) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now