фан-сайт игры Mafia: the City of Lost Heaven
    

обновлено 05-03-2010 


Оглавление

Новости
Немного истории
Секреты и приколы
Моддинг Мафии
Пишем скрипты для Mafia
Как делать ADDin`ы
Доступ к DTA файлам
Чемпионат по игре
The Alive mod v.16
Alive Mod Evolution 18.0
Секреты Аливе мода
Фотогалереи Alive мода
Видеогалерея
Интересные истории
Наш музей Мафии
Архив файлов
Офф-топик
Юморная страничка
Гостевая книга
Полезные ссылки
Если хотите помочь
Благодарности
Наш форум

Как делать ADDin`ы (BSV-файлы). Часть вторая.

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

Что нам потребуется?
- Вы должны знать, что и где изменять, например, в файле tree.klz.

Дополняем файл BSV
Вы можете добавить в файл BSV свои изменения файлов tree.klz, scene.4ds, cache.bin и scene2.bin (возможно, вы захотите удалить какие-нибудь из уже существующих скриптов для того, чтобы ваши скрипты работали правильно). В первой части данного урока я упомянул, что там должны быть метки-заполнители - 234 байта - сразу после определения папки миссии. Теперь мы познакомимся немного ближе с этими заполнителями.
В общих чертах файл BSV начинается как-то так:
1. Имя ADDin`а - 20 байт:
Brainy Test
2. Папка миссии - 20 байт:
freeridenoc
После этого следует такая структура:
OptTREE (Byte) флаг 00 или 01, tree.klz
TreePosNb (Byte) количество позиций для изменений в tree.klz
OptCACHE (Byte) флаг 00 или 01, cache.bin
CachePosNb (Byte) количество позиций для изменений в cache.bin
OptSCENE4DS (Byte) флаг 00 или 01, scene.4ds
Scene4dsPosNb (Byte) количество позиций для изменений в scene.4ds
Scene2Bin (Byte) флаг 00 или 01, scene2.bin
Scene2BinNb (Byte) количество позиций для изменений в scene2.bin
Информация как строка (String) * 226 байт (всегда "00")

Как вы можете видеть, для каждого файла есть флаг, определяющий, нужно ли изменять соответствующий файл или нет. То есть если нам не надо вносить никаких изменений, к примеру, в tree.klz, ставим 00 и идём дальше.
Следующий пример покажет вам, как вставить ваши изменения в файл BSV.
Мы хотим изменить информацию в tree.klz. Там будет только одна позиция для изменения, также мы хотим внести изменения в scene.4ds в двух местах. Для этого начнём наш файл BSV так:
1. Имя ADDin`a - 20 байт:
Brainy Test
2. Mission folder - 20 байт:
freeridenoc
01 01 -> tree.klz изменяем по одной позиции
00 00 -> cache.bin не меняем вообще
01 02 -> scene.4ds хотим изменить в двух местах
00 00 -> scene2.bin менять не будем ни по одной позиции
Информация * 226 байт (до этого момента должна быть "00")
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

После этого следует общая структура, которая повторяется n-раз:
SearchStringLength (Byte)
NbBytesToPut (Byte)
searchstr(16) Как строка (String) * 16 байт
PutStr(256) Как строка (String) * 256 байт

Итак, в нашем примере байты для изменения tree.klz должны быть следующими:
SearchStringLength: 08
NbBytesToPut: 44
Searchstr: b1 00 8f 41 81 00 00 21 00 00 00 00 00 00 00 00
Searchstr - наша строка для поиска правильной позиции в tree.klz для того, чтобы добавить туда новые байты. В нашем примере нам нужно только 8 байт, остальные мы ставим в 00, и они больше не используются.
PutStr:
b1 00 8f 41 81 00 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 81 00 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Эти байты вставляются в tree.klz на позиции поиска. В нашем примере нам нужно только 68 байт, остальные мы ставим в 00, и они не используются.
Далее, у нас нет байт для изменения cache.bin, следовательно мы это игнорируем. Но нам ещё доступны два изменения в scene.4ds.
Теперь следует такая же структура данных и для scene.4ds, но два раза, так как нам нужно менять две позиции.
Первое изменение:
SearchStringLength (Byte)
NbBytesToPut (Byte)
searchstr(16) Как строка (String) * 16 байт - первая строка для поиска в scene.4ds
PutStr(256) Как строка (String) * 256 байт - строка для вставки по найденной позиции в scene.4ds
Второе изменение:
SearchStringLength (Byte)
NbBytesToPut (Byte)
searchstr(16) Как строка (String) * 16 байт - вторая строка для поиска в scene.4ds
PutStr(256) Как строка (String) * 256 байт - строка для вставки по второй найденной позиции в scene.4ds
Далее, у нас нет байт для изменения оригинального файла scene2.bin, следовательно мы можем это проигнорировать.
С этого момента начинается информация, данная в первой части этого урока, начиная с пункта номер 4, то есть TestSceneMod и далее.




Последние новости
26.01.2010
Декларация форума или Наш ответ начинающим юмористам.
30.12.2009
Поздравляю всех поклонников игры Mafia с наступающим Новым 2010 годом!
26.11.2009
Редактор выпустил свой очередной фильм.
23.11.2009
Cameraman Script (скрипт свободной камеры) выпущен в составе scene2.bin
19.11.2009
Сегодня сайту Вебгеймер.RU исполнилось 3 года!
20.09.2009
Cache Editor v1.0 by Driv1r
20.05.2009
Cameraman MOD by MikeMouse или Free Camera in Mafia game


Рекомендую почитать

Rating@Mail.ru

все права защищены © www.webgamer.ru 2003-2009 © mikemouse 2003-2009 ©

Rambler's Top100