(24.07.2020 13:32)Zur13 Wrote: Правка: попытаюсь чуть подробнее описать места, которые для меня показались сложными
1. "Теперь осталось узнать, что такое esi. Вспоминаем, что в esi обычно сишный компилятор записывает данные для длительного хранения.", я с сишным компилятором не работал на уровне ассемблерного кода, потому для меня это неочевидно, к примеру если я буду разбиратть другой участок кода и окажется что сишный компилятор использует для длительного хранения не только esi, ну или еще есть какие-то штуки которые стоит знать о сишном компиляторе для успешного анализа ассемблерного кода? Может стоит привести какую-то ссылку где можно больше про это почитать?
2. "В структуре это:", тут я не совсем понял как можно перейти к структуре из приведеного участка кода, куда нужно смотреть или нажимать?
1. Не нужно настолько глубоко анализировать ассамблерный код, если ты его плохо знаешь. Я его анализирую только в редких случаях - если я не могу до конца понять всевдокод. Но псевдокод намного более читабелен. Используй его.
2. Смотри. Ты просто наводишь мышь на непонятное тебе выражение. В данном случае мы говорим о "Mon". Тебе подсвечивается выражение так
Нажимаешь на "Mon" ПКМ->jump to local type...
Тебя перекидывает на очередное окно, говоря что это.
Даблклик, и мы понимаем, что это структура монстра _BattleStack_*. Потому ты будешь это понимать сходу, но нужен небольшой опыт.
Лучше всего структуры, да и вообще многие места описаны в H3API от RoseKavalier. Это действительно самое богатое API для HoMM3, из которых я видел вживую. Правда у него идут уже свои названия
H3CombatMonster = _BattleStack_*.
PS: например вот только что я увидел из заголовочников RoseKavalier, что поле shooter->field_70 это shooter->isLucky