MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

The role-playing games (I-X) that started it all and the various spin-offs (including Dark Messiah).

Moderator: Moderators

User avatar
Vinevi
Leprechaun
Leprechaun
Posts: 39
Joined: 17 Jul 2017

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vinevi » Jun 28 2020, 14:25

For me it turned out that portals are too big of a deal for almost nothing. I mean the performance doesn't seem to drop too badly, probably unless going for a really huge map and automap being revealed right away is alright. So the object mode seems fine as for now. I have made a small sample map using textures from Minecraft as a little showcase:
https://youtu.be/rBuNyAvVqfE
https://imgur.com/a/4WEEUok
The _Invisible_ texture is really helpful for making invisible walls and movement helpers. For example in this map blocks themselves are too high to just step over them so I've used _Invisible_ texture like that:
https://imgur.com/hndpUVz
To make slides to help moving around. Clip texture is used in Quake to achieve similar results.
Last edited by Vinevi on Jun 28 2020, 14:30, edited 4 times in total.

cthscr
Scout
Scout
Posts: 194
Joined: 12 Jan 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby cthscr » Jun 30 2020, 14:45

GrayFace wrote:
cthscr wrote:Oh, I'm already logging them. Problem is two actions 113 are used to quit from subscreen. And I'm unable to do two actions at once [at least yet]. Looks like action 113 supposes to clear actions queue if Param2 is 0. Setting it to something else won't help though.

There's a function for exiting a single house screen: mem.call(mmv(0x4A4AA0, 0x4BD818, 0x4BB3F8), 0) (or Game.ExitHouseScreen() in current version from Github). You can exit all house screens like this:

Code: Select all

while mem.call(mmv(0x4A4AA0, 0x4BD818, 0x4BB3F8), 0) ~= 0 do
end
-- then add action 133 which would close house dialog properly

Also note the ability to call the function that processes actions like this: mem.call(mmv(0x42ADA0, 0x4304D6, 0x42EDD8), 0)

Surprisingly, the easiest method to kick party out of shop was to set this shop ban expiration time into the future (even 2 ticks was enough for me).
MM8, for houses 1 - 52:

Code: Select all

mem.i8[0xB211D4 + 8 * HouseId] = Game.Time + 2

Since I tried to set up ban, I've got exit for free. Found at 0x4431C6.

cthscr
Scout
Scout
Posts: 194
Joined: 12 Jan 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby cthscr » Aug 6 2020, 6:50

GrayFace wrote:

Please take a look at https://gitlab.com/templayer/mmmerge/-/issues/663
There could be a serious flaw in MMExt evt interaction.

User avatar
Vinevi
Leprechaun
Leprechaun
Posts: 39
Joined: 17 Jul 2017

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vinevi » Aug 16 2020, 13:01

Is there any way to extend data tables using similar approach as with patch LODs? For example if I were to add a single custom monster I will need to replace the entire tables, which could've been modified prior as well, breaking compatibility with the other mods. By extending I mean creating a separate file with new entries, with some unique prefix. Having something like that will allow making and sharing small scale mods much easier.
Last edited by Vinevi on Aug 16 2020, 13:02, edited 1 time in total.

Rodril
War Dancer
War Dancer
Posts: 353
Joined: 18 Nov 2016

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Rodril » Aug 16 2020, 14:34

I don't think there is. I'm thinking about it for quiet long time now, but have no idea, how to implement it yet.

User avatar
Vinevi
Leprechaun
Leprechaun
Posts: 39
Joined: 17 Jul 2017

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vinevi » Aug 16 2020, 17:56

That will be a really nice addition. In theory it can be done by just appending all extra tables to the main one while the game is loading in a similar way as the bin files are generated, but I know nothing about how the patch works so can't be sure. I remember that the 2D locations are accessed by IDs from the tables so that's probably the most problematic area.
One more idea I had is to have some way for a player to access custom maps. A feature very similar to town mirrors in Swords of Xeen where player is asked for a code word and if it matches something the player will be teleported there. That skips the step where it is necessary to embed a newly created map into the world and is user friendly if made in a form of NPC.
Last edited by Vinevi on Aug 16 2020, 18:01, edited 1 time in total.

User avatar
Anerag
Leprechaun
Leprechaun
Posts: 18
Joined: 20 Jan 2019

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Anerag » Aug 18 2020, 12:14

After compiling an indoor map in MM6 some double doors break. I believe the merge mod has the same problem. One of the doors opens normally but the other "opens" and leaves an invisible wall. I'd like to know if this will ever get fixed. Are there any workarounds?

Couple of examples I found: first, double door right at the entrance in temple of baa. Second, the very last bit of the abandoned temple, the double doors leading to the room with a chest.

raekuul
Scout
Scout
Posts: 155
Joined: 05 Jul 2019

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby raekuul » Aug 18 2020, 18:20

This also happens at the double door in the Lair of the Wolf
You need to install the base mod first, and then install the latest GrayFace patch on top of that.
The key to cross-timeline travel is casting Town Portal at a High Magic Spot.

cthscr
Scout
Scout
Posts: 194
Joined: 12 Jan 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby cthscr » Sep 9 2020, 15:47

I have an asmpatch:

Code: Select all

   -- Fix Day of the Gods, Deadly Swarm and Flying Fist spell selection for monsters.
   DayGods, DeadlySwarm, FlyingFist = "Day-o-Gods", "Deadly", "Flying"
   mem.asmpatch(0x4524B3, [[
   jnz short @daygods
   push 0x44
   jmp absolute 0x4520EB
   @daygods:
   push ]] .. mem.topointer(DayGods) .. [[;
   push dword ptr [edi+4]
   call absolute 0x4DA920
   test eax, eax
   pop ecx
   pop ecx
   jnz @swarm
   push 0x53
   jmp absolute 0x4520EB
   @swarm:
   push ]] .. mem.topointer(DeadlySwarm) .. [[;
   push dword ptr [edi+4]
   call absolute 0x4DA920
   test eax, eax
   pop ecx
   pop ecx
   jnz @fist
   push 0x25
   jmp absolute 0x452485
   @fist:
   push ]] .. mem.topointer(FlyingFist) .. [[;
   push dword ptr [edi+4]
   call absolute 0x4DA920
   test eax, eax
   pop ecx
   pop ecx
   jnz absolute 0x4524BC
   push 0x4C
   jmp absolute 0x452485
   ]])

If variables were made local, only the pointer to the last one will point to actual ascii data. Should I do it some other way or is it buggy a bit?

Eksekk
Leprechaun
Leprechaun
Posts: 18
Joined: 19 Jul 2016

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Eksekk » Oct 5 2020, 17:50

Whenever I try importing any object in MMEditor (exported from existing map, I'm total noob at 3D graphics) it either doesn't appear or appears totally out of place (not before/at the party, but large distance from expected location). Any ideas what might cause this? Maybe objects are exported with extra space around them, which needs to be removed in some way?

EDIT: It seems that location is "hardcoded" in OBJ file, is there no other way than to export them with correct location? My described behavior (create model where party currently is) seems much more intuitive.
Last edited by Eksekk on Oct 5 2020, 23:12, edited 2 times in total.

User avatar
Vinevi
Leprechaun
Leprechaun
Posts: 39
Joined: 17 Jul 2017

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vinevi » Oct 6 2020, 15:06

Objects are imported relatively to the scene so the best way to deal with it will be to export the entire map into a 3D editor and then position objects based on it. Or to move the object manually in MMEditor after it is imported.

Eksekk
Leprechaun
Leprechaun
Posts: 18
Joined: 19 Jul 2016

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Eksekk » Oct 8 2020, 22:11

Vinevi wrote:Objects are imported relatively to the scene so the best way to deal with it will be to export the entire map into a 3D editor and then position objects based on it.


Thanks for your tip, it was very helpful. I can now import any object on any outdoor map anywhere I want! :)

Another question. I tried making an indoor "map" - just a simple cube for testing, however when I flew into it I couldn't see any sides (of course "no dark" was turned on). When I tried disabling editor while inside the cube i was teleported on top. However when I removed the top face, now it behave like a normal dungeon and I could jump around in the cube. How do I make this behavior happen without removing any faces (having a solid object)?

I'm sorry if my questions are explained by more experience in 3D modelling, currently I haven't got much of it.

Edit: Problem solved, you just have to select entire object and flip normals. It's working now :-D
Last edited by Eksekk on Oct 8 2020, 22:33, edited 2 times in total.

Eksekk
Leprechaun
Leprechaun
Posts: 18
Joined: 19 Jul 2016

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Eksekk » Nov 8 2020, 22:05

Is there any way to make monsters on one map friendly with scripts in MM 7-8? Grayface's example script is for MM6 and when I adjusted it, it didn't work. The following script also doesn't work (of course I put it in scripts/global folder):

Code: Select all

function events.BeforeLoadMap()
   if Game.Map.Name == "out06.odm" then
      LocalHostileTxt()
      for i = 0, 88 do -- range this high for testing, should make all monsters friendly, didn't work
         Game.HostileTxt[i][0] = 0 -- tried numbers from 0 to 4 after =, still nothing
      end
   end
end
Last edited by Eksekk on Nov 8 2020, 22:06, edited 1 time in total.

lightbringer23
Peasant
Peasant
Posts: 85
Joined: 02 Apr 2017

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby lightbringer23 » Nov 15 2020, 21:15

In MMEditor, when I create a new item of a pile of gold, the gold piece value is zero. You receive zero gp when you pick it up. Anyone know the way to change that? I looked in the "edit" page, but that seemed to just be details for other items. I haven't seen other instances of gold piece piles that were hand placed -- the base game seems to just use the random item spawn method.

How do you place a pile of gold that has the usual random value by pile size?

User avatar
Vaulth516
Leprechaun
Leprechaun
Posts: 33
Joined: 02 Nov 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vaulth516 » Nov 16 2020, 1:44

Hi, can somehow instruct me on how to get MMEditor opened and running?
I've downloaded the files but don't know where and what to do with them, I would like to mod and add dungeons to MMMerge.

lightbringer23
Peasant
Peasant
Posts: 85
Joined: 02 Apr 2017

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby lightbringer23 » Nov 16 2020, 2:00

You're in luck -- I just spent the day figuring out how to do that. You'll need both MMEditor and MMExtension. You'll also need MMArchive to make your modifications playable.

Once in the game, press F4 to go into windowed mode. This allows you to see the toolbar on the left side of the screen.

Press New to start a new project. This moves you to a blank area. Press Internal Map to bring up a list of existing maps. This is the easiest way to start -- modifying existing maps.

Once in the loaded map, you can insert objects, spawn points, items, and monsters. Click the button, then Create to place the object. Select Type to change the object from the default.

Save saves your work as a .dat file so you can return to your WIP. When you're ready to place in the game, you need to Compile. This creates the 2 files that the game can read. You'll need to use MMArchive to insert those files into Games.lod. Be sure to start a new game to see the new maps appear in-game.

If you need to change the stats of the thing you placed, you can do that with Edit -- bringing up the debug console. You may need to do this to make certain creatures hostile -- many are non-hostile by default. In order to "save" your changes, you need to execute the contents of the debug console by striking ctrl-enter.

User avatar
Vaulth516
Leprechaun
Leprechaun
Posts: 33
Joined: 02 Nov 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vaulth516 » Nov 16 2020, 5:02

I got the files for MMEditor, MMExtensionTmp, and MMArchive,

so do I put all the files within those folders in the MM8(Merge) directory,
and do I keep them inside those folders, or move the files themselves into the main MM8 folder?

And I do not run any exe to open the editor, it opens in the game itself?
Last edited by Vaulth516 on Nov 16 2020, 5:05, edited 1 time in total.

cthscr
Scout
Scout
Posts: 194
Joined: 12 Jan 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby cthscr » Nov 16 2020, 8:48

MMMerge already has MMEditor 2.1 inside. Press Alt+F1. And read 'MMEditor Readme.txt' from game directory.

Note: you might not be able to "internal" load maps from MM7/MM6 with 2.1. At least there's no easy way.
Last edited by cthscr on Nov 16 2020, 8:51, edited 1 time in total.

User avatar
Vaulth516
Leprechaun
Leprechaun
Posts: 33
Joined: 02 Nov 2020

Re: MMExtension v2.2 + MMEditor v2.1 Level Editor [June 4, 2019]

Postby Vaulth516 » Nov 16 2020, 11:15

Ok, I got the Editor running, trying to figure out some basics... Damn, this is brutal...

1/ How do I change monster size?
Also, when I clicked on the ground in [New] a window pops up where I can type in codes, what is that coding windows?

2/ how to add an NPC and set up a story dialogue, where would the text file be stored?

and then...
3/ when I clicked on InternalMap, there's only the maps for MM8, how do I load the maps for MM6 and MM7?

Thanks.
Last edited by Vaulth516 on Nov 16 2020, 17:42, edited 3 times in total.


Return to “Might and Magic”

Who is online

Users browsing this forum: No registered users and 10 guests