SmartMerger

Post » Fri Oct 01, 2010 6:34 am

Ha, yeah 12 mb might be a bit of a bear just for dialogue. You're hybrid idea is a good idea. Tried out the program a couple of times. GUI works but I didn't read the readme through to see the changes (too impatient) so I didn't know how to decipher the Choices part. I'll play with it more.


Here's the quick lowdown. I think of it in 3-4 different ways you might think of it.
To not change it any of these are identical.
1) First of the two options
L/l) Left Option
N/n) No change

To change it
2) Second option, or change.
R/r) Right side
Y/y) Yes change.

Just type the letter and hit enter. (not more than 1 letter, very specific on that. It's a limitation for the second)

I think the HOF is based on votes. I think your program in it's current state surpasses what TesTool does and now with a GUI should pick up steam as more folks get familiar with it.

I like the sig too... entices one to click it to see what is this "Smartmerge" :)


I do hope it gets more attention. It is about ready to get out of the 'Beta' state and be a full fledged program.

Thank you :) I thought it would fit something like a pledge or cleaning commercial... or something like that.
User avatar
sally coker
 
Posts: 3349
Joined: Wed Jul 26, 2006 7:51 pm

Post » Fri Oct 01, 2010 1:46 am

Just a note regarding documentation, I left some errors by accident. This won't effect the program's use at all.

1) In the GUI ReadMe, it states it requires the cygwin1.dll, this is not true, as it's a compiled http://www.autohotkey.com/ script. The cygwin1.dll is for the Cygwin build for SmartMerger, which is in it's own zip you can extract.

2) In the section regarding --no_dialog_merge, I failed to update it to say it appends dialog, rather than refusing to do any work at all.

3) There's a lot of typos which don't show up under a raw text editor. Will be fixed in the next version.



It's also nice to note I got a really good review in http://www.gamesas.com/index.php?/topic/1145428-easiest-tes-tools/. At least I know I'm on the right track. Thank you Pinkertonius :) :clap:
User avatar
Clea Jamerson
 
Posts: 3376
Joined: Tue Jun 20, 2006 3:23 pm

Post » Fri Oct 01, 2010 6:18 pm

Version: 1.7b
  • Updated documentation
  • Fixed wrong header bug
  • Fixed buffer overrun


Documentation:
Updated the --no_dialog_merge in the readme. It now reads correctly. The GUI readme no longer has the comment of the unneeded dll. Documentation spell-checked.

Header Bug:
For the longest time until I thought about it recently, this has been needing to be updated for a long time. When you --reference files now, the following file's header is the one that's used, not the first file read by the program. This allows you to clean your mods safer, and not have to update the Author/Description/FileType on every merge/clean.

BufferOverrun:
Found by accident, in Bloodmoon.esm there's a very very long ID, long enough it no longer recognized it as a cell and ordered it wrong, making the resulting ESM file's contents out of order, and thereby unreadable by the CS and editors. Length and protections added.

This is a minor revision, rather than a full version. I'm sure it will still be appreciated. Also to note I've included 2 GMST masters. Here is the full two-fold reason. It's a master so they both are noted rather than only having one or the other. And the first one is CS defaults, the second is the three official master's defaults. To demonstrate cleaning, the examples shows how this helps.
User avatar
Rachyroo
 
Posts: 3415
Joined: Tue Jun 20, 2006 11:23 pm

Post » Fri Oct 01, 2010 5:36 am

Fileplanet is saying that the MW_SmartMerge_v17b.zip doesn't exist.
User avatar
Sammie LM
 
Posts: 3424
Joined: Thu Nov 30, 2006 1:59 pm

Post » Fri Oct 01, 2010 4:52 am

Fun. Working on a manual upload. Give it an hour or so.

EDIT:
Email says it's ready to download. Here's the link. Re-uploaded for ElderPlanet too, hopefully they are both good.
http://www.fileplanet.com/217718/210000/fileinfo/SmartMerger-V1.7b
User avatar
Jonny
 
Posts: 3508
Joined: Wed Jul 18, 2007 9:04 am

Post » Fri Oct 01, 2010 3:33 pm

Happy New Year!

I've finally had a chance to try out 1.7 b/c. This is the first version I've used with the GUI, so I decided to try that out. Here is some feeback:

1. It would be nice if the GUI (and the command line) had an option to set a path to the directory you want to be using, rather than having to drop the two .exes into the Data Files folder. (It took me about three readthroughs of the GUI readme to figure out why only the GMST esms were showing up in the Data Files box... but I think that's my lack of reading comprehension rather than the fault of the readme.)

2. It would be fantastic to have a tick-box for both Reference and Selected Files to arrange them in date order (load order) rather than alphabetical order. I suppose this might be helpful for the Data Files box as well, but since that's just a list of files to select alphabetical order is probably the easiest way to use it.

3. It was a little disconcerting to move things back into the Data Files box and have them end up at the end of the list rather than their previous positions. On the other hand, this also meant I didn't have to hunt them down again, which was nice.

4. If it's possible to make the Data Files box not jump up to the top of the list after every move out or in, but instead keep the current scroll position, that would be helpful.

5. I'd love to see what's going on without having to tick "Approve Changes". Especially for a utility still in beta, I like to watch all that output scroll by... But I can accept that if I want this I should just use the command-line version.

6. Ditto with debugging -- I think a tickybox in the GUI would be handy, but I can accept that this should maybe be a command-line-only option.

Actual use, rather than UI, comments:

I am encountering crashes with merges involving http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=2707, but only when using the --choice All option. The last thing shown by --debug is "TES3_:.", so it's happening pretty early. I stripped out the other files I was merging and ended up with this command, which still gives me the crash:
SmartMerger.exe "Morrowind.esm" "Tribunal.esm" "Bloodmoon.esm" --reference --choice All --debug "Apprentice scrolls and mystical quills v1.4.esp" --plugin "Scrolls-Merged.esp"


Stripping out --choice All stops the crash. I should possibly mention that I was using the non-Cygwin command line. Any idea what is happening?

I'm also getting a weird crash with this command:
SmartMerger.exe "Morrowind.esm" "Tribunal.esm" "Bloodmoon.esm" --reference --debug "PlainPaperFix_ALL.esp" "Apprentice scrolls and mystical quills v1.4.esp" --plugin "Scrolls-Merged.esp"


If I use PlainPaperFix_ALL.esp (I'm using http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=4020, all-expansions version) alone, no crash. This is really odd to me, since it comes first in this merge order and SmartMerger never gets to Apprentice scrolls... If I switch the order of the two mods, SmartMerger crashes with Apprentice scrolls (now first) instead. This seems so weird that I kinda suspect I'm doing something wrong. TESPCD reports no conflicts between the two, so merging them should be trivial.
User avatar
Sophie Payne
 
Posts: 3377
Joined: Thu Dec 07, 2006 6:49 am

Post » Fri Oct 01, 2010 12:08 pm

Happy New Year!

I've finally had a chance to try out 1.7 b/c. This is the first version I've used with the GUI, so I decided to try that out. Here is some feeback:



1) I'm trying to follow KISS (Keep It Simple). If add a directory then if you decide to not put it in the 'data files' folder, then you need to specify it every single time. It doesn't save a ini file or use the registry on purpose.

2) For the selected, I can add a couple sorting options (alphabetical, date. Etc). Forcing it to sort on every change would destroy the ability to re-order it, which I tried to avoid.

3) Reason behind this is it doesn't have an 'Undo' option, so unless there's a specific sorting routine involved, it appends to the end of the list. Following my 2 reply above.

4) If I can find a simple way to do this, I will. However depending on the level of control I can have on the GUI objects, on change/submits it may just be inaccessible. I'll get back on this another time.

5) There is. It's the advanced option of 'Notify all changes' or --print_esm_clash . Or that's what is suppose to happen. using the GUI it's all saved to a file so you can review it at your leisure. However if it's going to be large merges, it could be several megabytes in text.

Regarding the crashes, when I feel up for continuing I'll look them over. Most likely it's either an error in my code in how it handles certain data structures (Freeing memory twice or accessible unallocated memory), or it's a error in the input file (I have the TES3 header information fixed at it's 256bytes, there are some that are 320, but I am not sure how to handle those...). Negative numbers in some places (or invalid numbers) can try to allocate memory way beyond the system's abilities to provide. Some of these crashes and issues may resolve themselves if I changed it to the D language. Remember though, if it 'Assert's then it's likely it can't allocate memory.

I thank you for your feedback. I am thinking I may not touch the program for another month or two, but when I do it will be a lot of work very fast, since I'll pick it up and work it for two or three weeks before I stop again.
User avatar
katsomaya Sanchez
 
Posts: 3368
Joined: Tue Jun 13, 2006 5:03 am

Post » Fri Oct 01, 2010 10:46 am

I definitely understand the stop-and-go development mindset. I should mention that I tried the crashy merges without --reference (as, indeed, I didn't need to be referencing, I don't know what I was thinking) and they worked fine that way.

KISS is an excellent principle, and I salute your adherence to it.
User avatar
Mike Plumley
 
Posts: 3392
Joined: Wed Sep 05, 2007 10:45 pm

Post » Fri Oct 01, 2010 7:21 pm

Good afternoon!

I am very interested in your progress on this project, as I'm sure many others are. The main thing I'd like to see from SmartMerger is a functional replacement for the broken "merge objects" feature in TESTool. The potential future possibilities offered by SmartMerger are amazing, but if you could knock this feature out soon, I guarantee you'll gather both a lot of interest, and a lot of testers. Keeping its operation close to the way TESTool works would also make it easier for user migration.

Ideally, since this feature would be used by the less-technically-savvy users, quite possibly as the ONLY feature of SmartMerger they actually use, it should be simple, perhaps with one special command-line or GUI switch.

- Merge all objects found in files specified in morrowind.ini to specified file (merged_objects.esp by default)
- Only store objects in the final file that REQUIRED merging (the intent of this file is to be loaded AFTER all the other files, not INSTEAD of)
- Changes to the same object value are processed in load-order order
- Initially I'd leave the dialogue out, since it is so tricky - you can always expand to include that later

With that functionality in place, you'd immediately be able to replace one of the most critical, and sadly broken, tools in running a modded Morrowind, and consequently acquire all those users (and testers) for your ultimate creation. I know you're taking a break for a while, and I hope that you enjoy your other endeavors, and are ultimately able to come back to SmartMerger with a clear head. Thanks again for all your hard work, and I look forward to the next version!

Rochndil, who just took 11 months to update his one small mod...
User avatar
electro_fantics
 
Posts: 3448
Joined: Fri Mar 30, 2007 11:50 pm

Post » Fri Oct 01, 2010 3:55 am

@Rochndil: ditto :tops:
User avatar
Jennifer Rose
 
Posts: 3432
Joined: Wed Jan 17, 2007 2:54 pm

Post » Fri Oct 01, 2010 5:38 am

Good afternoon!

I am very interested in your progress on this project, as I'm sure many others are. The main thing I'd like to see from SmartMerger is a functional replacement for the broken "merge objects" feature in TESTool. The potential future possibilities offered by SmartMerger are amazing, but if you could knock this feature out soon, I guarantee you'll gather both a lot of interest, and a lot of testers. Keeping its operation close to the way TESTool works would also make it easier for user migration.

Ideally, since this feature would be used by the less-technically-savvy users, quite possibly as the ONLY feature of SmartMerger they actually use, it should be simple, perhaps with one special command-line or GUI switch.

- Merge all objects found in files specified in morrowind.ini to specified file (merged_objects.esp by default)
- Only store objects in the final file that REQUIRED merging (the intent of this file is to be loaded AFTER all the other files, not INSTEAD of)
- Changes to the same object value are processed in load-order order
- Initially I'd leave the dialogue out, since it is so tricky - you can always expand to include that later

With that functionality in place, you'd immediately be able to replace one of the most critical, and sadly broken, tools in running a modded Morrowind, and consequently acquire all those users (and testers) for your ultimate creation. I know you're taking a break for a while, and I hope that you enjoy your other endeavors, and are ultimately able to come back to SmartMerger with a clear head. Thanks again for all your hard work, and I look forward to the next version!

Rochndil, who just took 11 months to update his one small mod...



I imagine that the basic structure for that could be done. Hopefully Era_Scarecrow comes back soon and is willing to add it. It'd be very easy to make a batch file to do just what you said after that (but it does have a GUI).

It's still quite a useful utility. I use it often to merge like mods or mods w/ patches.
User avatar
Genevieve
 
Posts: 3424
Joined: Sun Aug 13, 2006 4:22 pm

Post » Fri Oct 01, 2010 7:22 am

Something that I think would be a great addition to your program, and something that to my knowledge, doesn't exist and has never been attempted, is an option to merge path grids. As it is, a cell can have one path grid, and the last loaded mod overwrites all other changes. I imagine this must have caused some problems, with many people unaware of the cause.
User avatar
Laura Hicks
 
Posts: 3395
Joined: Wed Jun 06, 2007 9:21 am

Post » Fri Oct 01, 2010 4:51 pm

I would love to implement it, however I would first need information of how the pathgrid data is stored. If I can't decode/encode it I can't fix it. Same thing with landscaping design. If you get details (or figure it out) Post it and I will see what I can do.
User avatar
His Bella
 
Posts: 3428
Joined: Wed Apr 25, 2007 5:57 am

Post » Fri Oct 01, 2010 4:55 pm

I would love to implement it, however I would first need information of how the pathgrid data is stored. If I can't decode/encode it I can't fix it. Same thing with landscaping design. If you get details (or figure it out) Post it and I will see what I can do.

Unfortunately, figuring it out is beyond my capabilities. I know that the Enchanted Editor shows some info, but I don't know if that is of any use to you.
User avatar
Vickytoria Vasquez
 
Posts: 3456
Joined: Thu Aug 31, 2006 7:06 pm

Post » Fri Oct 01, 2010 3:23 pm

I would love to implement it, however I would first need information of how the pathgrid data is stored. If I can't decode/encode it I can't fix it. Same thing with landscaping design. If you get details (or figure it out) Post it and I will see what I can do.


Era_Scarecrow, I have a few ideas about how "maybe" to resequence dialogue to effectively "merge" it. It would be a little complicated though....
User avatar
christelle047
 
Posts: 3407
Joined: Mon Apr 09, 2007 12:50 pm

Post » Fri Oct 01, 2010 11:39 am

Pathgrid ESP record:

subrecord NAME    cstring cellnamesubrecord DATA    int cellx, celly    ushort granularity, num_vertssubrecord PGRP    array of struct verts { int x, y, z, flags }    ;flags are probably the auto/user colouring, but unconfirmedsubrecord PGRC    array of struct edges { int v0, v1 }

User avatar
The Time Car
 
Posts: 3435
Joined: Sat Oct 27, 2007 7:13 pm

Post » Fri Oct 01, 2010 1:39 pm

How do you use this program to create a Merged Objects plugin? When I run it on my current load list, SmartMerger crashes and produces no output. My current load list consists of 245 mods, but due to combining I'm running 500 or so mods.
User avatar
luis ortiz
 
Posts: 3355
Joined: Sun Oct 07, 2007 8:21 pm

Post » Fri Oct 01, 2010 8:45 pm

Thanks for that info, Hrnchamd.

Something else I'd like to suggest is merging changes to NPCs. I suppose dialogue should be left separate, but merging their inventory, AI, and such.
User avatar
James Potter
 
Posts: 3418
Joined: Sat Jul 07, 2007 11:40 am

Post » Fri Oct 01, 2010 7:35 am

Era_Scarecrow, I have a few ideas about how "maybe" to resequence dialogue to effectively "merge" it. It would be a little complicated though....


By all means let me know. I'm thinking of trying a simpler approach and just see how it goes.


Thanks for that info, Hrnchamd.Something else I'd like to suggest is merging changes to NPCs. I suppose dialogue should be left separate, but merging their inventory, AI, and such.


Care to elaborate? Inventory should be fine, although there's a slight chance it will add newer items than removing deleted items. AI and other lesser records can be broken into portions so individual parts are updated separately, however I considered the AI should be taken as a whole if I remember right. That's not too hard to change though.

How do you use this program to create a Merged Objects plugin? When I run it on my current load list, SmartMerger crashes and produces no output. My current load list consists of 245 mods, but due to combining I'm running 500 or so mods.


When it crashes, no output would be given since it writes as the last step, not as it works. I'm sure if/when I convert the code to DMD D, it would do much better, at least when the language is ready.

If you run it during Verbose mode, (perhaps multiple levels) it will tell you what module, and even what record it's on when it crashes. That greatly helps when I work on debugging it.


And enough on that, I think I'll pick up problem mods and begin debugging and resuming my work now. Won't be the same full steam I was months ago, but at least progress will be made. And those who are interested in the source code I can post it (Since it's GPL) However it's not the best organized, and in C. (You've been warned)
User avatar
Jessica White
 
Posts: 3419
Joined: Sun Aug 20, 2006 5:03 am

Post » Fri Oct 01, 2010 6:51 am

I am encountering crashes with merges involving http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=2707, but only when using the --choice All option. The last thing shown by --debug is "TES3_:.", so it's happening pretty early. I stripped out the other files I was merging and ended up with this command, which still gives me the crash:
SmartMerger.exe "Morrowind.esm" "Tribunal.esm" "Bloodmoon.esm" --reference --choice All --debug "Apprentice scrolls and mystical quills v1.4.esp" --plugin "Scrolls-Merged.esp"


Stripping out --choice All stops the crash. I should possibly mention that I was using the non-Cygwin command line. Any idea what is happening?

I'm also getting a weird crash with this command:
SmartMerger.exe "Morrowind.esm" "Tribunal.esm" "Bloodmoon.esm" --reference --debug "PlainPaperFix_ALL.esp" "Apprentice scrolls and mystical quills v1.4.esp" --plugin "Scrolls-Merged.esp"


If I use PlainPaperFix_ALL.esp (I'm using http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=4020, all-expansions version) alone, no crash. This is really odd to me, since it comes first in this merge order and SmartMerger never gets to Apprentice scrolls... If I switch the order of the two mods, SmartMerger crashes with Apprentice scrolls (now first) instead. This seems so weird that I kinda suspect I'm doing something wrong. TESPCD reports no conflicts between the two, so merging them should be trivial.


Thanks for being patient, I am working on these two now, and I will update my reply as I work on it.

Anyone else who has problems with certain mods, please post them, links where I can get the mod and exactly what you used to call it with. The above is a good example.

EDIT: Alright I found the problem. It's a simple programming error. It's bug was trying to free a subrecord that didn't exist. The second one gave me no problems after I fixed it, so I assume they were the same problem.

EDIT: I'm adding links to current Development builds. Feel free to download and use them. They are not full releases but will include the license just in case.
http://rtcvb32.001webs.com/MW_SmartMerge_v18_0.zip
User avatar
Janine Rose
 
Posts: 3428
Joined: Wed Feb 14, 2007 6:59 pm

Post » Fri Oct 01, 2010 9:44 am

Now this is really strange. If I use: smartmerger Morrowind.esm --reference "Morrowind Patch Project v.1.6.5-BETA.esm" test.esp , SmartMerger crashes. If I use --debug it runs fine.

EDIT:
SM crashes when I use my full load order. This is the output before the tool dies. I used --debug:


This is from the other thread. Anyways, I'm trying to find the 1.6.5 beta version to do testing on, but I only see 1.6.3. If you can provide a working link I'll proceed onto this and see if it's the same bug. Before responding do try the Dev link I posted above and see if it still gives issues.
User avatar
Eire Charlotta
 
Posts: 3394
Joined: Thu Nov 09, 2006 6:00 pm

Post » Fri Oct 01, 2010 3:39 pm

Sweet, I'll try an draft it up for you after work.

EDIT: I have half of it drafted up so far. I'll finish the rest hopefully before I go to sleep or by tomorrow noontime at the latest.

EDIT2: Now two thirds done. Will finish up tomorrow. I'm getting tired and what I'm typing isn't making sense anymore (that presumes it made sense in the first place).
User avatar
Andrew Tarango
 
Posts: 3454
Joined: Wed Oct 17, 2007 10:07 am

Post » Fri Oct 01, 2010 3:48 pm

Care to elaborate? Inventory should be fine, although there's a slight chance it will add newer items than removing deleted items. AI and other lesser records can be broken into portions so individual parts are updated separately, however I considered the AI should be taken as a whole if I remember right. That's not too hard to change though.

What exactly should I elaborate on? I've never run into a situation where my selected mods changed the same NPC, so I don't really know what to say. I decided to see how changes to the same NPC would act. I altered the services, and they predictably overwrote each other. Inventories get overwritten as well. I posted the suggestion because there is nothing to merge NPCs. If the usual merging tools merge anything relating to NPCs, then I have never noticed because, as stated, none of my mod selections have altered the same NPC.
User avatar
Sarah Knight
 
Posts: 3416
Joined: Mon Jun 19, 2006 5:02 am

Post » Fri Oct 01, 2010 9:37 am

What exactly should I elaborate on? I've never run into a situation where my selected mods changed the same NPC, so I don't really know what to say. I decided to see how changes to the same NPC would act. I altered the services, and they predictably overwrote each other. Inventories get overwritten as well. I posted the suggestion because there is nothing to merge NPCs. If the usual merging tools merge anything relating to NPCs, then I have never noticed because, as stated, none of my mod selections have altered the same NPC.


Hmmm... The inventory not working sounds like something to look into. However give this a try. I've added all the missing fields for AI's. I hoped to keep these grouped as a whole. We'll take away once we determine which ones shouldn't be separate for merging.

http://rtcvb32.001webs.com/MW_SmartMerge_v18_1.zip

EDIT: Fixed other minor bugs related to the previous one.
http://rtcvb32.001webs.com/MW_SmartMerge_v18_2.zip
http://rtcvb32.001webs.com/MW_SmartMerge_v18_3.zip
User avatar
Robert DeLarosa
 
Posts: 3415
Joined: Tue Sep 04, 2007 3:43 pm

Post » Fri Oct 01, 2010 4:57 am

If you run it during Verbose mode, (perhaps multiple levels) it will tell you what module, and even what record it's on when it crashes. That greatly helps when I work on debugging it.

Thanks, that was helpful. I turned on debug and ran it again. I got a message saying there was an ID clash between a NPC from one mod and a script from another mod. Both had the ID test. This conflict seems to be ignored by the CS and the game engine; neither of which give a hoot about the ID clash when one of the objects is a script. I first encountered this type of conflict doing work with MCA companions. I use MWEdit to check my scripting. It always complains about an ID clash between a global variable and a script, both called MCA_companions, even though the CS and the game engine don't have a problem with it.

I fixed the conflicting ID's and reran SmartMerger. It stopped at another ID clash between a script and an activator, both having an ID of "sound_waterfall". The script is from Tribunal and the activator is from the waterfall North of Balmora that is part of my version of Balmora Expanded. (I don't know if it is in the original version of BE.)

After fixing the "sound_waterfall" ID clash, SmartMerger ran to completion and produced an output file. Now I just have to figure out what it is that I have. If it merged everything, does this mean that I can run just a single plug-in?

The command I ran is:
SmartMerger --debug --load_ini "Output.esp"

Output.esp is 261 MB in size. The CS identifies Output.esp as a Master File. I selected all the Master Files that I use and Output.esp. It successfully loaded into the CS. Summarizing Warnings.txt, 567343 duplicate references removed mostly from Output.esp, trap spell 'burden of sin' is an invalid trap (it's from Tombs Expanded) and any unique place names used to filter dialogue were lost because the places couldn't be found. The implication to me is that Output.esp still needs at least some of the merged mods to be useful.
User avatar
kasia
 
Posts: 3427
Joined: Sun Jun 18, 2006 10:46 pm

PreviousNext

Return to III - Morrowind