RoseKavalier/H3Plugins

A couple of questions

Closed this issue · 2 comments

Hi. First of all, you did really excellent work.
But I have a couple of questions and requests.
Context: I'm working on the stats/analytics layer for championships and streamers. Now they (e.g., https://msstudio.tv/sngonline/) are using very primitive HUD that requires manual updates. I already have a working prototype for the "local" part (homm->obs). It's not opensource yet due to horrible code quality, but it definitely will be.
So, what I have to ask:

  1. Do you know any convenient way to inject plugin dll into HotA version? HDMod doesn't support "packs" for HotA. For now, I'm just replacing cursors.dll lib with my plugin.
  2. Is there some kind of hooks list? I'm using only two for detecting keypresses and clicks. But it would nice to have a more flexible approach to identify game and day starts and ends.
  3. I found some annoying lack of data. For example, there are no secondary skills enum or no IDs for some (or for all) HotA artifacts. Is it completely missing (and I just need to figure out it myself), or it hasn't been opened yet?
  4. I'm trying to write something like APM meter, but I experienced a problem with "ghost" InputMessages in hook at 0x4EC660. Even if I skip copies of previous messages, I yet receive some strange events with different types just on mouse move. Do you have any advice?

As I said, this project is incredible, and I could not do anything useful without your codebase.

  1. Yes there are, but I respect their wish to not have customization so I will not discuss that.
  2. The largest source of information is wog source code and its IDA database, see H3API disclaimer.
  3. H3API had some information when the project was modifiable through HDmod but I removed everything since it's no longer meant to work with it. Note that I've moved H3API to its own repository so if you have specific questions about it it might be better suited over there.
  4. 0x4EC660 is not so useful; even something like LowLevelKeyboardProc and LowLevelMouseProc might be better. Otherwise check the other sources I mentioned, you can find in-game functions that handle mouse/keyboard messages for pretty much every situation.

Thanks for your answers. I completed the initial version (https://github.com/averrin/homm-monitor). I hope it's useful for the community and I'll continue its development, but nevertheless it was fun =)