Mafia-Game Forum

Mafia-Game Forum (https://mafia-game.ru/forum/index.php)
-   Скриптинг (https://mafia-game.ru/forum/forumdisplay.php?f=10)
-   -   Скрипт автомобильного радио (https://mafia-game.ru/forum/showthread.php?t=1047)

KlassenAS 09.11.2020 20:49

Цитата:

Сообщение от Firefox3860 (Сообщение 13091)
Случайный выбор станции в машине и вправду добавляет реализма.

Кстати, о реализьме.

Я подумал: при старте скрипта все треки на радио начинают играть с начала.
Это неправильно. Ведь радио не начинает эфир тогда, когда мы его включаем.
Надо при первом включении радио позиции треков рандомизировать.
Но рандомизировать-то надо по уму!
Надо чтобы случайное значение укладывалось в длительность трека.
А как узнать длительность трека?
Ведь такой скриптовой функции нет.

Гипотеза: если указать потоку с помощью команды Stream_SetPos некорректное значение, заведомо выходящее за пределы длительности трека, например 4 000 000, то потоку присвоится максимально возможное значение, соответствующее окончанию трека, и считав его с помощью команды Stream_GetPos мы узнаем длину трека.

Проверил гипотезу экспериментом.
Let Flt[15]=4000000
Stream_SetPos 0,15
Stream_GetPos 0,15
FreeRide_ScoreSet Flt[15]

И получил неожиданный результат: После попытки присвоения потоку некорректного значения позиции, команда Stream_GetPos показывает погоду на Марсе!
Т. е. возвращает рандомное значение.
Правда, чаще всего в диапазоне от 3 000 до 15 000 миллисекунд, и нам это не вполне подходит.

Таким образом, мы можем, при первом включении радио, смело назначать трекам рандомные позиции в диапазоне от 0 до 5 минут, а если рандомное значение выйдет за пределы реальной длительности трека, то ничего плохого не будет, значение будет рандомизировано по новой.

А реализовать эту фичу - пара пустяков.
Четыре строки в начале скрипта.
Что я уже и сделал.
Для версий 2.1 и 2.0 архивы по ссылкам обновлены.

Abradox 09.11.2020 23:20

Цитата:

Сообщение от KlassenAS (Сообщение 13096)
Я подумал: при старте скрипта все треки на радио начинают играть с начала.
Это неправильно. Ведь радио не начинает эфир тогда, когда мы его включаем.

Если так рассуждать, то радио должно играть даже тогда, когда Том выходит из машины, а не ставиться на паузу.

Как обстоит дело с выключением сюжетной музыки при выходе из машины в аэропорту в миссии Сливки общества (Creme de la Creme)?

P.S. пока разработка идет, и до релиза ещё не дошло, давай лучше ссылку на файл script.sc, чтобы не перекачивать каждый раз архив в 236 мнгабайт, ведь по трекам изменений уже не будет.

CurtisTea 10.11.2020 04:34

Кста не знаю вспоминал ли кто-то уже тут, но команда stream_create отлично воспринимает ссылки на онлайн радио (вот прям так, в формате stream_create x,"http://87.230.103.107:80/top100station.mp3" - это мой старый пример, ссылка дохлая уже давно походу). Правда сам поток как я понял должен быть строго в .mp3 закодирован, иначе игра тупо виснет. И ещё года четыре назад, когда я это выкупил именно такое онлайн радио уже было практически не найти... Я не сильно компетентен в кодировке потокового музла, может можно какой-то костыль придумать и себе во фрирайд пускать какую-то oldies радиостанцию и сейчас, я хз)


KlassenAS 10.11.2020 06:48

Цитата:

Сообщение от Abradox (Сообщение 13097)
Если так рассуждать, то радио должно играть даже тогда, когда Том выходит из машины, а не ставиться на паузу

Так-то да, но глюки из-за сохранения потоков и отсутствие функции для определения длительности трека ставят на этом крест.
Если бы можно было определять длительность трека, я бы засекал, сколько времени радио было выключено, и при включении перематывал трек и/или переключал на следующий и ещё перематывал на нужное время, чтобы имитировать продолжение эфира, пока радио выключено.
А если бы не было глюка из-за сохранения потоков, то этого вопроса вообще бы не было и скрипт был вдвое проще и всё работало бы по фен-шую.
А так довольствуемся тем, что есть.

Цитата:

Сообщение от Abradox (Сообщение 13097)
Как обстоит дело с выключением сюжетной музыки при выходе из машины в аэропорту в миссии Сливки общества (Creme de la Creme)?

Я ещё 3 ноября это исправил и обновил архивы. Посмотри сообщение №229 оно отредактировано.

Цитата:

Сообщение от Abradox (Сообщение 13097)
P.S. пока разработка идет, и до релиза ещё не дошло, давай лучше ссылку на файл script.sc, чтобы не перекачивать каждый раз архив в 236 мнгабайт, ведь по трекам изменений уже не будет.

Чуть позже, как с работы вернусь.

Цитата:

Сообщение от CurtisTea (Сообщение 13101)
Кста не знаю вспоминал ли кто-то уже тут, но команда stream_create отлично воспринимает ссылки на онлайн радио (вот прям так, в формате stream_create x,"http://87.230.103.107:80/top100station.mp3" - это мой старый пример, ссылка дохлая уже давно походу). Правда сам поток как я понял должен быть строго в .mp3 закодирован, иначе игра тупо виснет. И ещё года четыре назад, когда я это выкупил именно такое онлайн радио уже было практически не найти... Я не сильно компетентен в кодировке потокового музла, может можно какой-то костыль придумать и себе во фрирайд пускать какую-то oldies радиостанцию и сейчас, я хз)

Не просто вспоминали, но ещё и сетовали на то, что кроме джойрадио не удаётся найти ни одной ссылки на радиовещание, которая не вешала бы игру намертво.
И даже есть отдельная версия скрипта - 1.2, ориентированная именно на реальное радио.

Блин, если бы я умел правильно писать dll и знал, как из собственного кода обратиться к функциям движка, чтобы получить доступ к акторам и их свойствам, я бы этот скрипт сделал в виде asi плагина, и плеер у меня работал бы из самой dll, и никаких проблем бы не было. А плейлист бы считывался из ini-файла. И работало бы и любое радио, и любые аудио форматы. Так-то я в Delphi программы писать умею, можно и плагин замутить. Только я не знаю, как реализовать обмен данными с игровым движком.


UPD:
Вот сами скрипты в виде сферических коней в вакууме:

Ver. 2.1
https://drive.google.com/file/d/1zjl...ew?usp=sharing

Ver. 2.0
https://drive.google.com/file/d/1MOs...ew?usp=sharing

Haku 10.11.2020 12:59

KlassenAS, если рассмотреть на этом примере? Подойдет ли он для Мафии?

оффтоп


KlassenAS 10.11.2020 13:14

Цитата:

Сообщение от Haku (Сообщение 13104)
KlassenAS, если рассмотреть на этом примере? Подойдет ли он для Мафии?

Подойдёт, но лишь потому, что это общая информация о dll и их подключении к основному игровому процессу.
Здесь нет информации о том, как из dll обращаться к функциям движка и обмениваться с ним данными.
Тупо присосались к процессу и вывели окошко с текстом и кнопкой ОК.
Я такой плагин хоть щас могу сделать. Толку будет, как от козла молока.
Вопрос ведь в том, как к акторам доступ получить. В идеале, к некоторым функциям, вызываемым командами из скриптов.
В частности, это необходимо для определения нахождения Томми в машине и для сравнения машин.

Abradox 10.11.2020 17:51

Цитата:

Сообщение от KlassenAS (Сообщение 13102)
Я ещё 3 ноября это исправил и обновил архивы. Посмотри сообщение №229 оно отредактировано.

Отлично, спасибо.

CurtisTea 11.11.2020 00:23

Цитата:

Сообщение от KlassenAS (Сообщение 13102)
И даже есть отдельная версия скрипта - 1.2, ориентированная именно на реальное радио.

Я просто к чему эту тему вспомнил, зачем эти манипуляции с аудио-файлами (что не есть "настоящее" радио)? Можно было бы залаунчить что-то типа mafia community radio с таким аудио-кодеком, который прочитала бы наша старушка и пускай бы оно себе работало в фоновом режиме.

Мож если не лень будет даже погуглю как оно работает вообще)

KlassenAS 11.11.2020 00:48

Цитата:

Сообщение от CurtisTea (Сообщение 13115)
Можно было бы залаунчить что-то типа mafia community radio с таким аудио-кодеком, который прочитала бы наша старушка и пускай бы оно себе работало в фоновом режиме.

Предлагаешь сделать специально для игры мафиозное онлайн-радио?
Плохая идея. Вся музыка лицензированная, без официальной покупки прав такую интернет-радиостанцию забанят нафиг.
Другое дело, если написать программу, которая локально, на компе будет имитировать радиоэфир, крутить треки, притворяясь сервером, к которому игра сможет обращаться по ссылке. Т.к. "вещание" и игра будут работать на одном компе, это освободит от потребности в интернет-подключении и избавит от подвисаний при загрузке. Кроме того, по моим наблюдениям, игра игнорирует интернет-поток при сохранении, и глюков с непрошенным воспроизведением после этого не происходит.
Так же можно было бы имитировать любое количество радиостанций.
Но я хз, как такое реализовать.
Хотя такую программу тоже можно под asi плагин оформить, это был бы большой плюс.

Abradox 11.11.2020 02:02

Как отделить городскую музыку от миссионной?
Нужно чтобы при выходе из машины городская музыка не играла, а миссионная в миссиях играла.


Текущее время: 06:32. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2025, vBulletin Solutions Inc. Перевод: zCarot