© A.I.M. team

Создание лиц персонажей. Часть 2

В первой части статьи уже упоминалось о том, что координаты глаз и губ тактических портретов рпц-персонажей и чаров жестко «зашиты» в движке игры и говорилось о том, что если вы хотите их корректного отображения в интерфейсе, то необходимо создавать портреты своих персонажей с учетом приведенных таблиц смещений. Однако, это не всегда бывает возможно, в тех случаях, когда координаты глаз и губ получаются меньше табличных, такой способ непригоден. Есть еще два способа:
  1. прямая правка таблиц координат в HEX-коде экзешника;
  2. внесение координатных поправок в Sti-файл портрета.

Все эти способы имеет смысл применять в том случае, если создается мод на базе уже готового движка, а не его компиляцией из исходников, в последнем случае проще поправить таблицы прямо в исходниках, еще лучше — вынести их из движка в отдельный ресурсный файл.

Правка координат портретов RPC и чаров в HEX-коде движка

Раз координаты смещений глаз и губ персов прописаны в сорцах, соответственно их значения «прошиваются» в исполняемый файл движка, надо только найти смещения, по которым они там находятся, и поправить их в hex-редакторе на нужные. В разных версиях игры эти смещения различны, поэтому имеет смысл искать их по значению в той конкретной версии, на которой делается мод. Например, вы сделали новый портрет RPC-57 — 57.sti (бывший Мигель), у которого значения координат глаз и губ получились соответственно: 10, 5, 7, 20. Далее делаете следующее:

Так поступаете со всеми вновь созданными реписями.

С чарами сложнее, порядок поиска исходных зачений координат для них иной. Координаты их глаз и губ в исходниках прописаны не в одной, а в четырех (полный дурдом!) таблицах, поэтому их hex-последовательность в экзешнике другая, а имено:

На каждый тип координат отводится 32 байта (по два на одно значение). Именно в такой последовательности их и надо искать в движке и, прежде всего, локализовать смещение, по которому находятся начало значений координат для портретов чаров. Для этого ищется следующая подстрока, соответствующая началу таблицы X-координаты глаз:

08 00 09 00 08 00 06 00 0D 00 0B

Далее, отсчитываете от начала искомое исходное значение соответсвующей координаты и заменяете его на нужное. В принципе, ничего сложного в такой правке hex-кодов нет, но, на всякий случай, сделайте копию файла ja2.exe, перед ее началом. Если умеете писать патчи, то определив соответствующие смещения для всех координат, прописываете их новые значения в патч, для авто-правки экзешника.

Внесение координатных поправок в sti-файл портрета

Давно собирался проверить, понимает ли движок координаты глаз и губ, прописанные непосредственно в sti-файле портрета. Наконец сподобился и проверил, оказалось — понимает, что дает возможность прописывать нужные координаты прямо в стишку, без правки экзешника. Этот способ менее радикальный, чем прямая правка hex-кода или сорцов, но зато более гибкий и быстрый.

В sti-файл прописываются не реальные координаты, определенные при создании портрета, а разница между новыми координатами (XYsti) и теми, которые «зашиты» в движок (XYexe).

В качестве примера рассмотрим приведенные выше координаты RPC-57:

XYsti = 10, 5, 7, 20
XYexe = 9, 8, 8, 24

Вычитая из верхней строки нижнюю, получаем значения, которые следует записать в стишку 57.sti:


Если у вас появились вопросы по статье, то их лучше задавать на форуме, в ветке по редактированию JA2, бываю там регулярно.

Удачи,
VM aka «Генеральный застройщик пустоши» 8)