Heroes 4 Map Generator / Utility

The old Heroes games developed by New World Computing. Please specify which game you are referring to in your post.

Moderator: Moderators

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 11 2016, 0:32

Okay! So here's a quick example of drag and drop in play. Open up a map, and select / open an event and its scripts. Highlight the script(s) to move.

Image

Next, click and drag the script(s) to the sequence node (or under a sequence node if there are already scripts there) you want to move them to. In the example below, I have dragged to the highlighted sequence (can't see the mouse in the screen capture).

Image

Now, release the mouse button to drop the script(s) in place. The scripts will be moved, and right now the node will collapse and you will have to hit the expand icon to see the scripts.

Image

Finally, hit the save button (or save as somewhere else), and view the editor to see that the script or scripts were moved. In the example below, I have to click and open MANY scripts in order to get to the script in question. No more need to do that if I just want to move a script :)

Image

Here's an example of when this feature would be really helpful: Say you have created several scripts, but forget that the scripts should only be run for a particular hero. No! We used to have to create a conditional, and then redo the scripts under the conditional. Now all we have to do is create the conditional, and then drag and drop the scripts where they need to be.

And I just found a bug with drag and drop that I'll have to address >.< It happens when you select one or more scripts and try to drag and drop them into the same sequence. I probably introduced that bug when I was fixing another.. Oh well I'll get it taken care of.

Edit: I believe I have fixed the bug mentioned above.

User avatar
Baronus
Assassin
Assassin
Posts: 288
Joined: 06 Jun 2015

Re: Heroes 4 Map Generator / Utility

Postby Baronus » Jun 11 2016, 10:23

Super! Good thing will be copy this forum guide to pdf? format and add to MG. The best learning is using examples... Very, very good!:-)

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 12 2016, 4:37

Got deleting scripts working and am now working on adding new scripts.

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 16 2016, 3:27

I can add new scripts now, but I have an issue to solve before I can change one script type to another, such as changing a display script to a conditional script.

Once that's done and working, I need to make it so that we can paste scripts to any sequence, rather than just the top level sequence, since I've already done that for adding new scripts.

I also want to add key bindings so that ctrl + c and ctrl + v work, which should be pretty simple and straightforward.

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 19 2016, 17:30

Good news! I came up with a solution to the problem of changing a script from one type to another (which required a small infrastructure overhaul) and have retested all the important pieces (and fixed the bugs from the infrastructure change).

I've also updated the script tree so that scripts can be pasted to any sequence script (the sequence must be highlighted or the scripts will be pasted to the top level sequence).

I've added key bindings for ctrl + c and ctrl + v to the script tree, so all that is left is to get the key bindings in place for events. Then, I'll message Kalah and get the initial release of the H4MG out :)

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 20 2016, 4:25

I believe all key bindings for ctrl + c and ctrl + v. I also found a couple additional bugs which I fixed as well.

I think I'm ready to go ahead and put out the initial release of the H4MG. I've sent Kalah a private message so that he can tell me where to send the zip file and description of the tool.

If anyone finds bugs (which there are bound to be), please follow the instructions in the readme, or just post here / send me a pm and I'd be more than happy to walk you through what would be most helpful in finding and fixing the bugs.

And of course, if you have any features to request (or to move up in priority), just let me know here.

Right now, the next thing on the list to implement is selecting an area of the map and giving options such as copy and paste.

User avatar
Kalah
Site Admin
Site Admin
Posts: 19993
Joined: 24 Nov 2005

Re: Heroes 4 Map Generator / Utility

Postby Kalah » Jun 20 2016, 20:32

I have created a dedicated page for the mod here. It can be spruced up with pictures if you want to.
In War: Resolution, In Defeat: Defiance, In Victory: Magnanimity, In Peace: Goodwill.

dlevin
Leprechaun
Leprechaun
Posts: 2
Joined: 21 Jun 2016

Re: Heroes 4 Map Generator / Utility

Postby dlevin » Jun 21 2016, 6:21

Hi, I have a question for iLiVeInAbOx05.
I 'm looking for an opportunity to create a game bot for Heroes 4. Now I 'm trying to find coordinates of map objects in unzipped gzip map file (within .h4c file). Would you please explain where these bytes are?

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 21 2016, 13:57

Kalah wrote:I have created a dedicated page for the mod here. It can be spruced up with pictures if you want to.


Thanks Kalah! Is it possible to navigate to it from the main page? Also, would it be possible to make a small announcement somewhere?

Edit: I see the announcement and was able to navigate to the page under general / all articles, thanks Kalah!

dlevin wrote:Hi, I have a question for iLiVeInAbOx05.
I 'm looking for an opportunity to create a game bot for Heroes 4. Now I 'm trying to find coordinates of map objects in unzipped gzip map file (within .h4c file). Would you please explain where these bytes are?


Hi dlevin :) A couple questions first:

1) What programming language are you looking to use when creating this game bot?
2) Do you know how to get to the block in the .h4c files that contains the objects?

If you go to the original post in this thread, I have a link to my documentation of .h4c files. If you open that up, you can search for the following heading: "Adventure / landscape objects:" Each object starts with an int (4 bytes) indicating the row, followed by an int indicating the column, and then another int indicating the level (above ground 00 00 00 00, or below ground 01 00 00 00). The objects block starts with an int indicating how many objects follow.

For my first question, I have libraries for java that I will eventually make available to anyone that is interested. There is still work for me to do to make them more complete before I do so, but I can easily get a list of objects for the above and below ground, then for each object you have methods available to get the row, column, and level.

For my second question, unfortunately I do not know a way to locate the starting point of the map objects that will work every time. My parsing libraries step through .h4c files section by section, which is how the files seem to be arranged. There isn't any special sequence of bytes that indicates the start of each section.

Hope this helps. Let me know if you have any other questions :)


I have updated the original post here to add a link to the H4MG description / download page.

dlevin
Leprechaun
Leprechaun
Posts: 2
Joined: 21 Jun 2016

Re: Heroes 4 Map Generator / Utility

Postby dlevin » Jun 22 2016, 8:58

iLiVeInAbOx05 wrote:Hi dlevin :) A couple questions first:

1) What programming language are you looking to use when creating this game bot?
2) Do you know how to get to the block in the .h4c files that contains the objects?


For your first question, I prefer Python. For your second question, I have read your documentation, but it is not so clear to me where is the start of object block. Please specify in the attached code fragment. The code begins with int 00 00 f8 00( block with artifact properties according to your documentation).

Code: Select all

00 00 f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5e 17 00 00 5d 00 00 00 25 00 00 00 01 00 00 00 00 19 00 69 6e 74 65 72 6e 61 6c 2e 57 61 6c 6c 73 2e 63 61 76 65 72 6e 2e 31 30 62 00 00 56 00 0d 00 73 79 73 74 65 6d 5f 6f 62 6a 65 63 74 00 00 04 00 77 61 6c 6c 00 00 00 00 00 00 3e 00 00 00 7c 00 00 00 01 00 00 00 00 19 00 69 6e 74 65 72 6e 61 6c 2e 57 61 6c 6c 73 2e 63 61 76 65 72 6e 2e 30 38 64 00 00 56 00 0d 00 73 79 73 74 65 6d 5f 6f 62 6a 65 63 74 00 00 04 00 77 61 6c 6c 00 00 00 00 00 00 41 00 00 00 7d 00 00 00 01 00 00 00 00 18 00 69 6e 74 65 72 6e 61 6c 2e 57

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 22 2016, 15:01

dlevin wrote:For your first question, I prefer Python.


Okay, I was just asking to see if my libraries could make your life easier :)

dlevin wrote:For your second question, I have read your documentation, but it is not so clear to me where is the start of object block. Please specify in the attached code fragment. The code begins with int 00 00 f8 00( block with artifact properties according to your documentation).

Code: Select all

00 00 f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5e 17 00 00 5d 00 00 00 25 00 00 00 01 00 00 00 00 19 00 69 6e 74 65 72 6e 61 6c 2e 57 61 6c 6c 73 2e 63 61 76 65 72 6e 2e 31 30 62 00 00 56 00 0d 00 73 79 73 74 65 6d 5f 6f 62 6a 65 63 74 00 00 04 00 77 61 6c 6c 00 00 00 00 00 00 3e 00 00 00 7c 00 00 00 01 00 00 00 00 19 00 69 6e 74 65 72 6e 61 6c 2e 57 61 6c 6c 73 2e 63 61 76 65 72 6e 2e 30 38 64 00 00 56 00 0d 00 73 79 73 74 65 6d 5f 6f 62 6a 65 63 74 00 00 04 00 77 61 6c 6c 00 00 00 00 00 00 41 00 00 00 7d 00 00 00 01 00 00 00 00 18 00 69 6e 74 65 72 6e 61 6c 2e 57


Hmm, is there another 00 00 f8 00 followed by 31 bytes before this snippet? I may have something wrong in my documentation and I'd like to have a look at that particular map if you don't mind. I'll pm you my email. Assuming there is another 00 00 f8 00, I have one extra 00 unaccounted for while going through these bytes using what I have documented. If there's not another 00 00 f8 00, that additional 00 probably means either carry in or carry out artifacts is unchecked (don't remember which), which I'll need to fix in my documentation.

Either way, your objects should start at 5e 17 00 00 (number of objects placed on the map). Then for the first object, its row is 5d 00 00 00, its column is 25 00 00 00, and its level is 01 00 00 00 (underground).

Your next object appears to be at 41 00 00 00 7d 00 00 00 01 00 00 00

Also, something important which I don't seem to mention in my documentation: byte ordering for .h4c files is little endian. I added this little tidbit to the beginning of the documentation.
Last edited by Anonymous on Jun 23 2016, 13:29, edited 1 time in total.

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 23 2016, 3:58

So my documentation was almost correct. The AI artifact properties are preceded by 00 00, not just 00. My code had it correct, but I must have forgotten to go back and update the documentation.

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 26 2016, 5:20

So I noticed after I sent the initial delivery to Kalah that I forgot to implement adding new events, so I went ahead and got that taken care of.

I also started on the area selection tool, and have implemented the drawing portion. There's a new icon on the toolbar for this (see below).

Image

Once you have clicked the selection tool icon, simply left click and drag to enclose the area you would like to select.

Image

The freeform will close itself on mouse release. If you left click and drag a second time, it will clear the old selected area and you will be drawing a new one.

So far that's all it does. I need to determine how I'm going to approach grabbing everything inside the boundary so it's done in a reasonable way. I'll also need to decide how I will determine if the selected area is right clicked to view more options (probably if the user right clicks inside or near the drawn area).

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 29 2016, 3:57

Update: I got to the point where I am able to copy all objects within a selected area. I haven't done a paste yet to another map, but that will be simple.

Next I'll need to work on getting the terrain rows and columns that are selected and save those. After that is elevation, but I'll probably leave that until later.

I also need to get the mechanism in place to actually tell the H4MG to "Copy selected area", which will likely consist of a context menu that can be accessed by right clicking.

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jun 30 2016, 14:40

Just wanted to announce that going forward, this project will be associated with Equilibris.

I'll still post progress on the things I've been working on, but will probably not post as much about the Equilibris specific tasks that are being applied to the H4MG until we've reached a certain point.

Steven Aus
Demon
Demon
Posts: 325
Joined: 08 Feb 2006
Location: Australia

Re: Heroes 4 Map Generator / Utility

Postby Steven Aus » Jul 2 2016, 12:25

I want to congratulate you on all the work you've done to develop and release the H4MG, and now get it included with Equilibris. It's a fantastic effort you've done for the community. :)

User avatar
Karmakeld
CH Staff
CH Staff
Posts: 1092
Joined: 12 Nov 2011

Re: Heroes 4 Map Generator / Utility

Postby Karmakeld » Jul 3 2016, 13:12

Indeed it's stuff like this that keeps H4 and the older ones alive, and it's Great to see it being linked with Equilibris - that brings hope of more new stuff.
I'm silent in seven languages - and I got all my familys fear.
Everytime you throw dirt, you loose a little ground

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jul 3 2016, 19:36

Thanks guys :) I'd definitely like to generate and see more interest in H4!

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jul 9 2016, 3:16

Alright! So I have successfully copied objects and terrain (still work to be done for elevation) between maps of the same size! I still have some work to do with maps of different sizes (mostly converting rows and columns between the different sizes).

I'll try to get some screen shots or a demo video posted soon :)

User avatar
iLiVeInAbOx05
Equilibris Team
Equilibris Team
Posts: 565
Joined: 21 Jul 2014

Re: Heroes 4 Map Generator / Utility

Postby iLiVeInAbOx05 » Jul 12 2016, 4:31

Hello again! Here are some screen shots for the copy and paste of an area on a map. Eventually I'll get around to creating some demo videos for the important pieces.

First, I've opened up two maps of the same size (both XL).

Image

Next, we select an area to copy, then right click on the map window and select "copy".

Image

Now, we go to the second map, right click it, and select "paste".

Image

Bam! Now the selected data has been copied to the new map. Don't forget to save your changes!

Image

Lastly, we can open the map in the editor to have a look. Check out the mini map.

Image

A couple notes: 1) The current way copying and pasting portions of a map is done is kind of hacked together, and is not exactly how it will be once I get some infrastructure in place. The main difference will probably be that you must be in area select mode in order to have access to those particular context menus. That or I might just have a main context menu with sub menus which contain the options.

2) Elevation is currently not copied since I still have work to do to get its grid system in place.


Return to “Heroes I-IV”

Who is online

Users browsing this forum: No registered users and 6 guests