![]() |
Цитата:
|
2 KlassenAS
Я обнаружил баг в радио. В общем, скрипт работает идеально, как я писал выше, но когда ты сохраняешь игру, выходишь в Главное меню и после загружаешь сохранение, то когда спавнишься в игре, радио играет вокруг тебя, в окружающем мире. |
Цитата:
Так происходит, когда поток зациклен командой Stream_SetLoop. Я уже сообразил, как реализовать повтор обходным путём. Завтра скину исправленный скрипт. |
Вот и распаковка музыки подоспела → https://mafia-game.ru/forum/showpost...&postcount=169
Файл с музыкой радио: \Mafia Definitive Edition\edit\audio\packages\radio_global.pck |
Ох, народ, чувствую себя японским городовым )
Итак. Я примерно понял, как работает баг с клавишей ESC При вызове меню все игровые звуки должны ставиться на паузу, а после возврата в игру, те, что не были на паузе и до того, должны снова воспроизводиться. Но код-то чешский ) Из-за этого игра некорректно отслеживает состояния потоков в скриптах. Поэтому она эти потоки то ставит на паузу, то нет. И возобновляет, когда не надо. Далее, почему после загрузки играет музон. А фишка в том, что игра помнит все работающие аудио-потоки, и из каких файлов они созданы. Поэтому, при загрузке из сохранения, игра вспоминает, что был поток, из такого-то файла сделанный, и восстанавливает. Теперь способ, как эти мафиозные выкрутасы побороть: Игра помнит не только сам поток, но и состояние всех переменных на момент сохранения. И в этих переменных лежат идентификаторы аудиопотоков. Следовательно, чтобы багов с непрошенным воспроизведением не возникало, надо в самом начале скрипта, ещё до объявления переменных, эти потоки отдестроить. CommandBlock 1 Stream_Destroy 0 Stream_Destroy 1 Stream_Destroy 2 Stream_Destroy 3 CommandBlock 0 А уже потом пускать весь основной скрипт. Если мы используем в скрипте "шапочку" от GOLOD55, чтобы внешний скрипт не работал в меню, то этот дестрой можно и до, и после "шапочки" продублировать. На всякий случай. Ещё полезно отслеживать состояние здоровья персонажа и дестроить потоки, если Томми склеил ласты. И вот при таком способе "зачистки" потоков я пока багов не заметил. Но это не точно. Может, потом ещё найдутся. P.S. Предлагаю, сообщения из этой темы, начиная с №26 перенести в отдельную тему и назвать её "Скрипт авто-радио" или как-то иначе, на усмотрение администрации. UPD: Написанному не верить. Более тщательная проверка показала, что ни шиша из этого не работает, как ожидалось. |
Список музыки оригинальной Мафии.
папка Mafia/sounds/music (В стимовской и гоговской версиях эти треки отсутствуют.) city_music_01.ogg city_music_02.ogg city_music_03.ogg city_music_04.ogg city_music_05.ogg city_music_06.ogg city_music_07.ogg city_music_08.ogg city_music_09.ogg city_music_10.ogg city_music_11.ogg city_music_12.ogg city_music_13.ogg city_music_14.ogg city_music_15.ogg 12_scene music.ogg mise02-ulicka.ogg папка Mafia/sounds (В стимовской и гоговской версиях эти треки "убиты" в них записана тишина вместо муызки). 03_music.wav 10_music.wav 10_musicin.wav 12_radio.wav 13b_music.wav 14_Coucou.wav 18_radio.wav s_music1.wav s_music2.wav s_music3.wav s_music5.wav |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Поэтому после загрузки сохранения все эти значения восстанавливаются. И если в скрипте с именем "1" на момент сохранения в переменной 7 было значение 648, то после загрузки сохранения это значение восстановится. Соответственно, если в переменной 5 был идентификатор потока, то он там и будет. Эту фичу можно использовать для отслеживания того, начал ли игрок новую игру или загрузил сейв. Так что я сейчас ещё добавлю к дестрою дополнительную проверку, была ли загрузка из сейва. Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Ха! Ни фига. Я ошибся. Значение переменных не сохраняется. Но фишка с уничтожением потоков, почему-то работает. Хз, возможно, команда Stream_Destroy, в принципе, если видит некорректный идентификатор, докапывается до потоков, ранее созданных этом скрипте. Хз почему, но работает как надо. UPD: Я вообще теперь ничего не понимаю. Снова была ошибка с непрошеным воспроизведением. Хотя теперь, вроде, происходит реже. Я уже ничего не понимаю. Кто-нибудь знает способ определить в скрипте, что игрок собирается загрузиться с сохранения или выйти из миссии, чтобы перед этим отдестроить аудиопотоки? |
Текущее время: 06:27. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2025, vBulletin Solutions Inc. Перевод: zCarot