Показать сообщение отдельно
Непрочитано 11.09.2013, 18:27   #26
Супергерой

По умолчанию Re: Lineage 2 .unr файлы (карты)

Цитата:
Сообщение от oSg Посмотреть сообщение
пишу в надежде, что кто-нибудь подскажет в каком направлении курить

задача: сменить на карте один статикмеш на другой (конкретно - качающиеся деревья на статичные)

что делаю (в карте):
1) заменяю имена (строковые)
2) меняю позиции таблицы экспорта и импорта с учетом сдвигов из-за разной длины строк

вот тут пока уперся из-за незнания, как работает экспорт/импорт
подозреваю, что нужны изменения в таблице импорта (name index / object index), пока не пойму откуда их брать

можно в пм, за любую инфу буду благодарен

upd: собственно, запись импорта
Код:
60 7e		Engine
19		StaticMesh
f8 ff ff ff	Outer (-8)
4e 7f		Name (orenGtree3)
и вопросы:
1) что есть OuterObject? (тоже разобрался)
2) как резолвится по последним 2 байтам имя объекта ? (разобрался)
Не думаю что менять текущие строки хорошая идея, так так можно поломать другие объекты, безопаснее добавлять новые.
NameTable стоит перед массивом основных данных который нельзя менять, так как в нем хранятся смещения по файлу. Поэтому новую увеличенную NameTable переносим за данные.

С изменением координат проблем нет, так как тип float имеет фиксированный размер 4 байта.
А вот ссылка на StaticMesh в зависимости от индекса в ImportTable может быть 1 байт(если < 64) или 2 байта. Поэтому если ссылка занимала 1 байт, а размер ImportTable >= 63, то объект заменить на новый не получится.
Еще печалька в том, что не у всех объектов есть свойство Rotation, что тоже накладывает некоторые ограничения на замену.
__________________
l2clientmod / l2io
acmi вне форума Отправить сообщение для acmi с помощью ICQ Ответить с цитированием
Сказали спасибо: