Применять аудио эффекты дело довольно сложно,точнее не применять,а найти нужный звук,в игре их очень-очень много. Всем наверно известны такие варианты загрузки звуков как: 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 :ZVUK_5807 0001: wait 4000 ms 03D5: remove_text 'STL1_AB' 040D: unload_wav 2 Для того чтобы двери, ворота или любой другой объект в игре «зазвучал» применяют такой опкод: 097B: (unknown) 246@ 1126 //проиграть возле объекта 246@ звук 1126 Где : 246@ - переменная объекта 1126 – звук (я так понимаю это код звукового файла, если не прав то знающие люди поправят). Перечень звуков находится в файле GTA San Andreas\data\AudioEvents.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 //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_3792 00D6: if 03CA: object 246@ exists 004D: jump_if_false @ZVUK_3793 097B: (unknown) 246@ 1036 :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 знает, что все звуки там располагаются в таком порядке GENRL\Bank_001\sound_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) // остановить и выгрузить мелодию Также можно присваивать переменным звуки: 04AF: 1@ = unknown_wav_reference 43200 1@ - ваша переменная 43200 - игровой номер звука Можно прицепить звук к актёру: 0949: link_wav 3 to_actor $Actor 3 - ваш номер,Вы его присвоили звуку в команде "load_wav",вместо номера можно написать и пе ременную,например link_wav 1@ to_actor $Actor или link_wav $MyWav to_actor $Actor . $Actor - имя актёра,к которому прицепляем звук. 0917: audio_zone 'MADDOGL' enable_sound 1 - включить(1)/выключить(0),как в казино,клубе или,может помнuте, в Вайсе в супермаркете. Оригинальная статья by yelmi .
|