Перед прочтением данной статьи, настоятельно рекомендую ознакомится с SRB2. Задаем настройки уровня.
Подготовка
Перед началом, скачайте ресурсы будущей кат-сцены с MEGA. И добавьте их к себе в вадник, через Slade.
Теперь, разберем структуру кода кат-сцен.
Структура катсцен
- Кат-сцена может содержать несколько сцен
- Cцены могут содержать несколько изображений
-Cutscene 1
-NumScenes 1
--Scene 1
---Pic1Name, Pic2Name, Pic3Name...
---Pic1Duration = 300
---SceneText text #
Первая катсцена
В MAINCFG, добавьте следующий код.
Cutscene 1 //Номер катсцены
NumScenes 1 //Количество сцен в катсцене
Scene 1 //Сцена 1
NumberOfPics = 1 //Количество изображений в сцене 1
Pic1Name = SCEN1_1 //Название первой картинки
Pic1Duration = 300 //Время показывания этой картинки (300 тиков, 35 тиков = 1 сек)
Pic1Hires = true //Если true то максимальное разрешение изображения = 640x400, если false, то 320x200
Pic1XCoord = 0 //Позиция первой картинки по X
Pic1YCoord = 0 //Позиция первой картинки по Y
TextXPos = 8 //Позиция текста по X
TextYPos = 128 //Позиция текста по Y
Music = SCENM1 //Название музыки без префикса (D_ или O_)
SceneText = \A7 What a nice day, I'm glad no one wants to //Текст печатаемый на экране
\D2 kill me.
# //конец строки задаете решеткой
Разберем эти строки
Cutscene 1 //Номер катсцены
NumScenes 1 //Количество сцен в катсцене
В начале, создали катсцену, и указали количество сцен.
Scene 1 //Сцена 1
NumberOfPics = 1 //Количество изображений в сцене 1
Pic1Name = SCEN1_1 //Название первой картинки
Pic1Duration = 300 //Время показывания этой картинки (300 тиков, 35 тиков = 1 сек)
Pic1Hires = true //Если true то максимальное разрешение изображения = 640x400, если false, то 320x200
Pic1XCoord = 0 //Позиция первой картинки по X
Pic1YCoord = 0 //Позиция первой картинки по Y
TextXPos = 8 //Позиция текста по X
TextYPos = 128 //Позиция текста по Y
Music = SCENM1 //Название музыки без префикса (D_ или O_)
SceneText = \A7 What a nice day, I'm glad no one wants to //Текст печатаемый на экране
\D2 kill me.
# //конец строки задаете решеткой
Затем, в 1 сцене, указали количество изображений (NumberOfPics).
Музыка задается здесь точно так же, как и в прошлом уроке SRB2. Задаем настройки уровня
Разберем подробнее SceneText:
- Текст сцены пишется после знака = (а ни через кавычки, как в других языках).
- Конец текста задается решеткой #.
Разберем специальные символы:
- \A0 — \AF, задает время печати одного символа. (A0 — быстрая печать, AF — медленная печать)
- \B0 — \D2, указывает время паузы (B0 — 1 тик, D2 — 35 тиков)
В остальное понятно из комментариев (//).
Сцену добавили, и разобрали, осталось вызвать её. Для этого, после строки Level 1, добавьте атрибут PreCutsceneNum = 1, для вызова первой сцены перед началом уровня.
Level 1
PreCutsceneNum = 1
Levelname = Under-Prog Tutorial
Act = 4
В итоге, должно получится следующее:

Катсцена с множеством сцен.
Измените код кат-сцены на следующее
Cutscene 1
NumScenes 3 //Теперь сцен 3
Scene 1
NumberOfPics = 1
Pic1Name = SCEN1_1
Pic1Duration = 300
Pic1Hires = true
Pic1XCoord = 0
Pic1YCoord = 0
TextXPos = 8
TextYPos = 128
Music = SCENM1
SceneText = \A7 What a nice day, I'm glad no one wants to
\D2 kill me.
#
Scene 2
NumberOfPics = 1
Pic1Name = SCEN1_2
Pic1Hires = true
Pic1Duration = 200
Pic1XCoord = 0
Pic1YCoord = 0
TextXPos = 8
TextYPos = 128
SceneText = \A7 Oh, no! \D0 Not this crap again!
#
Scene 3
NumberOfPics = 1
Pic1Name = SCEN1_3
Pic1Hires = true
Pic1Duration = 400
Pic1XCoord = 0
Pic1YCoord = 0
TextXPos = 8
TextYPos = 128
SceneText = \A7 Where am I?\D0
And why is the map so small?\D0
I need to find a developer and teach him a lesson.
#
Чтобы запустить последовательно несколько сцен, нужно установить количество сцен в NumScenes, и написать код этих сцен.
Количество сцен задается в диапазоне от 1 до 128.
Вот такая кат-сцена у меня получилась.

Сцена с множеством изображений.
Создадим еще 1 катсцену.
Cutscene 2
NumScenes 1
Scene 1
NumberOfPics = 3
Pic1Name = SCEN1_1
Pic1Hires = true
Pic1Duration = 66
Pic1XCoord = 0
Pic1YCoord = 0
Pic2Name = SCEN1_2
Pic2Hires = true
Pic2Duration = 66
Pic2XCoord = 0
Pic2YCoord = 0
Pic3Name = SCEN1_3
Pic3Hires = true
Pic3Duration = 140
Pic3XCoord = 0
Pic3YCoord = 0
TextXPos = 62
TextYPos = 144
Music = SCENM1
SceneText = Previously this happened
#
Я использовал 3 картинки, поэтому, NumberOfPics = 3.
Далее идет копипаст, однотипных аргументов:
Pic1Name = SCEN1_1
Pic1Hires = true
Pic1Duration = 66
Pic1XCoord = 0
Pic1YCoord = 0
Pic1 аргументы заменяются на Pic2, и так далее, в плоть до Pic128.
Теперь установите проигрывание 2-ой кат-сцены в начале уровня, и запустите игру.

Где еще можно проигрывать кат-сцены
Запустить кат-сцену можно при запуске игры.
MainCfg
IntroToPlay = 1
Перед началом уровня (что мы и делали в данном уроке)
Level 1
PreCutsceneNum = 1
После уровня
Level 1
CutsceneNum = 1
В конце игры, после прохождения.
MainCfg
CreditsCutscene = 1
Итоговый результат.
