Jump to content

fireundubh

Mod Author
  • Posts

    350
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by fireundubh

  1. BROKEN. WAIT FOR V1.3.8. v1.3.7 is up. Changelog: Requires xEdit svn1872 or later. Download here.In xEdit, "show values of flags and enumerations" must be disabled. This option is disabled by default.C.Name, C.Music, and several other tags were not generating correctly. They are now.Internal: ConflictAllForMainRecord and ConflictAllForElements are used to determine which records to evaluate.Internal: GetElement has replaced ElementBySignature, ElementByName, ElementByPath, and ElementByIP.Internal: Evaluate is a wrapper for Validate that uses GetElement. Less opportunity for typos.Internal: Flags are evaluated with the new xEdit function FlagValues. No more GetNativeValue errors!Internal: Most debug messages are produced by ShowDebugMessagesFromString or ShowDebugMessagesFromElement. Mouthfuls, argh.With the FlagValues function, you should also see less tags. For example: v1.3.6: YUP - Base Game + All DLC.esm: Suggested tags: {{BASH:Actors.ACBS,Actors.DeathItem,C.Owner,C.Water,Delev,Destructible,Factions,Graphics,Hair,Invent,Names,Relations,Relev,Scripts,SpellStats,Stats}} v1.3.7: YUP - Base Game + All DLC.esm: Suggested tags: {{BASH:C.Owner,Delev,Destructible,Graphics,Hair,Invent,Relev,SpellStats,Stats}} Remember to load only one plugin at a time. The plugin for which you want to generate tags should be the last plugin in the xEdit load order.
  2. Known issue: v1.3.6 and below generate too many tags and some validators are broken. v1.3.7 resolves these issues in large part by reducing the risk of programmer error, by using xEdit's conflict detection functions to determine what elements to compare, and by using a universal GetElement function that automatically determines whether to use ElementBySignature, ElementByName, or ElementByPath.
  3. A new slogan for Wrye Bash: "Let's just rewrite it."
  4. I don't understand your use of the word "mitigated" above. If you want me to ignore an element, don't mention it. If you want me to process an element, list them like you have. If you want me to remove an element, just tell me you want it removed. As for unused and unknown elements, I can instruct my validator to ignore elements that are named so. I don't think there are any "hidden data" elements though. Good luck with Wrye Bash! I'd help since Python is pretty easy, but the Wrye Bash source code is a mess and who knows what the file names mean. I guess you need a Python IDE to figure out how everything fits together. Awesome! Thank you!
  5. So, first of all, you want to use an existing or new function if you need more than one validator. Validate() is also recursive up to 5 levels, so 'Model' would look at MODL, MODT, MODS, etc. If you need one validator: if (sig = 'STAT') then Validate(ElementByPath(e, 'DNAM\Material'), ElementByPath(m, 'DNAM\Material'), tag, false);If you need two or more validators: if (sig = 'STAT') then begin Validate(ElementByName(e, 'Model'), ElementByName(m, 'Model'), tag, false); Validate(ElementByPath(e, 'DNAM\Material'), ElementByPath(m, 'DNAM\Material'), tag, false); end;If you had a lot of DNAM elements to look at: if (sig = 'STAT') then begin d := ElementBySignature(e, 'DNAM'); dm := ElementBySignature(m, 'DNAM'); Validate(ElementByName(e, 'Model'), ElementByName(m, 'Model'), tag, false); Validate(ElementByName(d, 'Max Angle (30-120)'), ElementByName(dm, 'Max Angle (30-120)'), tag, false); Validate(ElementByName(d, 'Material'), ElementByName(dm, 'Material'), tag, false); end;In a function, you'd change those bools to the debug variable, which is passed through that function. You can suggest things without writing any code, FYI. I'd imagine your time would be better spent on Wrye Bash development. ;)
  6. What's the result? What's the expected result? if IsSkyrim(game) then begin Validate(ElementBySignature(e, 'NAM8'), ElementBySignature(m, 'NAM8'), tag, debug); Validate(ElementBySignature(e, 'NAM9'), ElementBySignature(m, 'NAM9'), tag, debug); end;The Validate() function is a PITA. I'm going to rewrite it so that you have to type only: Validate(e, m, 'NAM8', tag, debug);There's really no reason for it to be the way it is right now. And if I can figure out a way to determine whether a Flags element is a Flags element, I'll make Validate() handle those, too, but DefType/DefTypeString returns Integer and that type covers too much ground. For EFSH, "almost anything" is in the documentation, so I just went with what was easiest for me to validate. Removed EDID for v1.3.7.
  7. I don't know what you're telling me. Result vs. Expected Result? ElementBySignature for signatures. ElementByName for names. ElementByPath for paths. Validate() doesn't work with flags, by the way. Effect Shaders are already handled in the CheckGraphics() function. I added NAM8 and NAM9 to v1.3.7 for Skyrim only. I don't want to go through the pain of string comparisons, regular expressions, and blah. Nobody uses descriptions anyway. Modders barely use the author field. I'll leave any discussion about how Wrye Bash handles tags to the developers.
  8. v1.3.6 is up. Added init prompt: yes = write tags to header, no = suggest tags only, abort = terminate scriptDestructible: Fixed error when the DEST element doesn't exist in the master record
  9. So, can we get a general xEdit Support forum? There's no place to talk about xEdit scripting. Trying to talk to other scripters via the Nexus messenger is hard due to inbox quota limits, the Nexus comments are useless because code is replaced with ******* smilies, Bethsoft's community team closes *active* threads to inflate their KPIs, and Github doesn't even have private messaging anymore.
  10. Known issue: - Destructible tag detection sometimes fails because of the recent change to the validation logic (fixed in v1.3.6) I don't want to release 1.3.6 yet. Working on something else. Here's the patch. Just make the CheckDestructible() function look like this: {==================================================================} // Destructible function CheckDestructible(e, m: IInterface; debug: boolean): integer; var d, dm: IInterface; begin tag := 'Destructible'; d := ElementByName(e, 'Destructable'); dm := ElementByName(m, 'Destructable'); if Assigned(d) <> Assigned(dm) then begin AddTag(tag); exit; end; Validate(ElementByPath(d, 'DEST\Health'), ElementByPath(dm, 'DEST\Health'), tag, debug); Validate(ElementByPath(d, 'DEST\Count'), ElementByPath(dm, 'DEST\Count'), tag, debug); if GetNativeValue(ElementByPath(d, 'DEST\Flags')) <> GetNativeValue(ElementByPath(dm, 'DEST\Flags')) then begin AddTag(tag); exit; end; Validate(ElementByPath(d, 'Stages'), ElementByPath(dm, 'Stages'), tag, debug); end;
  11. Thanks, zilav. I saw that here while looking into Kelmych's problem: // if record overrides several masters, then get the last one if OverrideCount(m) > 1 then m := OverrideByIndex(m, OverrideCount(m) - 2); Note to everyone: for now, don't load all of your plugins at once when testing. Load only the plugin you want to test. I'll change this behavior soon enough though. These are the results I get: jsawyer.esp: Added tags to header: {{BASH:Actors.ACBS,Actors.Stats,Delev,Graphics,Invent,Relev,Stats,WeaponMods}}
  12. v1.3.5 is up. The primary change was to the validation logic. The script now checks if the processed record exists first rather than second. Sounds stupidly simple, right? Well, the original script didn't do that, so I guess I carried over a bug. There should be less false positives now. Again, we're still testing, so verify suspicious tags. You can do that by turning on the respective debug logging options and looking at the triggering records. Smoke tests: YUP - Base Game + All DLC.esm: Added tags to header: {{BASH:Actors.ACBS,Actors.DeathItem,C.Climate,C.Light,C.Owner,C.Water,Delev,Destructible,Factions,Graphics,Hair,Invent,Names,Relev,Scripts,SpellStats,Stats,WeaponMods}} FCOMaster.esm: Added tags to header: {{BASH:Actors.ACBS,Actors.AIData,Actors.AIPackages,Actors.Stats,Destructible,Eyes,Factions,NpcFaces}} OldWorldBlues.esm: Added tags to header: {{BASH:Actors.Stats,C.Light,Delev,Graphics,Scripts,Stats}}
  13. Okay, open your entire load order in FNVEdit. Hold Shift when you click OK to skip building references. Then go down through the highlighted ARMO and NPC_ records in that mod, making note of each file that those records override. Then give me a list of those files and their associated mods, so I can go hunt them down and get them into my load order.
  14. I'm getting the same result that I was getting. Try this version of the script.
  15. "[0] Scripts: " There should be the full path to the element after the colon, but there isn't, which means the SCRI element isn't being assigned. I need the ESP to see what's going on. You don't seem to have the same one that I downloaded from the Nexus. Put the ESP up on MediaFire.
  16. Here you go: fireundubh - Reduce Water Height Conflicts v0_1.pas This script will copy the winning override's water height value to the processed record if the processed record is not flagged Has Water and yet still defines a water height.
  17. If you change those falses to true, the script will tell you which records are triggering the tag. I need you to either copy and paste the output here or send me the file.
  18. Go to line 1075 and change false to true. Go to line 1083 and change false to true. Then run the script on that plugin again. Tell me what messages are output then.
  19. Give me a link to the mod. I can't find it. e: I found it. BornAgain Outcast v3.esp: Added tags to header: {{BASH:Actors.Stats,Delev,Stats}}Same results for the Main and No Bonus ESP. When you applied the script, did you apply the script on only one plugin?
  20. v1.3.4 hotfix is up: Records with the Deleted record flag no longer throw an error, which was a problem with the original scriptDebug: Implemented GetRecordFlag and GetTemplateFlag functions to facilitate debuggingYou don't need to update if you don't have any mods with deleted records. enclavebunker.esp (For the Enclave) is one mod that has Deleted records. Undelete and Disable References won't circumvent this problem.
  21. v1.3.3 is up. Changelog: Actors.ACBS: ACBS\Flags flags are now validatedActors.AIData: AIDT\Buys/Sells and Services flags are now validatedDestructible: Expanded validation to all applicable record typesSpecial handling for CREA and NPC_ record types to circumvent xEdit bugImproved performance overall due to special handling Smoke tests completed without errors: OldWorldBlues.esm: Added tags to header: {{BASH:Actors.Stats,C.Light,Delev,Destructible,Graphics,Invent,NpcFaces,Scripts,Stats}} YUP - Base Game + All DLC.esm: Added tags to header: {{BASH:Actors.ACBS,Actors.DeathItem,C.Light,C.Owner,C.Water,Delev,Destructible,Factions,Graphics,Hair,Invent,Names,Relations,Relev,Scripts,SpellStats,Stats,WeaponMods}} FCOMaster.esm: Added tags to header: {{BASH:Actors.ACBS,Actors.AIData,Actors.AIPackages,Actors.CombatStyle,Actors.Stats,Destructible,Eyes,Factions,NpcFaces,Scripts}}
  22. Wait for v1.3.3 please. Almost there. I have to implement a number of flag checks to work around an xEdit bug. If the Use Script template flag is used in a CREA or NPC_ records, the SCRI element shouldn't be validated. I also just found a Wrye Bash bug with the new Destructible tag, which I will also expand to cover more record types. The "NPC" record type is missing the underscore, so the Destructible tag won't be processed for NPC_ records by Wrye Bash. self.longTypes = set(('ACTI','ALCH','AMMO','BOOK','CONT','CREA','DOOR','FURN','KEYM','MISC','NPC','WEAP','PROJ','MSTT','TERM','TACT','IMOD'))
  23. No, they don't need to be processed for tagging. I just put together a list of which elements are controlled by which template flags. 0x0 If no template flags set, hide TPLT 0x1 Use Traits ACBS\Karma (Alignment), ACBS\Disposition Base, INAM, VTCK, RNAM, CNAM, ZNAM, NAM6, NAM7 0x2 Use Stats ACBS\Flags, ACBS\Fatigue, ACBS\Level, ACBS\Calc min, ACBS\Calc max, ACBS\Speed Multiplier, DATA\Base Health 0x4 Use Factions Factions 0x8 Use Actor Effects List Actor Effects, EITM, EAMT 0x16 Use AI Data ACBS\Barter gold, AIDT 0x32 Use AI Packages Packages 0x64 Use Model/Animation Model, Destructable, Head Parts, HNAM, LNAM, ENAM, HCLR, NAM4, FaceGen Data 0x128 Use Base Data FULL 0x256 Use Inventory Items 0x512 Use Script SCRIIt'd be nice if xEdit ignored these elements per the template flag rules by default, so I wouldn't have to write so many flag checks.
  24. xEdit has an Options page. To get to the Options page, right-click in the file/records tree, Other > Options. You have to turn these off to see more elements.
  25. v1.3.2 is up. All (known/remembered) flag elements are properly checked now, so tags like C.RecordFlags should validate.Actors.AIData and Actors.AIPackages validate correctly, too.The Destructible validator should no longer throw any errors.@Sharlikran: Yup, latest svn build of xEdit always. I'll get to Oblivion support a bit later. Thanks. edit: TODO: Add more flag checks for NPC_ and CREA records, but not at 5am.
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.