Jump to content

Wrye Bash - All Games


Utumno

Recommended Posts

On 11/20/2017 at 8:50 PM, Turija said:

EDIT:  I answered my own question.  After some testing, it appears that Wrye Flash's BSA Redirection is broken.  It makes the required ini changes but does not install a dummy bsa file into data directory.  After turning off BSA Redirection in Wrye Flash and installing Archive Invalidation manually, all problems are solved.

I cant remember what I used for older Fallouts, probably FOMM, but that fork of Wrye Flash is someone elses work and not part of this project.

Wrye Flash in this topic refers to Fallout 4 Wrye Flash which this project is developing (and does not need BSA Redirection for that game)

(Just posting this to clarify for anyone else reading who may be confused by including Valda's Flash in this dev topic)

 

C1AHMne.png

Link to comment
Share on other sites

On 11/20/2017 at 12:50 PM, Turija said:

EDIT:  I answered my own question.  After some testing, it appears that the old Fallout 3’s Wrye Flash's BSA Redirection is broken.  It makes the required ini changes but does not install a dummy bsa file into data directory.  After turning off BSA Redirection in Wrye Flash and installing Archive Invalidation manually, all problems are solved.

Any suggestions?

 

Mod managers such as NMM, Wrye Flash only provide the means with which to fool the game into doing what you want. Valda based his version of of 295 so it's very old. If you can get NMM or another mod manager to add BSA redirection then do it that way. Even if I updated Valda's version to make/copy dummy BSA file (it's probably just doing it wrong) all that would do is copy the file to the Data folder. It would still not be forcing Fallout 3 to do what you want. You might have to have the alternate folders like you created anyway. I may not have time to look into this but I'll test it a bit and see what I can do.

Valda's fork is the current Fallout 3 and Fallout NV version because it provides all the available patcher functionality Valda created. The current Wrye Bash version from this thread, even with partial (Beta) FO3/FNV support still needs much work to allow all of the patchers to be active that Valda offers.

Link to comment
Share on other sites

I sure missed couple things - let me know. IIUC this last bashed patch issue boiled down to a badly ported mod.

Meanwhile as I smooth out the esl work for stable I realized that the bsa conflicts detection ignored esl activated bsas (it only looks at active bsas). There was a report recently - was it esl related ? Since I revisit this code anyway what should it do exactly ? ( @alt3rn1ty I think you had talked about bsa conflicts before)

@Sharlikran your fix in SoundPatcher had me wondering on graphics patcher - uses similar logic, does it have similar issues ?

Link to comment
Share on other sites

Q1 - Yep badly ported mod .. But I left it hanging in case you wanted to look into it to prevent Bash going wibble in those case (not only the CTD after the Bashed Patch was rebuilt, but the random behaviour of sometimes including records .. and the next time not, which was weird), although it might be worth leaving it as an indicator that someone has such a bad mod in their Load Order?.

Edit : Might be worth grabbing a copy of the bad mod version 1.2.1 now, before it gets fixed (Hopefully anyway, I left a bug report for the author), so you can see what it does.

 

Reference BSA conflicts, my report was similar to someone else more recently where we both forgot that conflict means a difference in file CRC, where they are exactly the same there is no conflict because it does not matter which one wins ..

.. Otherwise I'm not sure what you refer to for ESLs, for me its a complication of the load order too far, which is also not necessary, so I am treating the idea like a Frankenstein monster to be beaten off with pitch forks.

.. But : Is conflict detection for esls bsas going to be important, considering they will always load last at FE so will always win unless conflicting files are installed as loose files?

I also wonder what happens if two esl bsas have conflicting files within their respective bsas, random selection of winning resources at FE?. Maybe the .ccc files order also depicts what occurs in those circumstances. Thats Bethesdas mess though really.

Kill it with fire I say :) (sorry. not helpful). I guess this stuff will become more important later when manipulating info from BSAs becomes more developed.

Link to comment
Share on other sites

16 hours ago, alt3rn1ty said:

I cant remember what I used for older Fallouts, probably FOMM, but that fork of Wrye Flash is someone elses work and not part of this project.

Wrye Flash in this topic refers to Fallout 4 Wrye Flash which this project is developing (and does not need BSA Redirection for that game)

(Just posting this to clarify for anyone else reading who may be confused by including Valda's Flash in this dev topic)

  Reveal hidden contents

C1AHMne.png

Oops.  I got confused by the thread title "All Games" and didn't realize that fork was not part of the discussion here.  Sorry.

10 hours ago, Sharlikran said:

Mod managers such as NMM, Wrye Flash only provide the means with which to fool the game into doing what you want. Valda based his version of of 295 so it's very old. If you can get NMM or another mod manager to add BSA redirection then do it that way. Even if I updated Valda's version to make copy/dummy BSA file (it's probably just doing it wrong) all that would do is copy the file to the Data folder. It would still not be forcing Fallout 3 to do what you want. You might have to have the alternate folders like you created anyway. I may not have time to look into this but I'll test it a bit and see what I can do.

Valda's fork is the current Fallout 3 and Fallout NV version because it provides all the available patcher functionality Valda created. The current Wrye Bash version from this thread, even with partial (Beta) FO3/FNV support still needs much work to allow all of the patchers to be active that Valda offers.

Thanks for the reply.  Yeah, I noticed that version of Wrye Flash was pretty old when I tried to change install order and load order and instead of dragging and dropping I had to right click and type in numbers.  I wondered whether the BSA Redirection from that old version would work even before I installed but couldn't find anything definitive on it, I when I asked about it  on a Fallout 3 thread I was told that it worked the same as any other form of BSA Redirection. 

Maybe instead of updating that old version to provide proper BSA Redirection, are you able to just add a notice on the front description page on the Nexus that alerts people that they should use another form of BSA Redirection with that version of Wrye Flash?  That may help others from suffering similar confusion.

 

EDIT:  You are correct about being able to drag and drop after sorting once by modified date.  Drag and drop sorting now works for me.  Thanks for pointing that out,  It didn't work the first time and I never thought to try again.

Link to comment
Share on other sites

5 hours ago, Utumno said:

@Sharlikran your fix in SoundPatcher had me wondering on graphics patcher - uses similar logic, does it have similar issues ?

It might have a similar issue depending on the mod. I haven't seen any reported. Graphics is a bit more involved though with Fid Types and Model Attrs but I don't understand those declarations exactly so I can't elaborate on it.  Why?  Were you thinking of just making a list comprehension from the dictionary keys?  If you do then only for the Longs Types from the patchers.

Link to comment
Share on other sites

4 hours ago, Turija said:

Yeah, I noticed that version of Wrye Flash was pretty old when I tried to change install order and load order and instead of dragging and dropping I had to right click and type in numbers.

Maybe instead of updating that old version to provide proper BSA Redirection

I can drag and drop.  I did have to sort once by modified date and then back to order, but it works.  If you want to discuss it further just post in Valda's comments section.

I don't like a lot of notes about things because nobody reads them. I'd rather look into it and see if it's a simple fix. I have limited Python knowledge but I might be able to update that at least.

Link to comment
Share on other sites

22 hours ago, Utumno said:

Meanwhile as I smooth out the esl work for stable I realized that the bsa conflicts detection ignored esl activated bsas (it only looks at active bsas). There was a report recently - was it esl related ? Since I revisit this code anyway what should it do exactly ? ( @alt3rn1ty I think you had talked about bsa conflicts before)

 

21 hours ago, alt3rn1ty said:

I also wonder what happens if two esl bsas have conflicting files within their respective bsas, random selection of winning resources at FE?. Maybe the .ccc files order also depicts what occurs in those circumstances. Thats Bethesdas mess though really.

 

I've actually been doing some testing with ESL files and load order: basically I've taken all of my texture mods, merged them into single BAIN packages, then packed them into 8 different BSA files based on what they contain.  I'm loading these with dummy ESL files.  Here's a screenshot of how I have them set up (actually no, I need to reorder 005 and 006 oops):

mertz-esls-loading.JPG.f11aceae33650d1a679bf9fdb13a23be.JPG

So far everything works fine and I haven't noticed anything weird clobberings, although there could be some fringe cases that I'm not aware of due to there being literally thousands of files involved. I've also been testing with using dummy ESL files for anything that either installed as loose files (Leanwolf's Talos mod) or was load order agnostic like the iHud plugin.

With that said, @Utumno I'm getting a bugcheck in the newest (22 Nov) WIP build which may be of interest to this work:

Spoiler

Wrye Bash starting
Using Wrye Bash Version 307
OS info: Windows-10-10.0.16299
Python version: 2.7.14
wxPython version: 2.8.12.1 (msw-unicode)
input encoding: UTF8; output encoding: None; locale: ('en_US', 'cp1252')
filesystem encoding: mbcs
Using scandir 1.6
bash.py  316 _main: Searching for game to manage:
bush.py   76 _supportedGames: Detected the following supported games via Windows Registry:
bush.py   78 _supportedGames:  Oblivion: D:\Games\Steam\steamapps\common\Oblivion
bush.py   78 _supportedGames:  Skyrim Special Edition: C:\SteamLibrary\steamapps\common\Skyrim Special Edition
bush.py   78 _supportedGames:  Fallout4: D:\Games\Steam\steamapps\common\Fallout 4
bush.py  136 _detectGames: Detecting games via the -o argument, bash.ini and relative path:
bush.py  142 _detectGames: Set game mode to Skyrim Special Edition based on sOblivionPath setting in bash.ini:  C:\SteamLibrary\steamapps\common\Skyrim Special Edition
bush.py  156 __setGame:  Using Skyrim Special Edition game: C:\SteamLibrary\steamapps\common\Skyrim Special Edition
testing UAC
mods_metadata.py  227 __init__: Using LOOT API version: 0.10.1
Traceback (most recent call last):
  File "bash\balt.py", line 1730, in OnItemSelected
    self._select(modName)
  File "bash\basher\__init__.py", line 979, in _select
    super(ModList, self)._select(modName)
  File "bash\balt.py", line 1731, in _select
    def _select(self, item): self.panel.SetDetails(item)
  File "bash\basher\__init__.py", line 159, in SetDetails
    def SetDetails(self, fileName='SAME'): self._setDetails(fileName)
  File "bash\basher\__init__.py", line 157, in _setDetails
    self.detailsPanel.SetFile(fileName=fileName)
  File "bash\basher\__init__.py", line 1338, in SetFile
    self.uilist.SetFileInfo(self.modInfo)
  File "bash\basher\__init__.py", line 380, in SetFileInfo
    self.PopulateItems()
  File "bash\balt.py", line 1817, in PopulateItems
    self.SortItems()
  File "bash\balt.py", line 2052, in SortItems
    items = self._SortItems(column, reverse)
  File "bash\balt.py", line 2098, in _SortItems
    for lamda in self._extra_sortings: lamda(self, items)
  File "bash\basher\__init__.py", line 280, in _sortEsmsFirst
    items.sort(key=lambda a: not self.data_store[a].is_esml())
  File "bash\basher\__init__.py", line 280, in <lambda>
    items.sort(key=lambda a: not self.data_store[a].is_esml())
AttributeError: MasterInfo instance has no attribute 'is_esml'
Traceback (most recent call last):
  File "bash\balt.py", line 1730, in OnItemSelected
    self._select(modName)
  File "bash\basher\__init__.py", line 979, in _select
    super(ModList, self)._select(modName)
  File "bash\balt.py", line 1731, in _select
    def _select(self, item): self.panel.SetDetails(item)
  File "bash\basher\__init__.py", line 159, in SetDetails
    def SetDetails(self, fileName='SAME'): self._setDetails(fileName)
  File "bash\basher\__init__.py", line 157, in _setDetails
    self.detailsPanel.SetFile(fileName=fileName)
  File "bash\basher\__init__.py", line 1338, in SetFile
    self.uilist.SetFileInfo(self.modInfo)
  File "bash\basher\__init__.py", line 380, in SetFileInfo
    self.PopulateItems()
  File "bash\balt.py", line 1817, in PopulateItems
    self.SortItems()
  File "bash\balt.py", line 2052, in SortItems
    items = self._SortItems(column, reverse)
  File "bash\balt.py", line 2098, in _SortItems
    for lamda in self._extra_sortings: lamda(self, items)
  File "bash\basher\__init__.py", line 280, in _sortEsmsFirst
    items.sort(key=lambda a: not self.data_store[a].is_esml())
  File "bash\basher\__init__.py", line 280, in <lambda>
    items.sort(key=lambda a: not self.data_store[a].is_esml())
AttributeError: MasterInfo instance has no attribute 'is_esml'

 

To reproduce:

  • Launch Python WIP build,  Bash will open on the Mods tab.
  • Click any plugin. (note that the two plugins I clicked on where regular ESP files).

Attached are the blank ESL plugin I use, and the ESP it was based off of in case those are helpful.

Blank SSE Plugin.esl

Blank SSE Plugin.esp

 

Link to comment
Share on other sites

Utumno, with your new WIP, I get this traceback this intant I click on the Bashed Patch in both Oblivion and Fallout 4:

 

 

 

 

Traceback (most recent call last):
  File "bash\balt.py", line 1730, in OnItemSelected
    self._select(modName)
  File "bash\basher\__init__.py", line 979, in _select
    super(ModList, self)._select(modName)
  File "bash\balt.py", line 1731, in _select
    def _select(self, item): self.panel.SetDetails(item)
  File "bash\basher\__init__.py", line 159, in SetDetails
    def SetDetails(self, fileName='SAME'): self._setDetails(fileName)
  File "bash\basher\__init__.py", line 157, in _setDetails
    self.detailsPanel.SetFile(fileName=fileName)
  File "bash\basher\__init__.py", line 1338, in SetFile
    self.uilist.SetFileInfo(self.modInfo)
  File "bash\basher\__init__.py", line 380, in SetFileInfo
    self.PopulateItems()
  File "bash\balt.py", line 1817, in PopulateItems
    self.SortItems()
  File "bash\balt.py", line 2052, in SortItems
    items = self._SortItems(column, reverse)
  File "bash\balt.py", line 2098, in _SortItems
    for lamda in self._extra_sortings: lamda(self, items)
  File "bash\basher\__init__.py", line 280, in _sortEsmsFirst
    items.sort(key=lambda a: not self.data_store[a].is_esml())
  File "bash\basher\__init__.py", line 280, in <lambda>
    items.sort(key=lambda a: not self.data_store[a].is_esml())
AttributeError: MasterInfo instance has no attribute 'is_esml'
 

With Fallout 4, I can still update the Bashed Patch, but with Oblivoin, the CBash patch update fails to continue.

Let me know what you need. :)

Link to comment
Share on other sites

Continuing on, I've leveraged a bit of information from another open source project to help fill out the data missing on the Fallout 4 side of the patcher.

This is for bash\games\fallout4\constants.py and concerns 'conditionFunctionData'.  I did my best to research the values to make sure everything was consistent. Fortunately it is very similar to the Skyrim data, so there were maybe only a dozen changes outside of the totally unique values.

Here's the Gist I created with the data.

It would still help to have a second or third set of eyes look over and validate the data.

@Sharlikran and @Utumno (I forgot to tag you guys) could you let me know if I'm way off on this? If not I may be able to flesh more stuff out.

EDIT: also the weird indentation in some places seems to have come from copying and pasting the data into the Gist.

Link to comment
Share on other sites

3 minutes ago, Supierce said:

Utumno, with your new WIP, I get this traceback this intant I click on the Bashed Patch in Fallout 4:

  Reveal hidden contents

 

 


Traceback (most recent call last):
  File "bash\balt.py", line 1730, in OnItemSelected
    self._select(modName)
  File "bash\basher\__init__.py", line 979, in _select
    super(ModList, self)._select(modName)
  File "bash\balt.py", line 1731, in _select
    def _select(self, item): self.panel.SetDetails(item)
  File "bash\basher\__init__.py", line 159, in SetDetails
    def SetDetails(self, fileName='SAME'): self._setDetails(fileName)
  File "bash\basher\__init__.py", line 157, in _setDetails
    self.detailsPanel.SetFile(fileName=fileName)
  File "bash\basher\__init__.py", line 1338, in SetFile
    self.uilist.SetFileInfo(self.modInfo)
  File "bash\basher\__init__.py", line 380, in SetFileInfo
    self.PopulateItems()
  File "bash\balt.py", line 1817, in PopulateItems
    self.SortItems()
  File "bash\balt.py", line 2052, in SortItems
    items = self._SortItems(column, reverse)
  File "bash\balt.py", line 2098, in _SortItems
    for lamda in self._extra_sortings: lamda(self, items)
  File "bash\basher\__init__.py", line 280, in _sortEsmsFirst
    items.sort(key=lambda a: not self.data_store[a].is_esml())
  File "bash\basher\__init__.py", line 280, in <lambda>
    items.sort(key=lambda a: not self.data_store[a].is_esml())
AttributeError: MasterInfo instance has no attribute 'is_esml'
 

 

Let me know what you need. :)

It isn't good that there's a bugcheck, but it is good to know that this isn't isolated to my machine. I was afraid I had broken something with my freakish ESL experiments. ;)

Link to comment
Share on other sites

1 minute ago, Beermotor said:

It isn't good that there's a bugcheck, but it is good to know that this isn't isolated to my machine. I was afraid I had broken something with my freakish ESL experiments. ;)

Yes, same here. I've just updated the post to include Oblivion. Fallout 4's patch update still works, but Oblivoiin's CBash fails after the bugcheck.

Link to comment
Share on other sites

Pushed a fix for that traceback - is_esml is a latest addition, turns out there were more patches for esl support. I hope I got them all now at least. Still a patch (the assumption that mod files extensions was esp and esm was hardcoded into Bash)

 

 

Link to comment
Share on other sites

2 hours ago, Utumno said:

Pushed a fix for that traceback - is_esml is a latest addition, turns out there were more patches for esl support. I hope I got them all now at least. Still a patch (the assumption that mod files extensions was esp and esm was hardcoded into Bash)

It still errors out, but with a different traceback:



Traceback (most recent call last):
  File "bash\balt.py", line 1869, in DoItemMenu
    self.itemMenu.PopupMenu(self,Link.Frame,selected)
  File "bash\balt.py", line 2326, in PopupMenu
    link.AppendToMenu(menu,parent,*args)
  File "bash\balt.py", line 2616, in AppendToMenu
    menuItem.Enable(self._enable())
  File "bash\basher\mod_links.py", line 1452, in _enable
    if minfo.is_esl() or minfo.isInvertedMod() or minfo.isEsm() != \
  File "bash\bosh\__init__.py", line 602, in isInvertedMod
    u'isInvertedMod: %s - only esm/esp allowed' % self.name.ext)
bash.exception.ArgumentError: isInvertedMod: .esp - only esm/esp allowed

Link to comment
Share on other sites

9 hours ago, Supierce said:

It still errors out, but with a different traceback:

  Hide contents

 

 


Traceback (most recent call last):
  File "bash\balt.py", line 1869, in DoItemMenu
    self.itemMenu.PopupMenu(self,Link.Frame,selected)
  File "bash\balt.py", line 2326, in PopupMenu
    link.AppendToMenu(menu,parent,*args)
  File "bash\balt.py", line 2616, in AppendToMenu
    menuItem.Enable(self._enable())
  File "bash\basher\mod_links.py", line 1452, in _enable
    if minfo.is_esl() or minfo.isInvertedMod() or minfo.isEsm() != \
  File "bash\bosh\__init__.py", line 602, in isInvertedMod
    u'isInvertedMod: %s - only esm/esp allowed' % self.name.ext)
bash.exception.ArgumentError: isInvertedMod: .esp - only esm/esp allowed
 

 

Same here with the exact same bugcheck.

Link to comment
Share on other sites

307.201711250133

Fixes bugs with esl load order handling - we still don't exactly know what's the "handling" part as far as the game is concerned - I assumed based to discussions here that esls must load with esms and that only esl extension is considered (not the flag)

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Thanks Utumno! Downloading now!!

 

On another note..  I've done quite a bit of searching, but haven't been able to come up with an answer that appears correct or current. Can anyone tell me what, if any, advantage(s) there are to using the Pythong version over the standalone? I've had people ask this question a couple of times in various places and haven't been able to come up with a good answer.

Also, it's been annoying that I can't pin Wrye Bash to the Start bar and one-click launch, because Win10 interprets it as a link to Python & opens the Python Shell. I can't add it to the Start Menu either. This is true also of Steam game shortcuts in the Start menu, so maybe it's a Windows thing? If anyone knows a workaround to this, I'd be grateful.

5a18b95000b7c_StartMenu.thumb.png.0a5e21c3f40f95eb02c59296f3fb4f8e.png

Thanks!

Edit: @Utumno Dropbox is empty. Assuming you're packing & uploading? I'll grab the bleeding edge "wip.zip" in the mean time.  Also, just curious "307.201711250133", does this date/time stamp mean it's 1:33 AM on 11/25/17 where you are, or is there a versioning thing going on? I guess I just assumed you were in North America somewhere. You don't have to respond if you're concerned about privacy, I was just curious. :)

Link to comment
Share on other sites

11 hours ago, RavenMind said:

On another note..  I've done quite a bit of searching, but haven't been able to come up with an answer that appears correct or current. Can anyone tell me what, if any, advantage(s) there are to using the Python version over the standalone? I've had people ask this question a couple of times in various places and haven't been able to come up with a good answer.

I've learned a bit about this while learning to build releases, so I'll try to answer. If I'm wrong @Utumno can correct me. :)

The executable (standalone) version is created by what they call "Freezing" the Python program, meaning the .exe file you click on is actually a Python interpreter slightly modified to look only at the source code of the app it is bundled with. The advantage is the .exe file is self-contained and does not require the machine running it to have a Python interpreter and all of the supporting libraries installed.  The .exe is made out of python.exe so theoretically the performance should be identical.

Since Python is an interpreted language the quickest boost to performance comes from moving as much code into C libraries (or someday maybe some other compiled language like Rust) as possible, such as is the case with 'Scandir' and cBash.

11 hours ago, RavenMind said:

Also, it's been annoying that I can't pin Wrye Bash to the Start bar and one-click launch, because Win10 interprets it as a link to Python & opens the Python Shell. I can't add it to the Start Menu either. This is true also of Steam game shortcuts in the Start menu, so maybe it's a Windows thing? If anyone knows a workaround to this, I'd be grateful.
 

It is a Windows file association thing. Make sure .py files are associated with the special Windows Python interpreter (e.g. C:\python27\pythonw.exe) instead of plain old python.exe.

Dropbox is showing as empty for me too, but it could be an upload failure or a problem with Dropbox's CDN.

Link to comment
Share on other sites

Yep standalone and python should be functionally identical - modulo extra complexities that do arise because of packing to an exe. However I prefer users use the python version as this is updated faster and can be tweaked right in the source files if need be. In general consider standalone and python equivalent - that is no need to try to find if a bug is in one of them, it will be in both. Only if the bug keeps eluding (for a couple months to years) we should look at standalone vs python.

Yep timestamps - europe :P

Link to comment
Share on other sites

15 hours ago, RavenMind said:

Edit: @Utumno Dropbox is empty. Assuming you're packing & uploading? I'll grab the bleeding edge "wip.zip" in the mean time.  Also, just curious "307.201711250133", does this date/time stamp mean it's 1:33 AM on 11/25/17 where you are, or is there a versioning thing going on? I guess I just assumed you were in North America somewhere. You don't have to respond if you're concerned about privacy, I was just curious. :)

It's there now. Wrye Bash 307.201711250133

Link to comment
Share on other sites

16 hours ago, Utumno said:

307.201711250133

Fixes bugs with esl load order handling - we still don't exactly know what's the "handling" part as far as the game is concerned - I assumed based to discussions here that esls must load with esms and that only esl extension is considered (not the flag)

I haven't had long using it but nothing bad to report so far, all three (SSE / FO4 / OBL) bug dumps are clean. Just doing the usual round of go through all functions and see if I can make anything fall over, will continue over next few days.

Link to comment
Share on other sites

Thank you guys, I appreciate the responses!

7 hours ago, alt3rn1ty said:

I haven't had long using it but nothing bad to report so far, all three (SSE / FO4 / OBL) bug dumps are clean. Just doing the usual round of go through all functions and see if I can make anything fall over, will continue over next few days.

Same.

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