Все эти способы имеет смысл применять в том случае, если создается мод на базе уже готового движка, а не его компиляцией из исходников, в последнем случае проще поправить таблицы прямо в исходниках, еще лучше — вынести их из движка в отдельный ресурсный файл.
Правка координат портретов RPC и чаров в HEX-коде движка
Раз координаты смещений глаз и губ персов прописаны в сорцах, соответственно их значения «прошиваются» в исполняемый файл движка, надо только найти смещения, по которым они там находятся, и поправить их в hex-редакторе на нужные. В разных версиях игры эти смещения различны, поэтому имеет смысл искать их по значению в той конкретной версии, на которой делается мод. Например, вы сделали новый портрет
Так поступаете со всеми вновь созданными реписями.
С чарами сложнее, порядок поиска исходных зачений координат для них иной. Координаты их глаз и губ в исходниках прописаны не в одной, а в четырех (полный дурдом!) таблицах, поэтому их
На каждый тип координат отводится 32 байта (по два на одно значение). Именно в такой последовательности их и надо искать в движке и, прежде всего, локализовать смещение, по которому находятся начало значений координат для портретов чаров. Для этого ищется следующая подстрока, соответствующая началу таблицы
08 00 09 00 08 00 06 00 0D 00 0B
Далее, отсчитываете от начала искомое исходное значение соответсвующей координаты и заменяете его на нужное. В принципе, ничего сложного в такой правке
Внесение координатных поправок в sti-файл портрета
Давно собирался проверить, понимает ли движок координаты глаз и губ, прописанные непосредственно в sti-файле портрета. Наконец сподобился и проверил, оказалось — понимает, что дает возможность прописывать нужные координаты прямо в стишку, без правки экзешника. Этот способ менее радикальный, чем прямая правка hex-кода или сорцов, но зато более гибкий и быстрый.
В sti-файл прописываются не реальные координаты, определенные при создании портрета, а разница между новыми координатами (XYsti
) и теми, которые «зашиты» в движок (XYexe
).
В качестве примера рассмотрим приведенные выше координаты RPC-57:
XYsti = 10, 5, 7, 20
XYexe = 9, 8, 8, 24
Вычитая из верхней строки нижнюю, получаем значения, которые следует записать в стишку 57.sti:
Если у вас появились вопросы по статье, то их лучше задавать на форуме, в ветке по редактированию JA2, бываю там регулярно.
Удачи,
VM
aka «Генеральный застройщик пустоши»