Изменение cutscene

Материал из GTAModding.ru
Перейти к: навигация, поиск

Файлы катсцен (анимированных роликов) содержатся в cuts.img архиве.

Каждая сцена состоит из трех файлов (размер каждого должен быть кратен 2048):

  1. .IFP – Файл анимаций;
  2. .CUT – Файл, в котором находится информация о персонажах, текстах и т.п.
  3. .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 - время работы камеры (быть может между ключевыми кадрами) каждый блок имеет одинаковый перечень показателей времени

[color=navy]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,
;
;[/color]

В блоках 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]

Запускаем и видим плавное перемещение камеры и актеров сцены, застывших на последнем движении анимации.

Дополнительно

Результат модификации катсцены в GTA:SA

Простейший скрипт для запуска катсцены:

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

Компилируем и запускаем игру. Нажимаем клавишу "Беседа - нет" и наблюдаем сцену.

В катсценах GTAIII/Vice City отсутствуют .CUT файлы. Все "объявления" объектов производятся скриптово. Аналогично в GTA:LCS (VCS использует новый анимационный движок).

Результат конвертирования катсцены из GTA:LCS в GTA:SA. На данном скриншоте - проект GTA: Stories.

Таким образом, "собрать" собственную катсцену вполне реально. Проблемы могут начаться непосредственно с IFP - анимированием. Зато запустить сцену с GTA:LCS вполне возможно (хоть и с некоторыми изъянами).


Автор статьи - Yelmi.

Информация взята со следующих источников: [1] [2]