@dunahan
Many thanks for your suggestion. However, this is something I want to include the NWN Installer Tool (NIT), which means I can’t rely on the user having Niv’s NIM tools and it is not something I would want to package with my download.
As far as I know, no one wrote a GFF parser in VB.NET, so if you’re hoping to include something as source, you’ll probably have to write your own. However, there are several (1, 2, 3) implementations in C# that you can compile as dotnet and call from the same application.
In addition, there are literally dozens of implementations in languages that compile to native code (C, C++, nim, rust, go) which you can build as a .dll and call from your VB app via P/Invoke.
@clippy
Many thanks for this information. I had a quick look at the source and it does not seem like I could find the GFF layout for a BIC file. If I could find some definition or routine, I would be happy to convert it to a DLL or a Class that extracts the specific information I am looking for.
@ClarkHill
Many thanks for taking the time to respond. I am aware of how to read the BIC file. Unfortunately, what I don’t have is the structure of the file so that I can reference the information I need. The BIC file is not a text file. As far as I know, it is a GFF file that requires a “map” to navigate to the required information. This is the knowledge I am missing.
I will keep looking, but it looks like I am not going to find what I need without the help or direction of someone more knowledgeable than me.
There’s literally dozen others, but I’m not sure that listing them all would provide any benefit to what is already there.
EDIT: Based on this:
I had a quick look at the source and it does not seem like I could find the GFF layout for a BIC file
I think you should spend a bit to read about the GFF format. One generally doesn’t parse the BIC file specifically. A GFF file is very similar to XML, JSON or YAML in that it can encode arbitrary information under a text ‘key’. In fact, it is possible to losslessly convert between GFF and XML/JSON/YAML. So probably the best first step would be to try the command dunahan mentioned already, convert to JSON and see what ‘keys’ the data you care about is under. Then read those keys using any of the generic GFF parsers mentioned above.
@clippy
Thanks for this. Will take some more time to see if I can use this info. I already looked at Niv’s GFF format document, but that didn’t help me understand how to get the fields for the character information I need.
ok i remembered enough to parse out some variables …
I still have to delete a bunch of stuff that pertains to the .net Gui. Id like to keep the GffReader class intact so that it can be used to grab any data from a GFF (with a bit of coaxing since things like ClassList are a “complex data type” w/ subfields).
However, keeping the reader-class intact means you’d have to translate hundreds of lines of somewhat intricate code … how bout i zip and send it all to you in a day or two and you can decide if you want me to remove any code that you’re sure won’t be used …
Do you plan to handle thr case where a character has a prestige class that’s specific to some module/hak? Or if they have some global override like CPP that adds more classes.
@clippy
At the moment, I check if it is a valid class and, if it is not, simply display the class number.
The way in which NIT uses this data, does not rely on the Mod being installed, which I presume is a requirement to access an appropriate 2da file for custom installations. Also, I would then have the problem of trying to locate the 2da file, which does not appear to be a standalone file.
As always, I am open to guidance by people much more knowledgeable than I am.