Auto-translated
I didn't hesitate and spent yesterday evening searching for and testing the program; I'm honestly shocked. Now, many "strange" choices of main heroes from old parties make sense – people simply knew all the possible upgrade options for their heroes and chose the one who levels up better and more consistently. The program is a huge cheat – it shows all the heroes on the map at the moment the memory is scanned, including those in the taverns of each player and in prisons (you can't hide the fact that Picardril came to you second during restarts, etc.). This gives a real in-game advantage in the form of information that cannot be obtained by normal means. For each hero, it displays the complete upgrade tree, meaning that while one player tries to find useful skills for their main hero, searching the map for the missing skill and wasting time, the other knows exactly when and what to take to get the desired set of skills... I think no further comments are needed.
In the latest versions, the program's functionality in Multiplayer has been removed, but this is such a weak protection against cheaters that it's ridiculous. First, there are older versions that work perfectly in Multiplayer (the only good thing is that they have been removed from public access, but no one who has them will admit it). Second, you can load a Multiplayer save into Singleplayer, and the program will show everything as if it were on a plate (password-protected saves help here, but as practice shows, this is not a panacea). Third, there are plenty of skilled programmers now, and removing even the exception from the new version of the program that prevents it from working in Multiplayer, I think, is not a problem at all... What can I say... the world will never be the same. If before I was just surprised how opponents leveled up such well-rounded Valeks, and thought they were just lucky, now I strongly suspect that it's not about luck.
Now, some thoughts on what to do about it. Vic suggested an interesting idea about changing the type of variable for the tree number; I don't know how much it will help, because as I understand it, the program extracts the tree number from the memory for each hero, and it may not care what type it is. Throughout the history of hunting cheaters, I have tried to come up with a solution that would allow players to be 100% protected from unfair play from the other side. As I see it, such a solution exists, and I will try to describe it. Heroes of Might and Magic is not a demanding game; it doesn't consume many resources, so you can rent a virtual machine on the network, upload the server to it, and create N accounts on it (the number depends on the power of the virtual machine, which directly depends on money). Each user can log in to the server through a terminal under their account; they have zero rights there – just a shortcut to Heroes of Might and Magic on the desktop, and no access to saves or game files (this immediately eliminates the possibility of opening saves and editing text files). As a result, the connection in the game will always be local (both players are on the same server), and all sorts of disconnections due to Hamachi and similar problems will be eliminated. Also, all programs that extract information from memory will become useless – the game is not running on the player's computer; they only have terminal access to the computer on which it is actually running. The only question is the cost of such an event (initial for organization and subscription for paying for the virtual machine), the availability of a skilled person who can bring the idea to life (I'm not a programmer or administrator; I'm more into fixing hardware), and, in fact, the need for this for the community (in my opinion, it is absolutely necessary, but people are different). That's it in a nutshell.