ГлавнаяТуториалы   Программы   Гостевая  О другом

Cоздаем BSV-файлы

 

Этот туториал написал наш заграничный друг Braingib – создатель BSV. Он же и придумал BSV-файлы, которые импортируется в игру через меню «ADDin» BSV, начиная с 4-ой версии.

 

BSV-файл – файл, содержащий изменения scene2.bin и даже некоторые изменения других миссионных файлов. Теперь, можно сказать, наступил качественно новый этап в редактировании Мафии. С возможностью создания BSV-файлов, в небытие уйдут моды, которые мало изменяют саму scene2.bin, потому что все эти изменения будут заключать компактные BSV-файлы, и нам не будет необходимо  пересылать друг другу лишний материал родовой scene2.bin, который и так есть у всех.

 

BSV-файлы содержат данные мода, т.е. модели, звуки, текстуры и файлы настроек (тайбелсы).

 

Часть первая рассказывает, как изменения файла scene2.bin (в дальнейшем – сцена, будем славянофилами:)) превратить в BSV-файл.

 

Часть 1

Что надо уметь?

- Пользоваться меню «ADDin» BSV 6.0

- Уметь пользоваться Hex-редактором.

 

Сначала создадим небольшой модик, который превратим в BSV-файл.

 

Запускаем BSV, загружаем “scene2.bin из папки “freeridenoc”. Вставляем в этот файл человека, имя которому «brainy»  и баррел с названием “brainybarrel” . Для этого нажимаем «Insert» -  Human, называем его brainy, жмем на кнопку Insert. Затем «Insert» -  «Things»,  присваиваем имя  “brainybarrel, жмем на кнопку «Insert». Это и есть весь наш мод.

 

Теперь займемся созданием BSV-файла, который автоматически импортирует brainy и brainybarrel в чистую, т.е. немодифицированную сцену, какой ее создали чехи. Назовем этот BSV-файл brainy.BSV.

 

Открываем Hex и создаем новый файл.

 

1. 20 байт – название BSV-файла, например, Brainy Test 42 72 61 69 6e 79 20 54 65 73 74 20 20 20 20 20 20 20 20 20

 

2. Название папки миссии, в которую вы хотите внести изменения, в нашем случае это freeridenoc  66 72 65 65 72 69 64 65 6e 6f 63 20 20 20 20 20 20 20 20 20

 

3. 234 обнуленных байта

 

4. 20 проверочный байт, представленные уникальной строкой, которые должны показать программе, была ли модифицирована данная сцена каким-либо BSV-файлом. Мы в качестве такой строки-проверятеля используем brainy, т.к. в родовой сцене не найдется объекта с таким именем, а в модифицированной с помощью BSV-файла– да. 62 72 61 69 6e 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20

 

5. В BSV-файле далее будет следовать два лонга, описывающих два последовательно следующих за ними блока. Первый – блок, содержащий информацию о всех моделях BSV-файла, второй – блок, содержащий информацию о всех скриптах. Лонги указывают размер блоков соответственно.

 

Теперь мы должны определить эти два блока и посчитать их размер. Все наши видоизменения:  brainy и brainybarrel.

 

Откройте Hex-ом модифицированный файл, и найдите brainy. Найдется 2 секции, одна описывает модель, другая, находящаяся в конце, скриптинг.  

 

6. Начнем с первой секции - модели.

 

Первая секция всегда начинается с 10 40, за которыми идет long, представляющий количество байт, необходимых для описания модели. У  brainy размер вот такой: 97 00 00 00.  После первой секции объекта brainy последует первая секция объекта brainybarrel, начинающаяся тоже с 10 40, но здесь уже другой лонг описывает кол-во инфы об объекте 9d 00 00 00. Общий размер файлов: для этого либо складываем два лонга:  97 00 00 00 + 9d 00 00 00 = 34 01 00 00, либо копируем эти две секции с описанием объектов в новый файл, в котором считаем общее количество байт.  Второй способ намного проще.

 

Далее в brainy.BSV пишем лонг, который представляет собой кол-во байт, описывающих все модели, импортируемые BSV-файлом. В нашем случае всего два объекта: brainy и brainybarrel, а лонг, резервирующий место для этого оющего блока моделей: 34 01 00 00 (NbSCBin1).

 

Еще раз найдите brainy, только на этот раз обратите внимание на вторую секцию - скриптинг. Вторая секция всегда начинается с 21 ае, за которыми идет лонг, описывающий длину второго блока. Для Brainy лонг - 86 00 00 00, а для brainybarrel - 48 00 00 00

 

Теперь нам тоже необходимо сложить эти два лонга, чтобы узнать общий размер второго блока BSV-файла - скриптинга. 86 00 00 00 + 48 00 00 00 = ce 00 00 00  в Hex калькуляторе, или опять же: создаем новый файл, в который  копируем эти два блока и считаем общее количество байт.

 

Продолжаем редактировать наш BSV-файл, далее пишем общий размер второго блока: ce 00 00 00 (NbSCBin2 ) .

 

 

 7. Теперь копируем все данные о первой секции brainy и brainybarrel в BSV-файл. Помним, что эта первая секция начинается с 10 40, ищем нашего любимого brainy, после первой секции которого с 10 40 начинается первая секция brainybarrel. Копируем две этих секции и вставляем после  NbSCBin2 (то бишь по хронологии):

 

10 40 97 00 00 00 11 40 0a 00 00 00 09 00 00 00 10 00 0d 00 00 00 62 72 61 69 6e 79 00 20 00 12 00 00 00 21 98 dd c4 00 00 a0 c0 00 00 f0 41 22 00 16 00 00 00 fd 2f 0d 25 00 00 00 00 00 00 80 3f 00 30 8d 24 2d 00 12 00 00 00 00 00 80 3f 00 00 80 3f 00 00 80 3f 2c 00 12 00 00 00 82 ca dd c4 5b 3f b3 c0 bd 59 8a 40 20 40 1b 00 00 00 10 00 15 00 00 00 50 72 69 6d 61 72 79 20 73 65 63 74 6f 72 00 12 20 13 00 00 00 45 6e 65 6d 79 31 32 4b 2e 69 33 64 00

10 40 9d 00 00 00 11 40 0a 00 00 00 09 00 00 00 10 00 13 00 00 00 62 72 61 69 6e 79 62 61 72 72 65 6c 00 20 00 12 00 00 00 2c 5a 8c 42 ea 95 e9 40 44 49 e6 42 22 00 16 00 00 00 22 d5 31 3f 00 00 00 00 a7 26 38 3f 00 30 8d 24 2d 00 12 00 00 00 c8 3b 6c 3e c8 3b 6c 3e c8 3b 6c 3e 2c 00 12 00 00 00 82 ca dd c4 5b 3f b3 c0 bd 59 8a 40 20 40 1b 00 00 00 10 00 15 00 00 00 50 72 69 6d 61 72 79 20 73 65 63 74 6f 72 00 12 20 13 00 00 00 78 62 61 72 65 6c 20 32 2e 69 33 64 00

 

8. Теперь вставляем вторую секцию со скриптингом в BSV файл. Ищем brainy, в результатах поиска выбираем ту секцию, которая начинается с 21 ае, именно секции с таким началом являются вторыми (описывающими скриптинг). Сразу после второй секции brainy будет и вторая секция brainybarrel, тоже начинающаяся с 21 ае, копируем их код:

 

 21 ae 86 00 00 00 23 ae 0d 00 00 00 62 72 61 69 6e 79 00 22 ae 0a 00 00 00 1b 00 00 00 24 ae 69 00 00 00 06 10 00 00 00 11 00 00 00 33 33 33 3f 00 00 c8 42 00 00 a0 41 00 00 a0 41 00 00 a0 41 00 00 a0 41 33 33 33 3f 00 00 80 3f 00 00 00 3f cc cc 4c 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f cb cc 4c 3f 00 00 a0 42 00 00 00 3f 01 01 00 00 00 00 10 00 00 00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f

21 ae 48 00 00 00 23 ae 13 00 00 00 62 72 61 69 6e 79 62 61 72 72 65 6c 00 22 ae 0a 00 00 00 23 00 00 00 24 ae 25 00 00 00 02 01 00 00 80 3f 00 00 80 3f 00 00 a0 42 00 00 00 3f 0a d7 23 3c 03 00 00 00 01 ff ff ff ff

 

И вставляем в BSV-файл.

 

Наш BSV-файл завершается обнуленными 24-мя байтами, с которыми мы будем работать в третьей части данного цикла.

 

Наш BSV-файл создан, и так как повторенье – мать ученья, еще раз напомним.

 

  

 

brainy.BSV

1

42 72 61 69 6e 79 20 54 65 73 74 20 20 20 20 20 20 20 20 20

 

20 байт – название АDD – файла, в нашем случае - Brainy Test.

2

66 72 65 65 72 69 64 65 6e 6f 63 20 20 20 20 20 20 20 20 20

 

Название папки миссии, в которую вы хотите внести изменения, в нашем случае это freeridenoc 

3

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

234 пока обнуленных байта, разбираться с ними будем во второй части

4

62 72 61 69 6e 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20

 

20 проверочный байт, имя объекта, которого нет в родовой сцене, но есть в вашей модификации

5

34 01 00 00

 

Лонг, характеризующий размер первого блока мода, содержащий информацию о моделях. 

6

ce 00 00 00

 

Лонг, характеризующий размер второго блока мода, содержащий информацию о скриптинге.

7

10 40 97 00 00 00 11 40 0a 00 00 00 09 00 00 00 10 00 0d 00 00 00 62 72 61 69 6e 79 00 20 00 12 00 00 00 21 98 dd c4 00 00 a0 c0 00 00 f0 41 22 00 16 00 00 00 fd 2f 0d 25 00 00 00 00 00 00 80 3f 00 30 8d 24 2d 00 12 00 00 00 00 00 80 3f 00 00 80 3f 00 00 80 3f 2c 00 12 00 00 00 82 ca dd c4 5b 3f b3 c0 bd 59 8a 40 20 40 1b 00 00 00 10 00 15 00 00 00 50 72 69 6d 61 72 79 20 73 65 63 74 6f 72 00 12 20 13 00 00 00 45 6e 65 6d 79 31 32 4b 2e 69 33 64 00

10 40 9d 00 00 00 11 40 0a 00 00 00 09 00 00 00 10 00 13 00 00 00 62 72 61 69 6e 79 62 61 72 72 65 6c 00 20 00 12 00 00 00 2c 5a 8c 42 ea 95 e9 40 44 49 e6 42 22 00 16 00 00 00 22 d5 31 3f 00 00 00 00 a7 26 38 3f 00 30 8d 24 2d 00 12 00 00 00 c8 3b 6c 3e c8 3b 6c 3e c8 3b 6c 3e 2c 00 12 00 00 00 82 ca dd c4 5b 3f b3 c0 bd 59 8a 40 20 40 1b 00 00 00 10 00 15 00 00 00 50 72 69 6d 61 72 79 20 73 65 63 74 6f 72 00 12 20 13 00 00 00 78 62 61 72 65 6c 20 32 2e 69 33 64 00

 

Непосредственно сам первый блок, представляющий подробную развернутую информацию о моделях.

8

21 ae 86 00 00 00 23 ae 0d 00 00 00 62 72 61 69 6e 79 00 22 ae 0a 00 00 00 1b 00 00 00 24 ae 69 00 00 00 06 10 00 00 00 11 00 00 00 33 33 33 3f 00 00 c8 42 00 00 a0 41 00 00 a0 41 00 00 a0 41 00 00 a0 41 33 33 33 3f 00 00 80 3f 00 00 00 3f cc cc 4c 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f cb cc 4c 3f 00 00 a0 42 00 00 00 3f 01 01 00 00 00 00 10 00 00 00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f

21 ae 48 00 00 00 23 ae 13 00 00 00 62 72 61 69 6e 79 62 61 72 72 65 6c 00 22 ae 0a 00 00 00 23 00 00 00 24 ae 25 00 00 00 02 01 00 00 80 3f 00 00 80 3f 00 00 a0 42 00 00 00 3f 0a d7 23 3c 03 00 00 00 01 ff ff ff ff

 

Второй блок, представляющий подробную развернутую информацию о скриптинге.

9

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

24 обнуленных байт

 

 

Теперь сохраняем (если еще не сохранили) brainy.BSV и с помощью BSV вставляем в родовую сцену наши изменения.

 

Часть 2.

Часть 2 ознакомит с изменениями в миссионных файлах. Не будет описано, как надо искать информацию и менять для своих нужд, но будем удовлетворены хотя бы тем, что нам расскажут, как сделать так, чтобы наши изменения заработали.

 

Изменения, проведенные нами в с следующих файлах: tree.klz, scene.4ds, cache.bin, scene2.bin  могут быть собраны воедино в BSV-файл.

 

Первые 40 байт BSV представляют два блока по 20 байт, первый из которых – имя BSV-файла, второй – имя папки, в которой содержатся миссионные файлы, в которые мы будем вносить изменения.

 

Затем идут 234 нулевых байта, с которыми мы теперь познакомимся подробнее. Структура их такова:

 

OptTREE (Byte) flag 00 или 01, tree.klz

TreePosNb (Byte) колво позиций, меняемых  в tree.klz

OptCACHE (Byte) flag 00 или 01, cache.bin

CachePosNb (Byte) номер позиции, которую надо изменить в cache.bin

OptSCENE4DS (Byte) flag 00 или 01, scene.4ds

Scene4dsPosNb (Byte) номер позиции, которую надо изменить в scene.4ds

Scene2Bin (Byte) flag 00 или 01, scene2.bin

Scene2BinNb (Byte) номер позиции, которую надо изменить в scene2.bin

Информационная строковая переменная в 226 обнуленных байт

 

Все вышеперечисленные флаги показывают, был ли изменен файл, если да, то пишем 01, если нет – 00.

 

Два флага идут подряд, первый показывает есть ли изменения в этом файле, соответственно, 01 – есть, 00 – нет, а второй указывает кол-во изменений 01, 02 и т.д.

 

На конкретном примере:

Изменим инфу в триклозе в одном месте, и в scene.4ds в двух местах.

 

Не забываем, как начинается файл:

1. Name of the ADDin (20 bytes): Brainy Test

2. Mission folder (20 bytes): freeridenoc

 

Теперь – то, что стало с 234 обнуленными байтами:

01 01 -> Есть одно изменение  в tree.klz

00 00 -> Нет изменений в cache.bin.

01 02 -> есть изменения в scene2.4ds, который был изменен в двух местах  

00 00 -> никаких изменений в scene2.bin  

 

Далее продолжает следовать все еще обнуленная информационная строка

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

После этой общей структуры углубимся

 

SearchStringLength (Byte) – размер searchstr

NbBytesToPut (Byte) – количество вставляемых байт на место searchstr

searchstr(16) As String * 16 Byte – строка поиска, максимум 16 байт

PutStr(256) As String * 256 By – строка вставки, максимум 256 байт

Пример с триклозой:

 

 

b1 00 8f 41 81 00 00 21 00 00 00 00 00 00 00 00, строка, благодаря которой BSV ищет нужную позицию куда вставлять изменения. В нашем примере размер строки всего 8 байт, значит, остальные обнуляем.

 

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 , это же то, что мы вставляем.

 

 

SearchStringLength

08

NbBytesToPut

44

Searchstr

b1 00 8f 41 81 00 00 21 00 00 00 00 00 00 00 00. Эта штука ищет нужную позицию в триклозе, в которую мы будем вставлять наши изменения. В примере необходимо 8 байт, поэтому оставшиеся обнуляем.

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

А это то, что мы вставляем в ту самую нужную позицию.

 

 

В каше менять ничего не надо, поэтому можно пропустить его, теперь же разберемся с двумя изменениями в scene.4ds.

 

Первое измененеие:

SearchStringLength (Byte)

NbBytesToPut (Byte)

searchstr(16) As String * 16 Место в scene4.ds, которое будем заменять/видоизменять.

PutStr(256) As String * 256 то, чем мы заменим

 

Второе изменение:

SearchStringLength (Byte)

NbBytesToPut (Byte)

searchstr(16) As String * 16 Место в scene4.ds, которое будем заменять/видоизменять.

PutStr(256) As String * 256 то, чем мы заменим

 

В scene2.bin менять нам нечего, поэтому пропускаем его.

 

Таким образом, если у нас нет никаких изменений, то мы пишем обнуленные 234 байта, если они есть, то уже размер блока может быть неограниченным. Если наши изменения меньше 234 байт, то мы пишем наши изменения, но обнуляем остальные байты до 234 включительно. Если же наши изменения превосходят объем в 234 байта, то не обращаем внимания на размер этого блока, после которого продолжаем по плану: 2 лонга, описывающих размер блока с моделями и блока со скриптингом и т.д. (см. в Часть 1 этого туториала).

 

Часть 3.

Как было упомянуто в первой части туториала, BSV-файл может содержать дополнительную информацию и данные, чтобы добавлять модели, звуки, текстуры и настройки (тайбелсы).

 

Теперь посмотрим на конец файла brainy.bsv (это в первой части туториала). Там нашем взору предстанут 24 обнуленных байта. Они отвечают за то, какой файл в какую папку поместить.

 

1. 00 00 00 00 Количество моделей (*.4ds) содержащих в BSV-файле, которые надо импортировать в папку  Models.

2. 00 00 00 00 Количество звуковых файлов, которые надо импортировать в папку со звуками – sounds.

3. 00 00 00 00 Кол-во текстур, содержащихся в BSV-файле, и которые надо импортировать в папку с текстурами, т.е. MAPS.

4. 00 00 00 00 Кол-во файлов BSV, чтобы вставить в папку №1 с тайбелсами

5. 00 00 00 00 Кол-во файлов BSV, чтобы вставить в папку №2 с тайбелсами

6. 00 00 00 00 Кол-во файлов BSV, чтобы вставить папку с миссиями (содержащей  модифицированную сцену).

 

Каждый файл имеет следующую структуру:

- Имя файла (20 байт)

- Размер файла (4 байта)

- Данные файла = информация

 

Предположим, что у нас есть две новых модели и один файл-текстура, структура будет выглядеть так:

1. 02 00 00 00 (2 модели)

Имя первой модели (20 байт)

Размер файла (4 байта)

Данные

 

Имя второй модели (20 байт)

Размер файла (4 байта)

Данные файла

2. 00 00 00 00 (Никаких новых звуковых файлов)

3. 01 00 00 00 (одна новая текстура)

Название файла (20 байт)

Размер файла (4 байта)

Данные файла

4. 00 00 00 00 Нет файлов для вставки в папку №1 с тайбелсами

5. 00 00 00 00 Нет файлов для вставки в папку №2 с тайбелсами

6. 00 00 00 00 Нет файлов для вставки в миссионную папку с модифицированной scene2.bin

 

Процедура одинакова для любого файла: модели, звукового файла, текстуры и т.д.

Как вставить файлы в BSV разберем на примере двух моделей.

 

Добавление новых моделей в папку “models

 

Предположим, что мы создали новую модель (*.4ds файл). Часть информации необходимо поместить в сцену, а сам файл должен быть помещен в соответствующую директорию - Models. Во время процесса обработки BSV-файла программой BSV нужная информация будет извлечена, а модель помещена в нужную папку.

 

Что нам нужно?

Непосредственно сама новая модель. В этом туториале я выбрал 2 простые модели,

zzwall 1.4DS и zzwall 2.4DS

Посмотрим в конец файла brainy.bsv в конце первой части туториала.

Согласно девятому пункту у нас есть 24 обнуленных байт.

Первые четыре байта зарезервированы для количества моделей в BSV-файле, в нашем примере их 2 (zzwall 1.4DS and zzwall 2.4DS). Если у вас нет моделей, то пишем 00 00 00 00 и переходим к пункту «Вставка звука».

 

В нашем примере 2 модели, поэтому

02 00 00 00

После этого идет описание модели:

Название 4ds-файла: 20 байт, название первой модели: zzwall 1.4DS

7A 7A 77 61 6C 6C 20 31 2E 34 44 53 20 20 20 20 20 20 20 20

Размер файла: размер zzwall 1.4DS 

3c 02 00 00

Данные файла: сам файл zzwall 1.4DS

34 44 53 00 1d 00 00 00 71 4a 52 d2 c2 01 01 00 01 10 84 00 cd cc cc 3d cd cc cc 3d cd cc cc 3d 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 40 52 53 54 52 4f 50 31 2e 42 4d 50 01 00 01 00 00 2a 00 00 4a 2d a2 40 ec 72 17 40 d0 9f a9 3e 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 00 00 00 00 00 00 00 00 00 00 09 08 43 75 62 65 32 5b 38 5d 00 00 00 01 00 00 7a 45 0b 00 90 b8 80 bf 50 15 5c 3f d8 17 a5 be 10 08 0c bf e0 eb 0b 3f 58 24 0c bf 00 00 00 00 00 00 00 00 d0 4d 6f bf 98 88 fb be c0 17 a5 be 20 cf 0b bf 88 24 0c bf 68 24 0c bf 00 00 00 00 00 00 00 00 08 32 87 bf 50 15 5c 3f ee 42 15 3f 00 41 0c bf e0 eb 0b 3f 00 ec 0b 3f 00 00 00 00 00 00 00 00 c0 3f 7c bf 98 88 fb be 0a 43 15 3f b0 07 0c bf 88 24 0c bf e0 eb 0b 3f 00 00 00 00 00 00 00 00 c0 3f 7c bf 98 88 fb be 0a 43 15 3f b0 07 0c bf 88 24 0c bf e0 eb 0b 3f 00 00 00 00 00 00 00 00 d8 5c 41 3f c8 16 5c 3f 4c 44 15 3f 88 cf 0b 3f 38 25 0c 3f c0 24 0c 3f 00 00 00 00 00 00 00 00 60 83 53 3f a0 85 fb be 52 44 15 3f 48 08 0c 3f 38 eb 0b bf 20 25 0c 3f 00 00 00 00 00 00 00 00 60 83 53 3f a0 85 fb be 52 44 15 3f 48 08 0c 3f 38 eb 0b bf 20 25 0c 3f 00 00 00 00 00 00 00 00 d8 51 4e 3f c8 16 5c 3f 38 15 a5 be 28 08 0c 3f 38 25 0c 3f 18 eb 0b bf 00 00 00 00 00 00 00 00 00 76 60 3f a0 85 fb be f8 14 a5 be 28 41 0c 3f 38 eb 0b bf 58 eb 0b bf 00 00 00 00 00 00 00 00 00 76 60 3f a0 85 fb be f8 14 a5 be 28 41 0c 3f 38 eb 0b bf 58 eb 0b bf 00 00 00 00 00 00 00 00 01 0c 00 00 00 01 00 02 00 01 00 03 00 02 00 02 00 04 00 05 00 03 00 06 00 05 00 05 00 07 00 08 00 06 00 09 00 08 00 08 00 0a 00 00 00 09 00 01 00 00 00 00 00 02 00 05 00 05 00 08 00 00 00 01 00 06 00 03 00 06 00 01 00 09 00 01 00 00 00

После этого идет описание второго файла и последующих, если они у вас есть.

Имя 4ds-afqkf: 20 байт zzwall 2.4DS

7A 7A 77 61 6C 6C 20 32 2E 34 44 53 20 20 20 20 20 20 20 20

Размер файла: размер zzwall 2.4DS 

3c 02 00 00

Данные файла: Сам файл zzwall 2.4DS 

34 44 53 00 1d 00 00 00 71 4a 52 d2 c2 01 01 00 01 10 84 00 cd cc cc 3d cd cc cc 3d cd cc cc 3d 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 40 52 53 54 52 4f 50 31 2e 42 4d 50 01 00 01 00 00 2a 00 00 4a 2d a2 40 ec 72 17 40 d0 9f a9 3e 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 00 00 00 00 00 00 00 00 00 00 09 08 43 75 62 65 32 5b 38 5d 00 00 00 01 00 00 7a 45 0b 00 90 b8 80 bf 50 15 5c 3f d8 17 a5 be 10 08 0c bf e0 eb 0b 3f 58 24 0c bf 00 00 00 00 00 00 00 00 d0 4d 6f bf 98 88 fb be c0 17 a5 be 20 cf 0b bf 88 24 0c bf 68 24 0c bf 00 00 00 00 00 00 00 00 08 32 87 bf 50 15 5c 3f ee 42 15 3f 00 41 0c bf e0 eb 0b 3f 00 ec 0b 3f 00 00 00 00 00 00 00 00 c0 3f 7c bf 98 88 fb be 0a 43 15 3f b0 07 0c bf 88 24 0c bf e0 eb 0b 3f 00 00 00 00 00 00 00 00 c0 3f 7c bf 98 88 fb be 0a 43 15 3f b0 07 0c bf 88 24 0c bf e0 eb 0b 3f 00 00 00 00 00 00 00 00 d8 5c 41 3f c8 16 5c 3f 4c 44 15 3f 88 cf 0b 3f 38 25 0c 3f c0 24 0c 3f 00 00 00 00 00 00 00 00 60 83 53 3f a0 85 fb be 52 44 15 3f 48 08 0c 3f 38 eb 0b bf 20 25 0c 3f 00 00 00 00 00 00 00 00 60 83 53 3f a0 85 fb be 52 44 15 3f 48 08 0c 3f 38 eb 0b bf 20 25 0c 3f 00 00 00 00 00 00 00 00 d8 51 4e 3f c8 16 5c 3f 38 15 a5 be 28 08 0c 3f 38 25 0c 3f 18 eb 0b bf 00 00 00 00 00 00 00 00 00 76 60 3f a0 85 fb be f8 14 a5 be 28 41 0c 3f 38 eb 0b bf 58 eb 0b bf 00 00 00 00 00 00 00 00 00 76 60 3f a0 85 fb be f8 14 a5 be 28 41 0c 3f 38 eb 0b bf 58 eb 0b bf 00 00 00 00 00 00 00 00 01 0c 00 00 00 01 00 02 00 01 00 03 00 02 00 02 00 04 00 05 00 03 00 06 00 05 00 05 00 07 00 08 00 06 00 09 00 08 00 08 00 0a 00 00 00 09 00 01 00 00 00 00 00 02 00 05 00 05 00 08 00 00 00 01 00 06 00 03 00 06 00 01 00 09 00 01 00 00 00

Если у вас нет звуковых файлов, текстур или файлов настроек, чтобы добавить, то завершаем файл 20-ью обнуленными байтами.

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

24 байта достаточно условная константа. Это только размер всех «да»  и «нет» касательно файлов, импортируемых BSV.

 

Вот и вся кухня по созданию BSV-файлов. Больше Браингиб не приоткрыл свои секреты, но людям с умелыми руками и этого придется достаточно для хорошего роста и созданию BSV- файлов.

 

Вот парочка идей:

 

 - создание небольших локаций, которыми можно серьезно оживить город. Это уже делает Браингиб, бар Сальери в ночном городе – его творение. BSV-файлы – решения для моддеров, которые хотели, хотят и будут хотеть оживить Ситибар.

- создание сети продавцов автомобилей, а лучше специализированного салона.

- рнд-эшные группировки шпаны в закоулках ночью

- заполненные автостоянки

 

И еще много чего хорошего и полезного.

 

Желаю удачи в модостроительстве! Дерзайте!

 

© Авторство Braingib © перевод Don Carleone (Александр Коняшин)

© 2007 Designed and powered by Don Carleone (Александр Коняшин).

 

Сайт о игре Mafia: The City Of Lost Heaven   PROMAFIA   Все туториалы о редактировании Мафии   Отличный сайт о Need for Speed! Большое количество файлов, патчей,программ,редакторов,утилит!   Сайт о Мафии!

 

                                                                                                       

Hosted by uCoz
Hosted by uCoz