Jump to content


  • Content count

  • Joined

  • Last visited

About fireundubh

  • Rank

Recent Profile Visitors

294 profile views
  1. [RELz] AFKPexAnon - AFK Pex Anonymizer

    This information is there because this information is useful for debugging and version tracking in studios with many developers.
  2. [SITE] Buddah - A modding tools registry

    Other than the bash tag generator, answering scripting questions, and providing examples occasionally, I've done nothing with Oblivion. Sowwy.
  3. [SITE] Buddah - A modding tools registry

    The "xEditScripts" link near the bottom links to Sharlikran's repo, but I just wanted to say those are my scripts. I deleted my repo, I guess (???), so Sharlikran's fork lost the fork relationship. Some of my more polished xEdit scripts are here. I think I had planned to rework my entire repo (400-500 scripts) but never got around to it. My fork of xEdit, xEdit Pro, is not there, but it's severely behind xEdit right now. I have too many other distractions. Orvid's Caprica compiler for Fallout 4 Papyrus should be added. For non-Bethesda games: lslib for Divinity: Original Sin, Divinity: Original Sin Enhanced Edition, and Divinity: Original Sin 2
  4. [WIPz] TES5Edit

    The Editor ID is a string, so use Delphi's string functions to manipulate the string and Regular Expressions (RegEx) to match your pattern.
  5. [WIP] zEdit

    What's "and more"?
  6. Github Jump links

    This is not a feature of Markdown. Just hold Ctrl when you click the link.
  7. [WIPz] TES5Edit

    Yeah, zilav has told me before that ElementByPath works for signatures, but that hasn't been my experience, so I wrote a helper function so I didn't need to think about it. // -------------------------------------------------------------------- // Returns any element from a string // -------------------------------------------------------------------- function GetElement(const x: IInterface; const s: String): IInterface; begin if Length(s) > 0 then begin if Pos('[', s) > 0 then Result := ElementByIP(x, s) // ElementByIP requires matortheeternal's mteFunctions library else if Pos('\', s) > 0 then Result := ElementByPath(x, s) else if s = Uppercase(s) then Result := ElementBySignature(x, s) else Result := ElementByName(x, s); end; end; You can use my dubhFunctions library (which requires mteFunctions), or add this to your own projects without the ElementByIP condition (assuming you're not using mteFunctions). I also implemented a similar helper function in my xEdit Pro fork (xEdit is 200-300 commits ahead of my fork now) that supports all core ElementBy* functions: procedure IwbContainer_GetElement(var Value: Variant; Args: TJvInterpreterArgs); var Container: IwbContainerElementRef; Signature: TwbSignature; vElement: Variant; sElement: String; basicType: Integer; begin if Supports(IInterface(Args.Values[0]), IwbContainerElementRef, Container) then begin vElement := Variant(Args.Values[1]); basicType := VarType(vElement) and VarTypeMask; if (basicType = varString) or (basicType = varUString) then begin sElement := String(Args.Values[1]); // ElementByPath if Pos('\', sElement) > 0 then Value := Container.ElementByPath[sElement] // ElementBySignature else if sElement = Uppercase(sElement) then begin Signature := StrToSignature(sElement); Value := Container.ElementBySignature[Signature]; // ElementByName end else Value := Container.ElementByName[sElement]; // ElementByIndex end else Value := Container.Elements[Integer(Args.Values[1])]; end; end; VarType and VarTypeMask aren't supported in xEdit scripts by default, so unfortunately, you'd have to add this procedure to wbScriptAdapter.pas and compile xEdit yourself to use this. However, when I was modding and writing xEdit scripts, I actually began to prefer using the ElementBy* functions explicitly and directly for the clarity they provided.
  8. [WIPz] TES5Edit

    AddMessage takes a string argument and outputs that string to the information tab/console. See the link I posted for tables of functions and their return types. Also, looking at the xEdit source: ElementByPath will call ElementByName if the value is not a path. Neither ElementByPath nor ElementByName call ElementBySignature, so I don't see how they'd be able to get elements by signatures.
  9. [WIPz] TES5Edit

    You need to learn to debug your own scripts. Simplest way is to store any value retrieved with a function in a variable and print the values of those variables with AddMessage immediately after they're set. You also need more error handling. For example, if ElementBySignature(la, 'TPLT') gets an unassigned element, LinksTo will fail, and tpl will be null. LinksTo might throw an exception as well. So, you need to be sure to validate any data you pass forward. Also, keep this reference handy: https://www.creationkit.com/index.php?title=TES5Edit_Scripting_Functions In my experience, the ElementBy* functions are sensitive to the value type, so for example, you should be using ElementBySignature(la, 'TPLT') because 'TPLT' is a signature and not a path.
  10. [WIPz] TES5Edit

    http://www.delphibasics.co.uk/RTL.asp?Name=Random http://www.delphibasics.co.uk/RTL.asp?Name=RandomRange http://www.delphibasics.co.uk/RTL.asp?Name=Randomize I don't remember if the main branch of xEdit has these functions implemented. Just try them.
  11. [WIPz] TES5Edit

    This is better done in Papyrus. In fact, there are mods that already achieve what you want.
  12. Modding Tools Survey (zEdit)

    alt3rn1ty probably just doesn't want to opt into the Google intelligence network, or support Google after the diversity manifesto thing. *shrug*
  13. Wrye Bash - All Games

    The installer reads the path to Oblivion from the Windows registry. It isn't possible for the installer to treat the Oblivion path any differently from other paths. So, this is a data issue, not a code issue. Uninstalling and reinstalling Wrye Bash should resolve the issue, but if that doesn't work, the user needs to fix the path to Oblivion in the registry manually. The path to Oblivion in the registry can be found at one of these locations: HKLM\SOFTWARE\Bethesda Softworks\Oblivion HKLM\SOFTWARE\WOW6432Node\Bethesda Softworks\Oblivion
  14. Creation Club

    Cost of living indices in California range between 100 and 500. 100 is the national index. There is a lot of diversity: 463 - Beverly Hills; 428 - Rancho Santa Fe; 409 - Palo Alto; 324 - Cupertino; 291 - Coronado; 257 - Santa Monica / Carmel-by-the-Sea; 193 - Santa Barbara; 190 - San Mateo; 173 - San Jose; 169 - Huntington Beach; 146 - Oakland; 144 - San Diego; 141 - Anaheim; 135 - La Mesa; 121 - Pomona; 119 - Riverside; 117 - Compton; 114 - Sacramento; 107 - Fresno / Stockton; 106 - San Bernardino. I've lived all my life 15 miles from the coast in a suburb whose index is 151. $33K/year would be more than livable here.
  15. Creation Club

    California is a big place. Costs of living wildly differ throughout the state, and decrease as you move away from the coast and major cities. A base salary of $33K is practically poverty in the coastal parts of the Bay Area (where tech workers making six figures still have to cohabitate), but it's more than enough in many inland suburbs, especially for single adults making smart choices and living within their means.

Support us on Patreon!