Jump to content

DOWNLOAD MODS

Are you looking for something shiny for your load order? We have many exclusive mods and resources you won't find anywhere else. Start your search now...

LEARN MODDING

Ready to try your hand at making your own mod creations? Visit the Enclave, the original ES/FO modding school, and learn the tricks of the trade from veteran modders...

JOIN THE ALLIANCE

Membership is free and registering unlocks image galleries, project hosting, live chat, unlimited downloads, & more...

[Idea] Morrowind Tool Kit


InsanitySorrow
 Share

[Idea] Morrowind Tool Kit  

6 members have voted

  1. 1. Would you like to see this App for Morrowind

    • Yes Please
      5
    • No thank You
      1
    • Other [If you are unsure], please state
      0


Recommended Posts

  • Replies 54
  • Created
  • Last Reply

Top Posters In This Topic

Ooops :D I voted no but in fact my answer is yes :trophy:

As you say we lack a bigger scale tool kit for Morrowind :P

I am looking forward to the beta ;)

No worries, its the post that counts :rofl:

Ok so I DL'd MW Mod Manager and it is indeed developed by TimeSlip, though its a direct port of OBMM from the interface to its workings and I see that as a bad thing, not becuase its a port but becuase the app should be more focused on what MW needs, some stuff it won't need.

So really we need a PROPER decicated mod manager for MW with a host of tools to boot ;)

Link to comment
Share on other sites

Looks good, but, do we need a button for the code patch? Isn't that a run once thing like a regular patch?

I am unsure about the patch, I think I have it but never used it before :P , If its a use once thing then I can remove the button with no issues :P

Edit: Remade the UI and started work on the Load order stuff, currently it detects the ESMs and ESPs in the data directory. I am starting the code for detecting what is actually active :P

MWTk_01.jpg

Link to comment
Share on other sites

I am unsure about the patch, I think I have it but never used it before :wicket: , If its a use once thing then I can remove the button with no issues :)

Edit: Remade the UI and started work on the Load order stuff, currently it detects the ESMs and ESPs in the data directory. I am starting the code for detecting what is actually active :P

MWTk_01.jpg

Ah this is going to be something I use all the time :D

Link to comment
Share on other sites

Ah this is going to be something I use all the time :P

Nice to know :)

On another note I am having issues with the load order part, I am unsure how to go about checking an ESP to see if its active so any ideas are welcome :), once I know how to check I can show in the menu that its active and then reverse the effect when the esp/esm is unchecked.

Link to comment
Share on other sites

Nice to know :blush:

On another note I am having issues with the load order part, I am unsure how to go about checking an ESP to see if its active so any ideas are welcome :P , once I know how to check I can show in the menu that its active and then reverse the effect when the esp/esm is unchecked.

I think the only way to tell would be to check the morrowind.ini, and see if it is listed in there. Morrowind did things a bit differently than Oblivion..... and rolled it all into the ini.

Link to comment
Share on other sites

I think the only way to tell would be to check the morrowind.ini, and see if it is listed in there. Morrowind did things a bit differently than Oblivion..... and rolled it all into the ini.

Yeah I found out by asking around, strange that Beth changed the method each time, MW had it in the INI, OB in the Plugins.txt and Fallout does away with it :blush:

Still going to be a challenge comparing a directory list to a list in the INI, still I will try.

Link to comment
Share on other sites

Yeah I found out by asking around, strange that Beth changed the method each time, MW had it in the INI, OB in the Plugins.txt and Fallout does away with it :no:

Still going to be a challenge comparing a directory list to a list in the INI, still I will try.

At least both lists are in alphabetical order, that should make it a wee bit easier.

Link to comment
Share on other sites

Unfortunately, when playing with the load list, you'll have to rewrite it to the INI each time. That'll also mean clearing it out first.

Morrowind keeps it in a series of GAmeFile0=, GameFile1=, etc. So you'd have to erase each one, then rewrite the list.

Also, I've been looking at libESM, and I think it can be re-made with C#. It'll be a single class for the file, with a load function and what-not. I think it'll be simple to use a vector for the records, with each having a 4-byte type, 4-byte flags and vector of subrecords, each of which will have a 4-byte type and n-byte data section.

With a class like that, all you'd have to do to search for meshes or something would be (say you're checking for statics, in the MODL subrecord):

foreach file.record

{

    if ( file.record.type == STAT )

    {

        foreach file.record.subrecord

        {

             if ( file.record.subrecord.type == MODL )

             {

                  // handle isntallation or whatever

             }

        }

    }

}

Of course, you'd need a few ORs in there for different types, but that's the idea of what I've got so far.

Link to comment
Share on other sites

Unfortunately, when playing with the load list, you'll have to rewrite it to the INI each time. That'll also mean clearing it out first.

Morrowind keeps it in a series of GAmeFile0=, GameFile1=, etc. So you'd have to erase each one, then rewrite the list.

Also, I've been looking at libESM, and I think it can be re-made with C#. It'll be a single class for the file, with a load function and what-not. I think it'll be simple to use a vector for the records, with each having a 4-byte type, 4-byte flags and vector of subrecords, each of which will have a 4-byte type and n-byte data section.

With a class like that, all you'd have to do to search for meshes or something would be (say you're checking for statics, in the MODL subrecord):

foreach file.record
{
if ( file.record.type == STAT )
{
foreach file.record.subrecord
{
if ( file.record.subrecord.type == MODL )
{
// handle isntallation or whatever
}
}
}
}[/code]

Of course, you'd need a few ORs in there for different types, but that's the idea of what I've got so far.

Currently trying to figure out how to read the Data Files directory and then compare those results with the files in the INI and determine what is active. becuase I have never done it before I am finding it quite difficult to do.

Best thing here is I think LibESM could be packaged as a DLL file and then be used in VB.net which is what I am currently using for my apps. Though I have not really done anything to this app since my last screen shot due to my OB app. So a C# is not out of the question yet :D

Link to comment
Share on other sites

I looked earlier and C# has a lot of VB.net classes in it, so there seems to be some kind of connection between the two.

I also wrote a simple version of libESM (more generalized, so it'll work for all 3 games, and in C#). It's not working quite right yet (some trouble with flags and such) but if translating from C# to VB is easy, I'll send you a copy of that and we can work on getting it into your native language. :wallbash:

As for comparing those, that's pretty easy, if you don't mind going a little slow.

All you need to do is make an array, read in all active datafiles from the INI. Next, read in the contents of the Data Files folder. For each ESM/ESP you find, add it to the list unchecked, then test its name against each element of the active files array. If you find a match, check the box.

When you write it out, run through the elements in your list (however VB handles those) and check each one for a checkmark. If it's checked, write a line to the INI with

"GameFile"+(cFile++)+"="+element.Text

I don't know if the description works, but I can put up code for that method. It's not the fastest, but it'll certainly work and is simple.

Link to comment
Share on other sites

Yup C# and VB.net seem to be a lot alike, though C# is able to cut down the amount of code needed for its functions. It should be medium difficulty porting it over, some functions that are in C# are not in VB so a workaround would be needed, but depends on how its coded :question:

Well I know in my head how to do the comparison and it sounds real easy, but doing it in VB is not as easy as you may think, so I am stuck at that point currently.

If you have working code then I would love to give it a run and see how it performs, slow and correct is better than fast and wrong. Plus slow code can always be fixed up later to make it run quicker.

Link to comment
Share on other sites

I'm looking up docs on VB now, so I'll be able to tell you what's up with translation soon. For the ESD (Elder Scrolls Datafile) library I wrote, it uses 3 classes. I don't know yet if VB supports those, but if it does, then there aren't many functions used other than ReadByte and WriteByte. Everything else is pretty simple.

As for code on the INI, I'll see if I can get something working. I may have my Visual Studio Express disc running around, so I'd be able to install VB if I can find that. I'll update more later when I figure out how to use VB. ;)

Edit: I remember why I don't use BASIC! :P It seems that for the most part it'll work. Let me make sure the lib itself works in C#, and I'll send a copy and we can get translating. I'll also mock up INI-reading code and send that over too. The INI code will only work with Morrowind, but the library will work on all games that use that filetype (mostly just Bethesda's recent RPGs).

Link to comment
Share on other sites

I installed VB, and got lost about when I hit new class. :rofl:

I'm having one last issue (I think it's the last one) with the classes in the C# version, and it'll be done. Quite a simple setup to use, if I do say so. Only problem is it doesn't work yet. :rofl:

Right now I'm using Lists to add records and subrecords to a datafile class, except it's complaining about NullReferences. I don't know if Visual Basic has lists or just those Dim/array things.

As for the INI code, I'll mock that up in C# pseudo-code if I can't get the hang of VB.

Link to comment
Share on other sites

I may feel at home there if I felt at home in C#, but even that's not my language of choice. :rofl: I'd rather use C++, but C# tends to make coding stuff like this (and GUI stuff) a whole lot faster, plus libESM already exists in C++.

I do know that parsing the strings for the INI will be easier in C# then C++, unless you involved the standard library and strings, or possibly another lib like rudeconfig or such.

Edit: Also, I'm looking up references now for VB's classes and the equivalent of lists.

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

In case this is still being watched, I finally got my ES* library updated and working. It can read any Morrowind file, and possibly Oblivion/FO3 files as well. A true installer (regardless of mod packaging) should be possible with it, as well as analyzing files. It's in C# at the moment, but that can be changed. If anyone wants the code, I'll send it on over. :)

Link to comment
Share on other sites

In case this is still being watched, I finally got my ES* library updated and working. It can read any Morrowind file, and possibly Oblivion/FO3 files as well. A true installer (regardless of mod packaging) should be possible with it, as well as analyzing files. It's in C# at the moment, but that can be changed. If anyone wants the code, I'll send it on over. :)

Beg pardon, but what does it do ?
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...