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

обновлено 17-12-2011 


Оглавление

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

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

Автор: Braingib
Перевод: Sovetnik

Функция 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




Последние новости
12.07.2011
Новый проект - Mafia: the City of Lost Heaven (Extended Version).
02.07.2011
Вышел новый мод из семейства Alive.
08.05.2011
Первые впечатления от игры в Alive mod.
03.04.2011
Создание телохранителя - разберём, как он устроен.
19.03.2011
Выпущен новый мод из семейства Alive.
11.03.2011
Выпущен новый мод из семейства Alive.
07.02.2011
Стартовал конкурс для начинающих моддеров!



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

Rating@Mail.ru

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

Rambler's Top100