Рейтинг - 4.8 (4)

Начинаем наш новый урок! Эта тема посвящена работе с аудио-файлами.

Аудио-файлы можно "разбить" на три категории: звук, саундтрек и музыка. Зачем это нужно? Потому, что воспроизводятся они разными опкодами. Рассмотрим по очереди все категории:

Звуки. Отличается короткой длиной и типом файла. Обычно в игре звуки имеют тип "*.wav". Для начала, нужно загрузить звук опкодом:

03CF: load_wav 23000 as 1
Здесь:
23000 - номер ( ID ) звука. Все номера звуков хранятся в файле AudioEvents.txt, что в папке "data"
1 - это, так сказать "переменная", в которой будет хранится звук

Потом нужно сделать проверку на загруженность:

03D0: wav 1 loaded
Здесь:
1 - это та самая "переменная", в которую мы записали номер звука

После этого можно воспроизвести сам звук:

03D1: play_wav 1
Здесь:
1 - загруженная "переменная" со звуком

Существует также проверка на окончание воспроизведения звука:

03D2: wav 1 ended

Когда звук больше не нужен, то обязательно выгружаем звук опкодом:

040D: unload_wav 1
Здесь:
1 - загруженная "переменная" со звуком

Существует ещё опкод, который не нуждается в загрузке звука и который сразу проигрывает звук:

018C: play_sound 1052 at 0.0 0.0 0.0
Здесь:
1052 - номер звука. Я пока знаю где найти описание всех номеров, поэтому берите то, что есть в "main.scm"
0.0 0.0 0.0 - точно не знаю зачем эти цифры, так что оставляйте как есть

Саундтреки. Эта категория аудио, как и звуки, отличается своей длиной и типом. Они имеют расширение "*.ogg" и намного длиннее, чем звуки. Для примера саундтрека: когда входим в интерьер дискотеки играет музыка, на битве лоурайдеров - тоже звучик саундтрек. Саундтреки требуют загрузки:

0952: load_soundtrack 10 // увы, я не помню все номера саундтреков, но вы можете протестировать
0954: start_playing_loaded_soundtrack // воспроизводит саундтрек

Так же можно занести в переменную статус саундтрека:

0953: get_soundtrack_status_to 17@
Здесь:
17@ - переменная, в которую заносится статус.

А вот эта команда прекращает воспроизведение саундтрека:

0955: end_playing_loaded_soundtrack

Музыка. Музыка не требует дополнительной загрузки и её можно воспроизводить когда угодно. Она загружается вместе с игрой. Музыку можно услышать когда вы прошли миссию или купили дом. Опкод, запускающий музыку:

0394: play_music 2
Здесь:
2 - номер музыки: 1 - миссия пройдена, 2 - дом куплен.

С выходом Cleo 4, нам добавилось несколько опкодов для работы с аудио. Теперь можно проигрывать прямо в игре любимый трек. Рассмотрим алгоритм запуска аудио-файла. Сначала кидаем в папку Cleo ( или в другую папку ) нужный трек и переименовуем его на английские символы ( без пробелов ) или числа. Вот например я кинул в папку Cleo трек с названием "1.mp3". Потом в скрипте нужно обязательно проверить: "Существует ли файл?":

0AAB: file_exists "CLEO\1.mp3"
Здесь:
"CLEO\1.mp3" - путь к аудио-файлу

После успешной проверки, загружаем аудио:

0AAC: $hMP3 = load_audiostream "CLEO\1.mp3"
Здесь:
$hMP3 - переменная, в которой будет хранится аудио
"CLEO\1.mp3" - путь к аудио-файлу

После этого запускаем аудио:

0AAD: set_audiostream $hMP3 perform_action 1
Здесь:
$hMP3 - переменная, в которой хранится аудио
1 - флаг. ( 1 - запустить проигрывание сначала, 0 - остановить проигрывание, 2 - поставить на паузу, 3 - возобновить проигрывание )

Опкод, регулирующий громкость аудио в игре:

0ABC: set_audiostream $hMP3 volume 1.0
Здесь:
$hMP3 - переменная, в которой хранится аудио
1.0 - громкость ( от 0.0 до 1.0 )

Ещё один полезный опкод, который позволяет автоматически начать воспроизведение, если музыка была остановлена:

0AC0: loop_audiostream $hMP3 flag 1
Здесь:
$hMP3 - переменная, в которой хранится аудио
1 - флаг. Если поставить 1, то аудио будет повторятся после окончания, если 0 - не будет повторятся

И, наконец, выгрузка звука:

0AAE: release_audiostream $hMP3

Давайте напишем простенький скрипт, чтобы при нажатии кнопки 1 играла музыка "1.mp3". Вот код:

:AUDIO
thread 'AUDIO'
wait 0
if
0AAB: file_exists "CLEO\1.mp3"
jf @AUDIO_END
0AAC: $hMP3 = load_audiostream "CLEO\1.mp3"
0ABC: set_audiostream $hMP3 volume 1.0
0@ = 0

:AUDIO_1
wait 0
if
0@ == 0
then
 if
 0AB0: key_pressed 49 // 1
 then
 0AC0: loop_audiostream $hMP3 flag 1
 0AAD: set_audiostream $hMP3 perform_action 1 // PLAY
 wait 250
 0@ = 1
 end
else
 if
 0AB0: key_pressed 49 // 1
 then
 0AC0: loop_audiostream $hMP3 flag 0
 0AAD: set_audiostream $hMP3 perform_action 0 // STOP
 wait 250
 0@ = 0
 end
end
jump @AUDIO

:AUDIO_END
wait 0
end_thread

Пока не будем кидать этот код в мейн, так как сейсач нет такой необходимости.


Теги: Саундтрек, звуки, Music, Soundtrack, Wav, sound, музыка

KiLLeR96   (08.05.12 16:11)
Quote (wmysterio)
С вызодом Cleo 4

Ошибочка. Исправь

wmysterio   (08.05.12 16:49)
Сделано! happy

undead099032   (26.08.12 12:28)
А как сделать чтобы после того как ты убил когонибудь играла музыка??
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Кто из главных героев GTA 5 круче?
Всего ответов: 7
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
DK22Pac
Реклама