Отправлено 03 Ноябрь 2010 - 02:46
Продублирую и в этот топик пост с СП (думаю лишним не будет):
Ответ на один из вопросов на тему "Как ковырять xdb-моды":
1. Файл 'fsgame.ltx' един для всех модов и располагается в корне папки установки игры. Именно его читает при запуске игры движок и далее уже, руководствуясь путями/именами прописанных там переменных, грузит те или иные папки.
2. Уже ранее писал о том, что:
а) в первую очередь движек читает файли с расширением *.dbX из корня игры. Эти файлы частично распаковываются в виртуальной папке 'gamedata' виртуального диска E:\.
Ни папка, ни диск не имеют никакого отношения к физической/логической структуре имеющейся на компьютере. Это все в ОЗУ (RAM) компьютера, точнее в выделенной для игры области.
Почему упомянул 'частично' - потому что разработчики все же подразумевали, что далеко не каждый компьютер имеет достаточный объем ОЗУ, и распаковываются только те файлы, которые необходимы в настоящий момент (смотрим тот же system.ltx и пр. в которых упоминаются секции объектов).
б) при наличии папки 'gamedata' в корне папки установленной игры, движок при необходимости подгружает (в виртуальную папку игры!) недостающие файлы из нее. В том же 'fsgame.ltx' имеются флаги приоритетности и, при установке их, файлы из 'gamedata' могут движком 'замещать' уже имеющиеся файлы из *.dbX.
в) в последнюю(!) очередь обрабатывается папка, соответствующая переменной $mod_dir$ из 'fsgame.ltx', т.е. из подпапки '\mods' в подавляющем большинстве случаев. Из этой папки подгружаются файлы с расширениями *.xdbX.
Т.о. файлы из папки '\mods' имеют безусловный приоритет перед остальными и все попытки разархивировать/изменить коды в '\gamedata' будут замещаться движком файлами из упакованных файлов папки '\mods\*.xdbX'.
Так как же модифицировать моды типа NLC6, использующие паки в папке 'mods'?
Очень просто:
a) модифицируемые файлы, как и в привычных модах, кладем в распакованную папку '\gamedata' и ставим в 'fsgame.ltx' для переменной '$game_data$' первый параметр: 'true', вместо 'false'.
б) Если вы модифицируете файлы, которых нет в файлах '\mods\*.xdbX' то все изменения заработают без дополнительных манипуляций.
в) Если же в в файлах '\mods\*.xdbX' присутствуют такие же файлы, то придется распаковать соответствующий '*.xdbX' в папку '\gamedata' и удалить его из '\mods'. Только после этого движок НЕ будет затирать ваши файлы прежними.
Т.о. отвечая на вопрос Gersh'а, по сути сводящийся к "Как же заменить в моде NLC6 звуки оружия на свои звуковые файлы, не создавая очередной архив 'nlc.xdbX'?", ответ пока один:
а) Распаковать в '\gamedata' файл '\mods\nlc.xdb1' и удалить его (или переместить в другое место).
б) Заменить/добавить свои файлы в папку '\gamedata'.
в) Подправить строку в файле 'fsgame.ltx', расположенном в корне папки установки игры:
$game_data$ = true | true | $fs_root$| gamedata\
Следует иметь ввиду, что последующие патчи/фиксы от разработчиков (очевидно следующим будет nlc.xdb4) могут пересечься с вашими 'добавками'. В этом случае вам придется опять 'плясать с бубном' ...
"Ведь совсем не важно от чего умрешь, куда важнее для чего родился..."