Хочу сделать воспроизведение музыки, но чтобы она играла по порядку, а не именно 1 указывать. Помогите буду благодарен!
Хочу сделать воспроизведение музыки, но чтобы она играла по порядку, а не именно 1 указывать. Помогите буду благодарен!
Эм,выскажу свое предположение.
По сути можно сделать все через таймер,узнаешь время 1-го трека,ставишь таймер на отсчет(врямя указываешь столько,сколько длиться трек) по окончании таймера(ну и по сути трека) начинаеться воспроизведение следующего трека
PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..
25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/
#FIXSAMP
Верно, так и есть.
В начало мода:
При проигрывании трека:PHP код:
new const TrackLength[] = {0, 0, 0, 0, 0}; // Продолжительность треков
new const TrackStreams[][] = {
"http://ссылка на аудиопоток первого трека",
"http://ссылка на аудиопоток второго трека",
"http://ссылка на аудиопоток третьего трека",
"http://ссылка на аудиопоток четвёртого трека",
"http://ссылка на аудиопоток пятого трека"
};
В public OnPlayerConnect:PHP код:
new r = random(sizeof(TrackLength));
PlayAudioStreamForPlayer(playerid, TrackStreams[r]);
SetPVarInt(playerid, "TrackID", r);
SetPVarInt(playerid, "TrackLength", GetTickCount() + TrackLength[r] * 1000);
В односекундный таймер, в цикл:PHP код:
SetPVarInt(playerid, "TrackID", -1);
При отключении трека:PHP код:
new tick = GetTickCount();
if(GetPVarInt(playerid, "TrackID") && GetPVarInt(playerid, "TrackLength") <= tick)
{
new r = random(sizeof(TrackLength));
PlayAudioStreamForPlayer(playerid, TrackStreams[r]);
SetPVarInt(playerid, "TrackID", r);
SetPVarInt(playerid, "MusicLength", tick + TrackLength[r] * 1000);
}
PHP код:
StopAudioStreamForPlayer(playerid);
SetPVarInt(playerid, "TrackID", -1);
Если с момента моего последнего ознакомления с функциями воспроизведения потоков ничего не изменилось, Ford прав. И я отслеживание сделал бы следующим образом
Сначала две глобальные переменные
Далее в функцию, где идёт воспроизведение первого текста, ставим следующееPHP код:
new MusicTime[6];//Где 5 - число треков, которые мы будем воспроизводить
new MusicTimer;//В данную переменную запишем ID таймера, дабы после окончания воспроизведения убить ненужный таймер
new track;//А тут мы будем хранить номер трека, который воспроизведён
Ну и паблик, который будет вызываться таймеромPHP код:
MusicTimer = SetTimer...//Секундный таймер
MusicTime[0] = 60*3+20;//Продолжительность трека - 3 минуты 20 секунд
track = 0;//А тут номер трека, который мы воспроизвели. Он равен номеру ячейки
Ну и всё. Такой способ позволяет удобно управлять треками (узнать время до окончания трека, делать цикличность воспроизведения плейлиста и т.п.). Только нужно учесть, что скорость начала воспроизведения трека (задержка) зависит от интернета игрока, если мне память не изменяет. Хотя не уверен. Плюс эта система будет работать только если трек играет общий для всех и только один. Если каким-то образом нужно сделать для каждого игрока свои песни, придётся все переменные и таймер переводить в массив под всех игроковPHP код:
forward Blabla();
public Blabla()
{
if(MusicTime[track] != 0)
{
MusicTime[track]--;
if(MusicTime[track] == 1)
{
track++;
switch(track)
{
case 0:
{
MusicTime[track] = 60*3+20
//Запускаем новый трек
}
case 1:
{
MusicTime[track] = 60*2+50
//Запускаем новый трек
}
case 2:
{
MusicTime[track] = 60*1+52
//Запускаем новый трек
}
case 3:
{
MusicTime[track] = 60*4+12
//Запускаем новый трек
}
case 4:
{
MusicTime[track] = 60*3+22
//Запускаем первый трек, либо останавливаем всё, убивая таймер и приравнивая track к 0
}
}
}
}
return 1;
}
Последний раз редактировалось DeimoS; 02.02.2014 в 23:47. Причина: Опередили :с
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)