|
|||||||||||||||||
|
|||||||||||||||||
|
09.11.2020, 20:49 | #11 | ||
Senior Member Сообщений: 341
Репутация: 285
Enforcer
|
Кстати, о реализьме.
Я подумал: при старте скрипта все треки на радио начинают играть с начала. Это неправильно. Ведь радио не начинает эфир тогда, когда мы его включаем. Надо при первом включении радио позиции треков рандомизировать. Но рандомизировать-то надо по уму! Надо чтобы случайное значение укладывалось в длительность трека. А как узнать длительность трека? Ведь такой скриптовой функции нет. Гипотеза: если указать потоку с помощью команды 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 архивы по ссылкам обновлены. Последний раз редактировалось KlassenAS; 09.11.2020 в 21:05. |
||
цитата |