Jump to content

[not a mod]: NV check version 0


Recommended Posts

This was supposed to be a "test to see if your mods have been fully installed" program. However, I have been continually frustrated by the design of FalloutNV (and other moddable games, but that would be off topic here).

 

One of the issues (that especially matters for a complicated set of mods like Sexout, but which can also matter when you are writing a mod) is that references can be missing or mangled. So, once upon a time, I wrote a little program to check for some missing references in a FalloutNV game.

 

And, a month ago, I gave up on it. (I do that a lot -- giving up, I mean.) The program is inefficient and incomplete, but that was not the problem. The problem was that there are so many junk records in the official game (where irrelevant content refers to files which do not exist -- especially fallout 3 files) that any "mod is not fully installed" problems would get lost in the noise.

 

Still, in the hands of a skilled user, this program might prove useful? In its current state the only use I can think of is for a modder to check their work before they release it.

 

Meanwhile here's a few release notes:

 

Requirements:

 

Python version 2.7

 

pywin32 needs to be installed in the python 2.7 instance you are using for this (if you have multiple pythons installed)

 

FNVDump.exe needs to be installed somewhere in your %PATH%

 

 

Inefficiencies: I am using FNVDump.exe to parse esm and esp files. The current release of FNVDump takes only one file name on its command line. This means that FalloutNV.esm gets parsed again for every file being analyzed. I think you should find something else to do while this is running. It also reads all relevant bsa files (to get their directories) before it reads the mods itself, but that's a trivial expense of time in comparison.

 

Incompletenesses:

 

0. The messages it generates were not designed with any thought to how they would be used. (I do not even know if this program has any uses.)

 

1. I am only checking .esp and .esm files for missing references to other files. I put this back on the shelf before I added support for the .nif family of files (and .nif files can have missing references to textures).

 

2. I was also going to include some heuristics to check .kf files against skeleton files, but that is currently pure vaporware.

 

3. I was also going to include something similar to deal with .fos (save) files.

 

4. When I read bsa files, I do not read in the whole file. This was necessary to prevent 32 bit python from crashing when it encountered "Fallout - Voices1.bsa". Fixing this would require either (a) using blocked reads instead of file-at-a-time reads [slow and complicated], or (B) emulating file-at-a-time read using a cover for mmap that uses the string features I use (faster and complicated -- and I think this would be fun to write, but its pointless for me if I am giving up on this concept of game config testing).

 

Future prognosis: I may never update this program again. I make some other kinds of "install checker", built on different philosophies and using different kinds of code, but that would not matter for this program. Note also that wrye bash and fomm have analogous kinds of code, though with different design philosophies behind that code.

Also fomm does not have source code available (and it crashes a lot when you get into using some of its detailed inspection mechanisms). Wrye bash has source code available but I feel that its design is horribly non-modular with no clear comments on code purposes (and you might feel the same way about my code).

 

 

This is a command line program.

 

Instructions:

 

1. Install the requirements (see above for list)

 

2. Test that everything has been installed:

 

 

...A. Start a command line.

...B. in the command line run "python". It should say Python 2.7.___ (with stuff replacing the blanks).

...C. in the python command line run "import _winreg". This should not give you any errors.

...D. in the python command line run "exit()" to get you out of python.

...E. run "FNVDump". This should give you a usage message (and should not give you a command not found message).

...F. run "python check.py". This should test everything that you have installed. It should open with lines like:

 

check version 2012-03-31 preliminary
FalloutNV is installed at c:\games\steam\steamapps\common\fallout new vegas\

(except listing your install location).

 

...and then it should go on to read a bunch of bsas and then your currently installed plugins. You can close the command line window if you like, or you can wait 10-15 minutes for this test to complete. This is just a test run, you are not expected to read the text in the window.

 

If you get a message that says "The system cannot find the file specified" that probably means that you did not install FNVDump.exe in your %PATH%. This causes a problem when the program changes directory to your fallout data directory -- if you installed FNVDump in your current directory check.py will not be able to find it after it changes directory...

 

If you see different kinds of errors in this test run, please tell me how you got them to occur (what your command line was) and please give me the error message and stack trace. (thanks!)

 

3. Instructions for use:

 

First, open the spoiler tag.

 

 

Second, be sure you have tested that you have installed the requirements for this program (that is the previous step in this message). That testing should help you understand how to use check.py.

 

python check.py >logfile.txt

will check your current installed falloutnv game for missing file references, building "logfile.txt" which has all of the messages and warnings from this program. It takes a long time (maybe 10 minutes, depending on how many mods you have installed).

 

python check.py sexout.esm sexoutcommonresources.esm sexoutslavery.esm sexoutlegion.esm sexoutzaz.esm >logfile.txt

will check those files. Note that I currently do not support wildcards from the command line. If you really want wildcards with this version, you can run this from a cygwin command line (and make sure you get the right python from that command line).

 

 

If people find this useful, and describe for me how they use it and how it is useful for them, I might be able to release versions tailored to those uses.

 

 

Link to comment

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use