Работа со звуками в GTA San Andreas.
Всем наверно известны такие варианты загрузки звуков как:
03CF: load_wav 15863 as 1
03CF: load_wav 15805 as 2
03CF: load_wav 32401 as 3
03CF: load_wav 15863 as 4
при этом
03CF: load_wav 15863 as 1
03CF: load_wav 15805 as 2
чаще всего применяются для загрузки диалогов, а
03CF: load_wav 32401 as 3
03CF: load_wav 15863 as 4
для загрузки игровых звуков.
Для проигрыша звука применяется такая команда:
03D1: play_wav 1 //2 //3 //4
Ну и соответственно выгрузка звука:
040D: unload_wav 1 //2 //3 //4
выгружать звуки нужно обязательно, после их использования, иначе будут проблемы либо
звуки вообще не будут воспроизводиться либо будут проигрываться не те, что нужно.
Пример диалога:
:ZVUK_5800
054C: use_GXT_table 'WUZI1' //загружаем GXT раздел, необходим для отображения титров
03CF: load_wav 36600 as 1
03CF: load_wav 36601 as 2
:ZVUK_5802
00D6: if and
83D0: not wav 1 loaded //проверяем загрузку звука
83D0: not wav 2 loaded
004D: jump_if_false @ZVUK_5803
0001: wait 0 ms
0002: jump @ZVUK_5802
:ZVUK_5803
03D1: play_wav 1 //проигрываем звук
00BC: text_highpriority 'STL1_AA' 10000 ms 1 //выводим титры
:ZVUK_5804
00D6: if
03D2: wav 1 ended //проверяем, закончился ли проигрыш звука
004D: jump_if_false @ZVUK_5805
0001: wait 0 ms
0002: jump @ZVUK_5804
:ZVUK_5805
0001: wait 4000 ms
03D5: remove_text 'STL1_AA' //удаляем текст
040D: unload_wav 1 //удаляем звук
0001: wait 550 ms
03D1: play_wav 2
00BC: text_highpriority 'STL1_AB' 10000 ms 1
:ZVUK_5806
00D6: if
03D2: wav 2 ended
004D: jump_if_false @ZVUK_5807
0001: wait 0 ms
0002: jump @ZVUK_5806
Для того чтобы двери, ворота или любой другой объект в игре «зазвучал» применяют
такой опкод:
097B: (unknown) 246@ 1126 //проиграть возле объекта 246@ звук 1126
где
246@ - переменная объекта
1126 – звук (я так понимаю это код звукового файла, если не прав то знающие люди
поправят).
Перечень звуков находится в файле GTA San AndreasdataAudioEvents.txt.
Но одного этого опкода не достаточно, для того чтобы звук был проигран, необходимо
прежде его загрузить.
Здесь как раз и применяется 03CF: load_wav 1823 as 3 или as 4.
Пример:
:ZVUK_3786
029B: 246@ = init_object #WAREHOUSE_DOOR2B at 2774.3611 -2417.8291 14.675
0400: create_coordinate 251@ 252@ 253@ from_object 246@ offset 0.0 0.0 4.0
var
$muve2 : Integer
end // var
$muve2 = 0
03CF: load_wav 1823 as 3
:ZVUK_3787
0001: wait 0 ms
00D6: if
03CA: object 246@ exists
004D: jump_if_false @ZVUK_3789
097B: (unknown) 246@ 1035
:ZVUK_3789
0006: 32@ = 0 // integer values
:ZVUK_3790
00D6: if
001A: 20 > $muve2
004D: jump_if_false @ZVUK_3792
034E: move_object 246@ to 251@ 252@ 253@speed 0.0 0.0 0.2 flag 0
097B: (unknown) 246@ 1035
0001: wait 30 ms
$muve2 +=1
000A: 32@ += 1 // integer values
0001: wait 0 ms
0002: jump @ZVUK_3790
:ZVUK_3793
040D: unload_wav 3
01C4: remove_references_to_object 246@ // This object will now disappear when the player looks away
Здесь при перемещении ворот проигрывается звук.
Опкод:
097C: (unknown) 4 6@ //прикрепить звук 4 к объекту 6@
пример:
:IMPND_3038
03CF: load_wav 36000 as 4//загружаем звук 36000 как 4
:IMPND_3076
0001: wait 0 ms
00D6: if
03D0: wav 4 loaded
004D: jump_if_false @IMPND_3076
097C: (unknown) 4 6@ //прикрепить звук 4 к объекту 6@
03D1: play_wav 4 //проигрываем звук
03D7: set_wav 4 location 1589.0597 -1694.7285 10.4887
//разместить звук 4 в координатах 1589.0597 -1694.7285 10.4887
Так же можно присвоить определенный звук и актеру:
062E: (unknown) 47@ 1283 59@
где
47@ - переменная актера
1283 – звук
59@ - ? //скорее всего это переменная, отвечающая за номер проигрываемого звука.
Тот, кто пользовался программой SAAT знает, что все звуки там располагаются в
таком порядке GENRLBank_001sound_001.wav и sound_002.wav, и т.д. Быть может
переменная 59@ и отвечает за проигрыш либо первого или второго звукового файла.
09D6: (unknown) 1@ 5851 1 1 0 // актер 1@ звук 5851 флаг 1 флаг 1 флаг 0
09F1: (unknown) $PLAYER_ACTOR 1190
//воспроизвести актеру $PLAYER_ACTOR звук 1190
Можно проиграть определенный звук в заданных координатах.
018C: play_sound 1052 at 0.0 0.0 0.0 где 0.0 0.0 0.0 – координаты
097A: (unknown) 0.0 0.0 0.0 1136
//проиграть в координатах 0.0 0.0 0.0 звук 1136
Присвоить звук автомобилю:
0A16: (unknown) 3 59@ прикрепить звук 3 транспорту 59@
03D1: play_wav 3
09F7: (unknown) $SWEETS_CAR 1147
// воспроизвести транспорту $SWEETS_CAR звук 1147.
Имеются также такие опкоды:
0717: (unknown) 55@ // присвоить актеру 55@ диалог
0A18: (unknown) 281@s 283@s 285@s 291@ 292@ 293@
//загрузить текст 281@s текст 283@s текст 285@s звук 291@ звук 292@ звук 293@
0A3C: (unknown) 285@s 297@ //загрузить текст 285@s звук 297@
0719: (unknown) //воспроизвести диалог
Еще такая тройка опкодов:
0952: (unknown) 0
//загрузить мелодию 0 (0,1, 2, 3…с числами можно поэкспериментировать)
0954: (unknown) // проиграть загруженную мелодию
0955: (unknown) // остановить и выгрузить мелодию
Вот вкратце все то, что мне удалось выяснить.
Автор: yelmi
910 Прочтений • [Работа со звуками в GTA San Andreas.] [13.05.2012] [Комментариев: 0]