MKItems 0.1 Alpha

Started by Sidewinder, February 10, 2008, 04:01AM

Previous topic - Next topic
Some might remember that I asked what is known about the items.engb file some time ago. Unfortunately the response was practically non existant. Anhow - here is the result of my work on the subject:

MKItems 0.1 Alpha


What does it do?

After all the mods and especially after Heroselect, there was a thing that bothered me. So many new Heroes, but the hero specific items that are dropped are still only for the default, built in ones (with the exception of one or two mods like Dazzler). They even drop for heroes that aren't even accessible anymore because the have been replaced. So here is MKItems. What it does is to analyze the current herostat.engb (and subsequently all relevant talent files) and builds a new items.engb file for the currently available heroes.

The Program offers two modes of operation:
* Classic Items
* Expanded Items

The classic option generates the same items as provided in the original file.
The expanded option also includes items that increase BOOSTS, etc.
NOTE: Some Mods might have erroneous talent files that do not properly declare the BOOSTS. In this case items that increase a BOOST talent might also be generated in the classic version

MKItems 0.1 Alpha can be found here:
http://www.sendspace.com/file/5rdepx

Installation Instruction:

Run Executable and enter my username (Sidewinder) as password.
Extract mkitems.zip into any directory you like.
Download xmlb-compile.exe (gui less version) and place it in the same directory as MKItems.exe
Open mkitems.cfg and set the path to your herostat and and to the talent directory (close with a '\' for that one).
Run MKItems.
NOTE: You have to start a new game after running mkitems or your current items will be messed up.

Known errors:

Sometimes the new item.engb file does not work in game. It compiles fine, but when an item should be dropped in game nothing happens at all (even general ones like Scorpions Tail). In case of a weapon cache not even coins appear. Reason is unknown, but I suspect that there is a limit on the total entries in items.engb. Error should be fixed for the random option and is very rare for the classic one (needs lots of heroes with more then 4 combat talents). If you encounter the error try the other option or remove 1 or two heroes from herostat.

Compile error in XP: Sometimes xmlb-compile does not like to compile the generated item.tmp file into item.engb when executed by MKItem. Reason is unkown (maybe XP hasn't closed the file properly) as the file compiles fine if run by hand. Error also does't occur in Win98SE. If you encounter the error try to manually compile the file item.tmp into item.engb.

Please report any errors or suggestions here.

Sidewinder


Disclaimer

Please note that this release is an ALPHA. It is widely untested and might produce unexpected results. It may destroy files that are needed to run marvel Ultima te Allicance. In particular it will modify the ITEMS.ENGB file. Make sure you backup before using. Use at your own risk!

General License for Non-Commercial Use
You may freely use this software for non-commercial purposes.
It may not be used for commercial purposes without an additional license.
You may NOT distribute this software in any way, except with permission of the author.
No warranty of fitness for any purpose whatever is given, intended, or implied.
You use this software entirely at your own risk. If you choose to use it, by you r actions you acknowledge that any consequential damage whatever is your respons ibility, not mine.

Quote from: Sidewinder on February 10, 2008, 04:01AM
Compile error in XP: Sometimes xmlb-compile does not like to compile the generated item.tmp file into item.engb when executed by MKItem. Reason is unkown (maybe XP hasn't closed the file properly) as the file compiles fine if run by hand. Error also does't occur in Win98SE. If you encounter the error try to manually compile the file item.tmp into item.engb.

Sidewinder, this error happens (sometimes) to me when I copy codes from one XML to another, no matter how many times I tried. I got around it eventually by typing out the code word by word again. I am thinking it's the font.

Thanks for program!~

I've seen XML files that don't compile before. But they always fail to compile (a fix that usually works for me is to insert a blank line as 2nd line in the file and suddenly it works...)

However in case of MKItems the same file doesn't compile if called by the "system" function of c++, but does compile a second later if called manually from the same directory with the same parameters. And only in XP. Which is kinda strange.

The file has been pulled, can I get this anywhere else now?


Yeah I know, thats why I'm asking if a new copy is available

can someone upload it again plz :P

Development on this program was ended as there was zero interest in it as it seems. I've re-uploaded it for you two, Grig 32 and SageLuis.
New URL: http://www.sendspace.com/file/hznx5j

I don't understand why... this is such an interesting item.

I've added and replaced bunches of characters - yet I keep having to stick them with default armor and stuff. Anything that can 'fix' that flaw is good in my book ;)

i think the same this is a good program i guess maybe it's beacause hmm hmm people don't use character's items :S i think dunno really but i like this one too :D

I guess this project is dead in the water, being the latest post is pretty old and both links are dead. I'm not sure what I could do as far as programming, but I'd like to take a look at the files. Anyone know where I could find a working link?

Also, this is a good idea that could be tied into future versions of the program.

Also, I noticed looking at the items.engb that different items are given different categories (i.e., gloves, belt, armor, etc.). Were these originally meant to be parts of different item sets, like a very scaled-back version of Diablo?

good work sidewinder, this is cool :)

Yes, can anyone reupload the link?

Quote from: sourimplant on March 09, 2009, 04:55AM
I guess this project is dead in the water, being the latest post is pretty old and both links are dead.

It does what it is supposed to do for me, so it is kinda final. OTOH it is far from what I'd consider a mature tested program.

Quote from: sourimplant on March 09, 2009, 04:55AM
I'm not sure what I could do as far as programming,

Nothing, really. It would also probably be quite some pain to read my sources. What the program would need would be details on the internal workings of MUA.

Quote from: sourimplant on March 09, 2009, 04:55AM
Also, this is a good idea that could be tied into future versions of the program.

Been there, tried that, doesn't work. The characters of all comic missions are hardcoded somewhere and cannot be modified easily. Only exception are those missions, where there is no final room to be loaded (Asgard). All others will crash at that point. If someone figures out how to fix that we can talk about implementing that feature.



Quote from: Sidewinder link=topic=1518.msg50581#msg50581
Been there, tried that, doesn't work. The characters of all comic missions are hardcoded somewhere and cannot be modified easily. Only exception are those missions, where there is no final room to be loaded (Asgard). All others will crash at that point. If someone figures out how to fix that we can talk about implementing that feature.

It is possible to choose the character that goes in the final boss room for comic missions by using this information:

in villainroom.py:
hero = getComicMissionHero( )
room = strcatstr(hero, "room" )
none = strcatstr("none", "" )
if hero == none
     moveHeroesToEnt(room )
else
     copyOriginAndAngles(hero, room )


in sim_murder1.eng (used as an example)
   entinst {
   type = mrfantasticroom ;
      inst {
      extents = -6 -6 -6 6 6 6 ;
      name = mrfantasticroom ;
      pos = 2796 2400 0 ;
      }

      inst {
      extents = -6 -6 -6 6 6 6 ;
      name = blackpantherroom ;
      pos = 2796 2400 0 ;
      }

      inst {
      extents = -6 -6 -6 6 6 6 ;
      name = noneroom ;
      pos = 2796 2400 0 ;
      }

      inst {
      extents = -6 -6 -6 6 6 6 ;
      name = stormroom ;
      pos = 2916 960 0 ;
      }


So if 'getComicMissionHero( )' returns 'none' then it moves the heros to entitiy noneroom. If it returns a characters name, then it moves the heros to an entity with the name of that character, example 'stormroom'. You can also add extra entities in the level eng's like silversurferroom for example and copy the 'pos' information of existing instances.