- Регистрация
- 29 Май 2014
- Сообщения
- 441
- Лучшие ответы
- 0
- Репутация
- 147
Здраствуйте Ув.Формучане, хочу показать вам функцию, прослушивания музыки через ссылку URL, слышать её будут как раз таки все, игроки в уроке будет присутствовать простенький цикл, будет чему научиться
ПАРАМЕТРЫ есть цикл, чтобы все игроки слышали, а не один, playerid - 1 игрок, i - все игроки :
Вот команда :
Сам dialog:
Можно так же сделать команду чтобы прямо в игре, делать музыку :
Ко всем new:
Так же к стоку Fresh() добавить :
Вот и все дорогие форумчане, кому нужно берите на здоровье))Удачи..
ПАРАМЕТРЫ есть цикл, чтобы все игроки слышали, а не один, playerid - 1 игрок, i - все игроки :
PHP:
foreach(new i : Player)
{
PlayAudioStreamForPlayer(i, url[], Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0, Float:distance = 50.0, usepos = 0)
Чтобы остановить музыку - StopAudioStreamForPlayer(i);
(Так же цикл можно использовать другой, вот пример for(new i = 0; i<MAX_PLAYERS; i++, согласитесь тот проще)
PHP:
i - Всем игрокам в определенном радиусе будет слышна музыка.
PHP:
url[] - Url песни. Форманды - .mp3
PHP:
Float:PosX - Позиция игрока для воспроизведения аудио трека. По умолчание 0.0
Float:PosY - Позиция игрока для воспроизведения аудио трека. По умолчание 0.0
Float:PosZ - Позиция игрока для воспроизведения аудио трека. По умолчание 0.0
PHP:
Float:distance - Расстояние на которому будет слышна музыка.
PHP:
usepos - По умолчанию 0.
PHP:
Знаете почему Float - потому-что это тип данных который содержит дробные числа или же точку, по этому к типу данных добавляем координаты, там есть точка.
Вот команда :
Код:
if(strcmp(cmd, "/mmusic", true) == 0)
{
ShowPlayerDialog(playerid,101,2,"«Музыка»","\
Название\
\nНазвание\
\nНазвание\
\nНазвание\
","Слушать","Отмена");
return 1;
}
Сам dialog:
Код:
else if(dialogid == 101) //Реп
{
switch(listitem)
{
case 0:{PlayAudioStreamForPlayer(playerid, "Ссылка");} //Название
case 1:{PlayAudioStreamForPlayer(playerid, "ССылка");} //название
case 2:{PlayAudioStreamForPlayer(playerid, "Ссылка");} //Название(можете тут не писать, выше в 2-ух строках тоже)
case 3:{ShowPlayerDialog(playerid,102,DIALOG_STYLE_INPUT,"Другая песня","{00FF40}Введите url песни, желательно с {FF0000}.mp3 {00FF40}форматов","Ок","Отмена");}
}
return 1;
}
else if(dialogid == 102) //Другая песня
{
if(response)
{
if(!strlen(inputtext)){
SendClientMessage(playerid,COLOR_RED,"Вы не вписали URL песни!");
return 1;
}else{
PlayAudioStreamForPlayer(i,inputtext);}
}
return 1;
}
Можно так же сделать команду чтобы прямо в игре, делать музыку :
Ко всем new:
PHP:
new bool:Music[MAX_PLAYERS];
new bool:Music2;
new URLW[128];
new Float: MGM[5] = 100.0;
new UMusic[128];
new Float: MusicU[5] = 100.0;
Почему Float я объяснял выше.
Код:
else if(strcmp(cmd, "/amusic", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < уровень админки) return true;
new Float:X, Float:Y, Float:Z;
tmp = strcharsplit(cmdtext,idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_WHITE, " Введите: /amusic [радиус] [url]");
new Float:Distance = strval(tmp);
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid,COLOR_WHITE, " Введите: /amusic [радиус] [ссылка]");
GetPlayerPos(playerid, X, Y, Z);
MusicU[4] = Distance; MusicU[1] = X; MusicU[2] = Y; MusicU[3] = Z; UMusic = result; Music2 = true;
return true;
}
Так же к стоку Fresh() добавить :
Код:
if(Music2 == true)
{
if(IsPlayerInRangeOfPoint(i, MusicU[4], MusicU[1], MusicU[2], MusicU[3]))
{
if(!GetPVarInt(i,"Music"))
{
SetPVarInt(i,"Music",1);
PlayAudioStreamForPlayer(i, UMusic, MusicU[1], MusicU[2], MusicU[3], MusicU[4], true);
}
}
else
{
if(GetPVarInt(i,"Music"))
{
DeletePVar(i,"Music");
StopAudioStreamForPlayer(i);
}
}
}
Вот и все дорогие форумчане, кому нужно берите на здоровье))Удачи..