PDA

Просмотр полной версии : [Вопрос] dialogid



denis01
01.08.2014, 10:08
Ребят можно ли сделать как нибудь проще этот диалог:

if(dialogid == 20)
{
if(!response) return 1;
switch(listitem)
{
case 0:
{
PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}
case 1:
{
PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}
case 2:
{
PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
radio_online[playerid] = 1;
}
case 3:
{
PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}
case 4:
{
PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}
case 5:
{
PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}
case 6:
{
PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}
case 7:
{
PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
}

}
}
Просто в каждом case кроме сылок одно и тоже, не могли бы подсказать как можно было бы упростить

Seregamil
01.08.2014, 10:34
if(dialogid == 20){
if(!response) return true;
switch(listitem){
case 0: PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
}
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
return true ;
}

denis01
01.08.2014, 17:01
if(dialogid == 20){
if(!response) return true;
switch(listitem){
case 0: PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
}
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
return true ;
}
Спасибо огромное

OKStyle
01.08.2014, 20:57
Быстрее должно быть так:

if(dialogid == 20)
{
if(!response) return 1;
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
switch(listitem)
{
case 0: return PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: return PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: return PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: return PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: return PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: return PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: return PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: return PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
default: return 1;
}
return 1;
}

Но есть одно НО: код не только нужно было оптимизировать потому, что при неудачной попытке запустить поток игроку всё-равно напишет, что радио включено. Не тестировал, но, возможно, функция вернёт 0 не только при INVALID_PLAYER_ID. Засим, вот так будет идеально:

if(dialogid == 20)
{
if(!response) return 1;
station[128];
switch(listitem)
{
case 0: strcat(station, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: strcat(station, "http://online.radiorecord.ru:8101/rr_128");
case 2: strcat(station, "http://onair.eltel.net:80/europaplus-128k");
case 3: strcat(station, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: strcat(station, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: strcat(station, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: strcat(station, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: strcat(station, "http://skycast.su:2007/rock-online.m3u");
default: return SendClientMessage(playerid, 0x66CC00FF, "Неверная волна онлайн-радио.");
}
if(!PlayAudioStreamForPlayer(playerid, station)) return SendClientMessage(playerid, 0x66CC00FF, "Указанное онлайн-радио не ведёт вещание.");
SendClientMessage(playerid, 0x66CC00FF, "Онлайн-радио включено.");
SetPVarInt(playerid, "PlayerRadio", 1);
return 1;
}

Daniel_Cortez
01.08.2014, 22:12
if(!PlayAudioStreamForPlayer(playerid, station)) return SendClientMessage(playerid, 0x66CC00FF, "Указанное онлайн-радио не ведёт вещание.");
Какой тогда вообще смысл делать такое сообщение, если сервер никак не проверяет работу радио по ссылке? Весь поток воспроизводится на стороне клиента.

OKStyle
01.08.2014, 23:31
http://wiki.sa-mp.com/wiki/PlayAudioStreamForPlayer

L0ndl3m
01.08.2014, 23:38
http://wiki.sa-mp.com/wiki/PlayAudioStreamForPlayer
На русскоязычной версии пишут, что функция не возвращает конкретного значения, на английском же, - два значения. И там чуть ниже написано, что функция не выполнится если игрока не существует ( может быть это одна из причин, почему не выполнится функция ), не думаю, что Калькор добавил возможность проверять в функции проигрывается ли тот или иной аудиопоток или нет.

Даже сейчас проверил, ссылки не существует - вернёт единицу.

denis01
02.08.2014, 00:20
Ребят а почему когда я захожу через песочницу и собираюсь проверить команду, с основной играют все аудиопотоки а с заходшим через песочницу сообщение выводит то что радио включено а само радио не работает


new playerradio[MAX_PLAYERS];


if(dialogid == 20)
{
if(!response) return 1;
{
switch(listitem)
{
case 0: PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
}
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
return 1;
}
}

if(strcmp(cmd, "/fm", true) == 0)
{
if(playerradio[playerid] == 1)
{
StopAudioStreamForPlayer(playerid);
SendClientMessage(playerid, 0xFF0000FF, "Радио отключено");
playerradio[playerid] = 0;
}
return ShowPlayerDialog(playerid, 20, DIALOG_STYLE_LIST, "Радио", "1. Зайцев ФМ\n2. Радио Рекорд\n3. Европа плюс\n4. Радио Шансон\n5. Радио ДФМ\n6. Радио Мелодия\n7. СКУ Радио\n8. Радио РОК", "Выбрать", "Закрыть");
}

OKStyle
02.08.2014, 13:57
Даже сейчас проверил, ссылки не существует - вернёт единицу.
А если нет игрока - 0?

L0ndl3m
02.08.2014, 14:54
А если нет игрока - 0?
Да, но проверить бы давно самому можно было. :grin:

OKStyle
02.08.2014, 15:30
Можно, я вчера подготовил скрипт, но так и не запустил))

denis01
03.08.2014, 10:47
Ребят а почему когда я захожу через песочницу и собираюсь проверить команду, с основной играют все аудиопотоки а с заходшим через песочницу сообщение выводит то что радио включено а само радио не работает


new playerradio[MAX_PLAYERS];


if(dialogid == 20)
{
if(!response) return 1;
{
switch(listitem)
{
case 0: PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
}
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
return 1;
}
}

if(strcmp(cmd, "/fm", true) == 0)
{
if(playerradio[playerid] == 1)
{
StopAudioStreamForPlayer(playerid);
SendClientMessage(playerid, 0xFF0000FF, "Радио отключено");
playerradio[playerid] = 0;
}
return ShowPlayerDialog(playerid, 20, DIALOG_STYLE_LIST, "Радио", "1. Зайцев ФМ\n2. Радио Рекорд\n3. Европа плюс\n4. Радио Шансон\n5. Радио ДФМ\n6. Радио Мелодия\n7. СКУ Радио\n8. Радио РОК", "Выбрать", "Закрыть");
}

Ребят помогите пожалуйста, планировать для других игроков не играет

underwoker
03.08.2014, 12:15
Ребят помогите пожалуйста, планировать для других игроков не играет
Вы с гугл транслейт сидите?

denis01
03.08.2014, 14:53
Извиняюсь, с телефона писал т9, аудиопотоки только для меня играют а для других игроков сообщение выводит а радио само не играет, в чем проблема может быть?

Nurick
03.08.2014, 21:12
enum
{
Dialog_Online_Radio
}


if(dialogid == Dialog_Online_Radio)
{
if(!response) return 1;
{
switch(listitem)
{
case 0: PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
}
SetPVarInt(playerid, "Online_Radio", 1);
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
return 1;
}
}


command(radio, playerid, params[])
{
if(GetPVarInt(playerid, "Online_Radio") == 1)
{
StopAudioStreamForPlayer(playerid);
SetPVarInt(playerid, "Online_Radio", 0);
SendClientMessage(playerid, 0xFE6500FF, "Радио отключено");
}
return ShowPlayerDialog(playerid, Dialog_Online_Radio, DIALOG_STYLE_LIST, "{FFD500}Онлайн радио", "1. Zaycev FM\n2. Radio Record\n3. Европа Плюс\n4. Радио Шансон\n5. Радио DFM\
\n6. Радио Мелодия\n7. Sky Radio\n8. Rock Radio", "Слушать", "Отмена");
}

#ball
04.08.2014, 00:50
Ребят помогите пожалуйста, планировать для других игроков не играет


if(dialogid == 20)
{
if(!response) return 1;
switch(listitem)
{
case 0: PlayAudioStreamForPlayer(playerid, "http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
case 1: PlayAudioStreamForPlayer(playerid, "http://online.radiorecord.ru:8101/rr_128");
case 2: PlayAudioStreamForPlayer(playerid, "http://onair.eltel.net:80/europaplus-128k");
case 3: PlayAudioStreamForPlayer(playerid, "http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
case 4: PlayAudioStreamForPlayer(playerid, "http://striiming.trio.ee/dfm64.mp3.m3u");
case 5: PlayAudioStreamForPlayer(playerid, "http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
case 6: PlayAudioStreamForPlayer(playerid, "http://stream05.akaver.com/skyradio_hi.mp3");
case 7: PlayAudioStreamForPlayer(playerid, "http://skycast.su:2007/rock-online.m3u");
}
SendClientMessage(playerid, 0x66CC00FF, "Онлайн радио включено");
playerradio[playerid] = 1;
return 1;
}

L0ndl3m
04.08.2014, 12:52
Могу смело сказать, что ссылок на аудиопоток, которые выбирают другие игроки - не существует.
Допустим вы выбираете тот аудиопоток, который работает, другие - другой, которого не существует.