Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

за расположенных там лайтмэпов прим

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 25.11.2024

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




1. тема занятий физическими упражнениями которая направлена на развитие всех физических качеств сила выносли
2. держави майя Ацтеки Держава інків Висновок Вступ Своєрідною чарівністю наділена.
3. любимое время года для людей всех возрастов
4. . Инь мен янь негіздері ~андай философия~а т~н Араб философиясына B Ерте ~ытай философиясына C Антика фи
5. Учебное пособие- Маркетинг і світ, що змінюється
6. Економіка та підприємництво напряму підготовки 6
7. чтение. Все ссылки проверены и работают вирусов нет
8. корреспондент РАН профессор ректор СПбНИУ ИТМО С
9.  этапа Задания для студентов Баллы
10.  ldquo;Частинская средняя общеобразовательная школа~~ Пр
11. невидимку Увлекательная книга с приключениями волшебников познакомит девочек и мальчиков с домоводством-
12. 38159 для холодной гибки труб диаметром от 38 до 159 мм при толщине стенки до 8 мм Киевского электромеханического
13. Берлин~Амстердам БрюссельПрагаЛьвов Январь.
14. Тема 2- Логічні функції та їх властивості.html
15. Начальная общеобразовательная школа 98 Кемерово Материал для проведения классного часа
16.  Історикокультурні передумови розвитку мистецтва Польщі кінця XVIII ~ першої половини XIX століття [1
17. тема отрасли и система науки трудового права
18. Термины даются на русском и английском языках в порядке русского алфавита в скобках указывается обозначен
19. реферат дисертації на здобуття наукового ступеня кандидата юридичних наук Ха
20. Местное обезболивание