Изменение cutscene
Материал из GTAModding.ru
Версия от 09:33, 9 апреля 2009; Dageron (обсуждение | вклад)
Файлы катсцен (анимированных роликов) содержатся в cuts.img
архиве.
Каждая сцена состоит из трех файлов (размер каждого должен быть кратен 2048):
.IFP
– Файл анимаций;.CUT
– Файл, в котором находится информация о персонажах, текстах и т.п..DAT
- Файл с параметрами камеры.
CUT
Анимацию (.IFP
) мы трогать не будем, а рассмотрим содержание файла [color=navy]bcesa4w.cut[/color]
.
[color=navy]info offset -544.632996 -184.792999 77.403000 end model 1, csplay, csplay 1, cswoozie, cswoozie 1, SOFYBU, SOFYBU 1, csbcard, csbcard 1, csmoneysing, csmoneysing 1, csbravura, csbravura 1, CsZR350b, CsZR350b end text 5300,1450,BCE4w12 7462,1977,BCE4w00 10076,3547,BCE4w01 14229,2620,BCE4w02 18950,2808,BCE4w03 22451,3390,BCE4w04 25852,4526,BCE4w05 30214,1713,BCE4w06 32091,1603,BCE4w07 35127,4555,BCE4w08 40616,1668,BCE4w09 43229,1115,BCE4w10 46824,3484,BCE4w11 end uncompress end motion range off quick off csplay_x:root,1 cswoozie_x:root,1 SOFYBU:Root,1 csbcard:dummybcard,0 csmoneysing:Dummy01,0 csbravura:bravura,0 CsZR350:zr350,0 end[/color]
блок:
[color=navy] info offset -544.632996 -184.792999 77.403000 end[/color]
Это координаты XYZ сцены.
Блок:
[color=navy] model 1, DFF, TXD . . . . . . . end[/color]
Содержит перечень всех моделей сцены.
Блок:
[color=navy] text 5300,1450,BCE4w12 . . . . . . . end[/color]
BCE4w12 - текстовое сопровождение ролика 5300,1450 – Время в мс после начала катсцены, когда показывать текст; время на экране в мс.
Блок:
[color=navy] motion range off quick off csplay_x:root,1 cswoozie_x:root,1 SOFYBU:Root,1 . . . . . end[/color]
Здесь описывается применяемая анимация для каждого актера, предмета, авто сцены.
В San Andreas в сцене можно подгружать персонажи не только из cutscene.img
(csplay
), но и из gta3.img
(SOFYBU, SOFYBU
).
Для редактирования [color=navy]bcesa4w.cut[/color]
блокнотом пользоваться не советую, поскольку его размер должен быть кратен 2048. Лучше прибегнуть к помощи любого Hex-редактора.
Открываем [color=navy]bcesa4w.cut[/color]
в Hex-редакторе.
Заменим в блоке [color=navy]model[/color]
[color=navy]1, cswoozie, cswoozie[/color] на [color=blue]1, csclaude, csclaude[/color] [color=navy]1, SOFYBU, SOFYBU[/color] на 1, [color=blue]BFYPRO, BFYPRO[/color]
Так же в блоке motion заменим
[color=navy]cswoozie_x:root,1[/color] на [color=blue]csclaude_x:root,1[/color] [color=navy]SOFYBU:Root,1[/color] на [color=blue]BFYPRO:Root,1[/color]
Открываем bcesa4w.ifp
в Hex-редакторе.
Ищем [color=navy]cswoozie[/color] и меняем на [color=blue]csclaude[/color], а так же [color=navy]SOFYBU[/color] на [color=blue]BFYPRO[/color].
Есть одно но - количество букв в названиях моделей должно совпадать иначе работать не будет.
Сохраняем оба файла, не стоит их переименовывать, поскольку добавить новую сцену не получится.
Открываем cuts.img
находим bcesa4w.ifp
и заменяем (не удаляем) его на тот что мы правили. Тоже проделываем и с bcesa4w.cut
и bcesa4w.dat
.
DAT
Число перед каждым блоком равно количеству записей в этом блоке
[color=navy]38 //38 записей в этом блоке 1) 0.000000f 6.027082 -5.599979 0.796569 . . . 38) 80.000000f 0.805986 -5.666580 1.917611 [/color] [color=navy]0.000000f , X , Y, Z, X , Y, Z, X , Y, Z,[/color]
X , Y, Z - скорее всего это офсет
X , Y, Z – первая тройка это направление камеры( куда смотрит камера) При изменении только первых X , Y, Z наблюдал результат этих правок.
0.000000f - время работы камеры (быть может между ключевыми кадрами) каждый блок имеет одинаковый перечень показателей времени
12, // блок 1 0.000000f,51.774010,51.774010,51.774010, . . . . . . . . . 25.666000f,51.774010,51.774010,51.774010, ; 12, // блок 2 0.000000f,0.000000,0.000000,0.000000, . . . . . . . 25.666000f,0.000000,0.000000,0.000000, ; 13, // блок 3 0.000000f,-0.581568,-4.710864,0.120556,-0.581568,-4.710864,0.120556,-0.581568,-4.710864,0.120556, . . . . . 25.666000f,4.131416,1.196047,0.440165,4.131416,1.196047,0.440165,4.131416,1.196047,0.440165, ; 13, // блок 3 0.000000f,2.180020,-1.595175,0.742780,2.180020,-1.595175,0.742780,2.180020,-1.595175,0.742780, . . . . . . 25.666000f,2.735780,-2.429843,1.160247,2.735780,-2.429843,1.160247,2.735780,-2.429843,1.160247, ; ;
В блоках 3 и 4 могут быть небольшие изменения, то есть в блоках 1 и 2 объявлены
[color=navy] 1.000000f………………. 2.000000f……………….[/color]
то в 3 и 4 блоках между ними могут быть к примеру
[color=navy] 1.000000f………………. 1.444000f………………. 1.888000f………………. 2.000000f……………….[/color]
Для того чтобы увеличить длительность самой сцены нужно в каждом блоке изменить в последней строке время, например:
Было
[color=navy]25.666000f, ……………………….[/color]
Меняем на
[color=blue]30.666000f, ……………………….[/color]
Ну а если есть желание при этом наблюдать перемещение камеры, то в четвертом блоке добавим одну строку.
До:
[color=navy]14, // общее количество строк в блоке 0.000000f,2.180020,-1.595175,0.742780,2.180020,-1.595175,0.742780,2.180020,-1.595175,0.742780, . . . . . 25.666000f,2.735780,-2.429843,2.160247,2.735780,-2.429843,2.160247,2.735780,-2.429843,2.160247, 30.666000f,2.735780,-1.429843,1.160247,2.735780,-1.429843,1.160247,2.735780,-1.429843,1.160247, ;[/color]
После:
[color=blue]15, //увеличиваем количество строк 0.000000f,2.180020,-1.595175,0.742780,2.180020,-1.595175,0.742780,2.180020,-1.595175,0.742780, . . . . . . 25.666000f,2.735780,-2.429843,2.160247,2.735780,-2.429843,2.160247,2.735780,-2.429843,2.160247, 26.686000f,2.735780,-1.929843,2.160247,2.735780,-1.929843,2.160247,2.735780,-1.929843,2.160247, 30.666000f,2.735780,-1.429843,1.160247,2.735780,-1.429843,1.160247,2.735780,-1.429843,1.160247, ;[/color]
Запускаем и видим плавное перемещение камеры и актеров сцены, застывших на последнем движении анимации.
Дополнительно
Простейший скрипт для запуска катсцены:
004F: create_thread @CUTSCEN :CUTSCEN 03A4: name_thread 'CUTSCEN' 0001: wait 0 ms 00D6: if 00E1: key_pressed 0 10 004D: jump_if_false @CUTSCEN 054C: use_GXT_table 'BCESAR4' 0395: clear_area 1 at -526.7778 -189.0571 76.9917 range 100.0 03EF: player $PLAYER_CHAR make_safe 03AF: set_streaming 0 02E4: load_cutscene_data 'BCESA4W' :CUTSCEN_87 00D6: if 86B9: not cutscene_data_loaded 004D: jump_if_false @CUTSCEN_111 0001: wait 0 ms 0002: jump @CUTSCEN_87 :CUTSCEN_111 02E7: start_cutscene 016A: fade 1 1000 ms :CUTSCEN_120 00D6: if 82E9: not cutscene_reached_end 004D: jump_if_false @CUTSCEN_144 0001: wait 0 ms 0002: jump @CUTSCEN_120 :CUTSCEN_144 01B4: set_player $PLAYER_CHAR frozen_state 0 016A: fade 0 0 ms :CUTSCEN_157 00D6: if 016B: fading 004D: jump_if_false @CUTSCEN_181 0001: wait 0 ms 0002: jump @CUTSCEN_157 :CUTSCEN_181 02EA: end_cutscene 016A: fade 1 1000 ms 0002: jump @CUTSCEN
Компилируем и запускаем игру. Нажимаем клавишу "Беседа - нет" и наблюдаем сцену.
Автор статьи - Yelmi.