Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: dialogid

  1. #1
    Аватар для denis01
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.05.2014
    Сообщений
    70
    Репутация:
    0 ±

    dialogid

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

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

  2. #2
    Аватар для Seregamil
    Проверенный

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


  3. Пользователь сказал cпасибо:
    denis01 (01.08.2014)
  4. #3
    Аватар для denis01
    Пользователь

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

    Спасибо огромное

  5. #4
    Аватар для OKStyle
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    12.05.2013
    Сообщений
    205
    Репутация:
    49 ±
    Быстрее должно быть так:
    PHP код:
    if(dialogid == 20)
    {
        if(!
    response) return 1;
        
    SendClientMessage(playerid0x66CC00FF"Онлайн радио включено");
        
    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. Засим, вот так будет идеально:
    PHP код:
    if(dialogid == 20)
    {
        if(!
    response) return 1;
        
    station[128];
        switch(
    listitem)
        {
            case 
    0strcat(station"http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
            case 
    1strcat(station"http://online.radiorecord.ru:8101/rr_128");
            case 
    2strcat(station"http://onair.eltel.net:80/europaplus-128k");
            case 
    3strcat(station"http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
            case 
    4strcat(station"http://striiming.trio.ee/dfm64.mp3.m3u");
            case 
    5strcat(station"http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
            case 
    6strcat(station"http://stream05.akaver.com/skyradio_hi.mp3");
            case 
    7strcat(station"http://skycast.su:2007/rock-online.m3u");
            default: return 
    SendClientMessage(playerid0x66CC00FF"Неверная волна онлайн-радио.");
            }
        if(!
    PlayAudioStreamForPlayer(playeridstation)) return SendClientMessage(playerid0x66CC00FF"Указанное онлайн-радио не ведёт вещание.");
        
    SendClientMessage(playerid0x66CC00FF"Онлайн-радио включено.");
        
    SetPVarInt(playerid"PlayerRadio"1);
        return 
    1;


  6. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от OKStyle Посмотреть сообщение
    if(!PlayAudioStreamForPlayer(playerid, station)) return SendClientMessage(playerid, 0x66CC00FF, "Указанное онлайн-радио не ведёт вещание.");
    Какой тогда вообще смысл делать такое сообщение, если сервер никак не проверяет работу радио по ссылке? Весь поток воспроизводится на стороне клиента.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. Пользователь сказал cпасибо:
    denis01 (02.08.2014)
  8. #6
    Аватар для OKStyle
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    12.05.2013
    Сообщений
    205
    Репутация:
    49 ±

  9. #7
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от OKStyle Посмотреть сообщение
    На русскоязычной версии пишут, что функция не возвращает конкретного значения, на английском же, - два значения. И там чуть ниже написано, что функция не выполнится если игрока не существует ( может быть это одна из причин, почему не выполнится функция ), не думаю, что Калькор добавил возможность проверять в функции проигрывается ли тот или иной аудиопоток или нет.

    Даже сейчас проверил, ссылки не существует - вернёт единицу.
    Последний раз редактировалось L0ndl3m; 01.08.2014 в 23:41.

  10. Пользователь сказал cпасибо:
    denis01 (02.08.2014)
  11. #8
    Аватар для denis01
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.05.2014
    Сообщений
    70
    Репутация:
    0 ±
    Ребят а почему когда я захожу через песочницу и собираюсь проверить команду, с основной играют все аудиопотоки а с заходшим через песочницу сообщение выводит то что радио включено а само радио не работает

    PHP код:
    new playerradio[MAX_PLAYERS]; 
    PHP код:
        if(dialogid == 20)
        {
            if(!
    response) return 1;
            {
                switch(
    listitem)
                {
                    case 
    0PlayAudioStreamForPlayer(playerid"http://radio.zaycev.fm:9002/ZaycevFM(128).m3u");
                    case 
    1PlayAudioStreamForPlayer(playerid"http://online.radiorecord.ru:8101/rr_128");
                    case 
    2PlayAudioStreamForPlayer(playerid"http://onair.eltel.net:80/europaplus-128k");
                    case 
    3PlayAudioStreamForPlayer(playerid"http://radio02-cn03.akadostream.ru:8108/shanson128.mp3");
                    case 
    4PlayAudioStreamForPlayer(playerid"http://striiming.trio.ee/dfm64.mp3.m3u");
                    case 
    5PlayAudioStreamForPlayer(playerid"http://online-radiomelodia.tavrmedia.ua/RadioMelodia.m3u");
                    case 
    6PlayAudioStreamForPlayer(playerid"http://stream05.akaver.com/skyradio_hi.mp3");
                    case 
    7PlayAudioStreamForPlayer(playerid"http://skycast.su:2007/rock-online.m3u");
                }
                
    SendClientMessage(playerid0x66CC00FF"Онлайн радио включено");
                
    playerradio[playerid] = 1;
                return 
    1;
            }
        } 
    PHP код:
    if(strcmp(cmd"/fm"true) == 0)
    {
        if(
    playerradio[playerid] == 1)
        {
            
    StopAudioStreamForPlayer(playerid);
            
    SendClientMessage(playerid0xFF0000FF"Радио отключено");
            
    playerradio[playerid] = 0;
        }
        return 
    ShowPlayerDialog(playerid20DIALOG_STYLE_LIST"Радио""1. Зайцев ФМ\n2. Радио Рекорд\n3. Европа плюс\n4. Радио Шансон\n5. Радио ДФМ\n6. Радио Мелодия\n7. СКУ Радио\n8. Радио РОК""Выбрать""Закрыть");


  12. #9
    Аватар для OKStyle
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    12.05.2013
    Сообщений
    205
    Репутация:
    49 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Даже сейчас проверил, ссылки не существует - вернёт единицу.
    А если нет игрока - 0?

  13. #10
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от OKStyle Посмотреть сообщение
    А если нет игрока - 0?
    Да, но проверить бы давно самому можно было.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •