Не скажу, что тут прямо рай на земле, но где угодно лучше, чем в окопе.

Оглавление

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



Как делать ADDin`ы (BSV-файлы).



Функция ADDin была встроена в BScriptView для автоматической вставки объектов и скриптов в существующие файлы scene2.bin. В этом случае можно пересылать не весь scene2.bin целиком (который иногда может быть очень большим (из-за расположенных там лайтмэпов - прим. перев.), а файл BSV, который вставляет только изменения, проделанные вами над оригинальным scene2.bin. BSV также может включать в себя дополнительную информацию и данные для изменения существующих файлов и добавления моделей (models), текстур (maps) и таблиц (tables) в специально отведённые для этого папки.

Первая часть этого урока посвящена тому, как внести изменения файла scene2.bin в файл BSV.

Что нам потребуется?
- Вы должны иметь при себе BScriptView и знать то, что в нём есть функция ADDin (кнопочка такая в меню - прим. перев.);
- Уметь работать с шестнадцатеричным редактором и разбираться в шестнадцатеричной (далее - hex) системе счисления.

Что мы имеем?
У нас есть изменённый scene2.bin и мы хотим вставить свои изменения в оригинальный scene2.bin. Для того, чтобы дать вам точное понимание того, как работает файл BSV, мы пока не будем использовать уже созданный scene2.bin, а создадим новый с использованием BScriptView.

Запустите BScriptView, выберите миссию, например "freeridenoc" и откройте scene2.bin. Для примера мы хотим вставить в миссию нового человека с именем "brainy" и бочку "brainybarrel". Выберите пункт меню "Вставить"->"Человек" ("Insert"->"Human"), наберите имя brainy и нажмите "Вставить" ("Insert"). Выберите пункт меню "Вставить"->"Вещь" ("Insert"->"Thing"), наберите имя brainybarrel и нажмите "Вставить" ("Insert"). Этими нехитрыми манипуляциями мы вставили в scene2.bin человека и бочку. Данный, уже изменённый, файл нам понадобится позже.

Создание файла BSV.
Теперь мы создадим файл BSV, который будет автоматически добавлять человека и бочку из BSV в оригинальный scene2.bin. Файл назовём "brainy.BSV".

Создадим в hex-редакторе новый чистый файл и добавим туда следующее:
1. Название ADDin`a - 20 байт, например Brainy Test (оставшиеся незаполненные символы забиваются пробелами - прим. перев):
42 72 61 69 6e 79 20 54 65 73 74 20 20 20 20 20 20 20 20 20

2. Название папки с миссией - 20 байт, в нашем примере это freeridenoc (правило с пробелами сохраняется - прим. перев.):
66 72 65 65 72 69 64 65 6e 6f 63 20 20 20 20 20 20 20 20 20

3. Метки-заполнители - 234 байта, все 234 байта - нули:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

4. Тест на изменения scene2.bin - 20 байт - это тестовая строка для проверки, изменён ли уже scene2.bin файлом BSV. Строка должна быть уникальной. Будем использовать brainy, так как этого нет в исходном scene2.bin, но будет в изменённом:
62 72 61 69 6e 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20

5. Теперь мы возьмём данные из изменённого scene2.bin, который мы создали в разделе "Что мы имеем?". Запустите hex-редактор, откройте в нём этот файл и найдите в файле brainy. Вы найдёте две секции. Первая секция описывает модель, вторая (в конце файла) - скрипт. Итак, начнём с первой секции.

Первая секция всегда начинается с 10 40, далее следуют 4 байта 97 00 00 00 (тип long или dword - прим перев.), описывающих количество байт в секции - это необходимо для описания модели. За секцией brainy вы найдёте секцию brainybarrel, начинающуюся также с 10 40, однако имеющую длину 9d 00 00 00.

Позже обе секции будут скопированы в файл BSV, но сначала мы должны добавить в файл BSV общую длину. Мы должны посчитать общую длину из секций brainy и brainybarrel, для этого мы суммируем две длины:
97 00 00 00 + 9d 00 00 00 = 34 01 00 00

Более лёгким путём (кому как - прим. перев.) вычисления общей длины будет являться копирование этих двух секторов в новый чистый файл и выяснения его длины в байтах.

Теперь положим в наш файл brainy.BSV вычисленное нами количество байт:
NbSCBin1 (так мы просто обозначаем эту вставку - прим. перев.) (тип long) (количество всех байт в секции номер один)
34 01 00 00

6. Задайте поиск по brainy снова и вы найдёте вторую секцию.

Вторая секция всегда начинается с 21 AE, далее - длина (также 4 байта) 86 00 00 00. Сразу после этой секцией вы найдёте секцию brainybarrel, также начинающуюся с 21 AE и имеющую длину 48 00 00 00. Снова сложим эти длины:
86 00 00 00 + 48 00 00 00 = CE 00 00 00
или создадим с помощью hex-редактора новый файл, скопируем туда эти две секции и выясним общее количество байт этого файла.

Также вставим высчитанное количество байт в файл brainy.BSV:
NbSCBin2 (тип long) (количество всех байт в секции номер два)
CE 00 00 00

7. Теперь скопируем первые секции данных brainy и brainybarrel в файл brainy.BSV, помните, что первая секция всегда начинается с 10 40. Найдём brainy. Перед секцией brainy вы найдёте секцию brainybarrel, начинающуюся также с 10 40. Выберите обе секции и скопируйте их в наш файл brainy.BSV после 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. Вставим данные вторых секций в файл brainy.BSV, помните, что вторая секция всегда начинается с 21 AE. Найдём brainy снова. Перед секцией brainy вы найдёте секцию brainybarrel. Выберите обе секции и скопируйте их в brainy.BSV. Это должно выглядеть примерно так:

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. Файл BSV заканчивается метками-заполнителями - 24 байта - эти байты понадобятся нам в третьей части данного урока, в первой части они должны быть 00:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Вот вы и создали свой первый ADDin-файл. Можете испробовать его на оригинальном scene2.bin, используя BScriptView.

Весь файл brainy.BSV должен выглядеть примерно так:
42 72 61 69 6e 79 20 54 65 73 74 20 20 20 20 20 20 20 20 20
66 72 65 65 72 69 64 65 6e 6f 63 20 20 20 20 20 20 20 20 20
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
62 72 61 69 6e 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20
34 01 00 00
ce 00 00 00
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
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
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.

Дополняем файл 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 и далее.

Я уже упомянул в первой части данного урока о том, что файл BSV может также включать в себя дополнительную информацию и данные для добавления моделей (models), звуков (sounds), текстур (maps) и таблиц (tables).

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

Теперь обратим внимание на концовку файла brainy.bsv, указанную в первой части урока, пункт 9, там файл BSV заканчивался метками-заполнителями - 24 байта. Здесь мы можем записать информацию о добавлении файлов в различные папки Мафии. Давайте внимательно рассмотрим эти 24 байта:
1. 00 00 00 00 - количество моделей (*.4ds), вставленных в файл BSV для того, чтобы поместить их в папку моделей (models)
2. 00 00 00 00 - количество звуковых файлов, вставленных в файл BSV для того, чтобы поместить их в папку звуков (sounds)
3. 00 00 00 00 - количество текстур, вставленных в файл BSV для того, чтобы поместить их в папку текстур (maps)
4. 00 00 00 00 - количество файлов, вставленных в файл BSV для того, чтобы поместить их в папку таблиц (tables) (1)
5. 00 00 00 00 - количество файлов, вставленных в файл BSV для того, чтобы поместить их в папку таблиц (tables) (2)
6. 00 00 00 00 - количество файлов, вставленных в файл BSV для того, чтобы поместить их в папку миссий изменённого scene2.bin

Для каждого файла, который мы хотим включить в файл BSV, существует следующая структура данных:
- Имя файла - 20 байт
- Длина файла - 4 байта
- Данные файла

Итак, для примера, у нас есть две новые модели и одна новая текстура, тогда общая структура будет выглядеть так:
1. 02 00 00 00 - два файла модели
Имя первого файла модели - 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) и ссылаетесь на неё в scene2.bin, поэтому она должна присутствовать в папке моделей, иначе Мафия не будет работать. Итак, мы включим описание модели в файл BSV. В процессе выполнения ADDin`a модель будет извлечена из файла BSV и добавлена в папку моделей Мафии автоматически.

Что мы имеем?
Какую-нибудь шикарнейшую модель. В этом уроке я выбрал две самые простые модели,
zzwall 1.4DS и zzwall 2.4DS

Теперь обратим внимание на созданный в первой части урока файл brainy.bsv. В девятом пункте мы заканчивали файл BSV некоторыми метками-заполнителями - 24 байта.

В первых 4 байтах содержится количество моделей, которые мы хотим включить в файл BSV, в этом примере их 2 (zzwall 1.4DS и zzwall 2.4DS). Если вы не хотите вставлять модели, тогда поставьте эти 4 байта в 00 00 00 00 и начинайте с раздела добавления звуков. В данном примере у нас есть 2 модели, т.е. Эти четыре байта выглядят как
02 00 00 00

После этих байт следует описание моделей:
1. Имя файла модели - 20 байт: имя первого файла модели, zzwall 1.4DS
7A 7A 77 61 6C 6C 20 31 2E 34 44 53 20 20 20 20 20 20 20 20
2. Размер файла модели - 4 байта: размер файла zzwall 1.4DS
3c 02 00 00
3. Содержимое файла: 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

После этого следует описание следующей модели и так далее, если вы хотите вставить более двух моделей.
1. Имя файла модели - 20 байт: имя второго файла модели, zzwall 2.4DS
7A 7A 77 61 6C 6C 20 32 2E 34 44 53 20 20 20 20 20 20 20 20
2. Размер файла модели - 4 байта: размер файла zzwall 2.4DS
3c 02 00 00
3. Содержимое файла: 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

Если у вас нет для добавления никаких новых звуков, текстур или файлов таблиц, тогда закончите файл BSV 20 байтами, установленными в 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


Автор Braingib, перевод Soventnik.
Специально для сайта Webgamer.


Последние новости

15.06.2020
Mafia: Unreal Story
13.04.2020
Видеогалерея Silver
2.03.2020
Обновлённый Alive Gang Mod v.4.5
10.11.2019
Возможно ли сделать Мафию 4 и что для этого нужно
25.05.2019
Скрипт автопочинки
27.12.2016
Freeride Supreme by Darren