(03.09.2022 06:26)wessonsm Wrote: Расширение и перенос структуры в памяти как делается?
Зависит от того, где хранится структура и как к ней обращается код игры. Самый простой способ переноса - для динамических стуктур в динамической памяти, размер которых заранее не определён (там можно обойтись бинарным патчем, т.к. всё делает сам движок игры при создании структуры в памяти, т.е. патчится только конструктор и дезруктор). Посложнее - статические структуры в статической/динамической памяти - там придётся выделить память и перенести всю адресацию: в зависимости от сложности это может быть всего 1 адрес (когда игра всегда получает доступ с помощью базовой адресации, что очень удобно для переноса структуры) или например 2000. Ну и самое сложное в Третьих Героях - структуры, которые игра хранит в стеке: для переноса этих структур потребуется расширение выделяемой стековой памяти или перенос в динамическую память с заменой всех участков кода. В общем, рекомендую начинать с самого простого (в исходниках плагинов на новые артефакты или новых монстров), а потом уже переходит к более сложному.
(03.09.2022 06:26)wessonsm Wrote: Я так понимаю, нужно пропатчить все места в коде игры, где идет обращение к полям этой структуры?
Да, абсолютно все.
(03.09.2022 06:26)wessonsm Wrote: А как тогда убедиться, что нашли действительно ВСЕ такие места?
Методом научного тыка. Переносим и смотрим, работает ли вообще игра, если что-то начинает работать не так или вообще не работает - значит перенесено не всё. Когда появится опыт, то количество ошибок будет меньше.
(03.09.2022 06:26)wessonsm Wrote: Ведь значительная часть кода не разобрана даже.
Для переноса структур исполнительный код разбирать практически не потребуется. Самое главное, чтобы была разобрана сама структура.
(03.09.2022 11:45)daemon_n Wrote: сколько ни видел обращений к структурам, они все по ссылке идут.
Далеко не все. Оригинальных базовых адресов с десяток вряд ли наберётся. А вот если одна структура является частью тонны других структур, то её вообще очень затратно переносить (например структуру слотов армии вряд ли кто-то захочет переносить - ради добавления 8-го слота придётся переделать чуть ли не половину игрового кода, что может сделать только конченный психопат-задрот).
(03.09.2022 11:45)daemon_n Wrote: Так понимаю, уведомить Эру надо, потому что она раньше всех плагинов на адреса цепляется?
До сих пор не понимаю, зачем это было сделано в Эре. Та же HoA совмещается с HD-модом по части перенесённых структур с помощью базовых адресов, что было унаследовано и в версии HD-мода для Эры, за счёт чего HD-мод видит новых монстров, новые артефакты и даже новые города.