Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 9 из 9
  1. #1
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±

    Диалог вызывается один раз

    Всем доброго здравия.
    Сразу к вопросу:
    В моей команде /banlist идёт вызов функции показа диалогов (по одному на каждого забаненного с информацией о бане).
    Проблема состоит в том, что при вводе команды диалог мне показывают один раз, после чего при последующих вводах ничего не происходит...
    Точнее, происходит всё, что находится до строчки "if(mysql_fetch_row_format(name))", и дальше ничего не срабатывает, пока я не перезайду в игру.
    Я не силён в таких редких функциях MySQL, мало работал со strcat, поэтому обращаюсь сюда. В чём тут может быть проблема?

    PHP код:
    forward Banlist(playerid);
    public 
    Banlist(playerid)
    {
        new 
    rowsfieldsbanlist[1000];
         new 
    name[24], line[30];
        
    cache_get_data(rowsfields);
          if(
    rows)
        {
            for(new 
    i;rows;i++)
            {
                if(
    mysql_fetch_row_format(name))
                {
                    
    format(linesizeof(line), "{FF0000}%s\n"name);
                    
    strcat(banlistline);
                }
            }
            
    ShowPlayerDialog(playeridD_BANINFODIALOG_STYLE_LIST"Банлист"banlist"Выбрать""Закрыть");
            
    mysql_free_result();
        }
        else 
    ShowPlayerDialog(playerid1029DIALOG_STYLE_MSGBOX"Банлист""                   Список пуст""Закрыть""");
        return 
    true;


  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    crashdetect что-нибудь говорит?
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    crashdetect что-нибудь говорит?
    Помалкивает

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Запрос бы увидеть. Ибо если отлов игроков идёт не по одному, тогда проблема в mysql_fetch_row_format, которая обрабатывает все строки сразу и записывает их в одну. Скорее всего, там и проблема.
    Доведите мод до вызова бага и покажите логи
    PHP код:
    forward Banlist(playerid);
    public 
    Banlist(playerid)
    {
        new 
    rowsfieldsbanlist[1000];
        new 
    name[24], line[30];
        
    cache_get_data(rowsfields);
        if(
    rows)
        {
            for(new 
    i;rows;i++)
            {
                if(
    mysql_fetch_row_format(name))
                {
                    
    printf("name = \"%s\""name);
                    
    format(linesizeof(line), "{FF0000}%s\n"name);
                    
    strcat(banlistline);
                }
            }
            
    ShowPlayerDialog(playeridD_BANINFODIALOG_STYLE_LIST"Банлист"banlist"Выбрать""Закрыть");
            
    mysql_free_result();
        }
        else 
    ShowPlayerDialog(playerid1029DIALOG_STYLE_MSGBOX"Банлист""                   Список пуст""Закрыть""");
        return 
    true;

    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #5
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±
    Так вот именно, что я уже это и делал
    Ставив обычное логирование, я таким образом добрался до вызова всего лишь одной строчки "Banlist1", вот уже в таком варианте:
    Код HTML:
    public Banlist(playerid)
    {
        new rows, fields, banlist[1000];
        new name[24], line[30];
        cache_get_data(rows, fields);
        if(rows)
        {
            for(new i;i < rows;i++)
            {
                SendClientMessage(playerid, COLOR_WHITE, "Banlist1");
                if(mysql_fetch_row_format(name))
                {
                    printf("name = \"%s\"", name);
                    SendClientMessage(playerid, COLOR_WHITE, "Banlist2");
                    format(line, sizeof(line), "{FF0000}%s\n", name);
                    strcat(banlist, line);
                }
            }
            ShowPlayerDialog(playerid, D_BANINFO, DIALOG_STYLE_LIST, "Банлист", banlist, "Выбрать", "Закрыть");
            mysql_free_result();
        }
        else ShowPlayerDialog(playerid, 1029, DIALOG_STYLE_MSGBOX, "Банлист", "                   Список пуст", "Закрыть", "");
        return true;
    }
    Banlist2 уже не вызывалась.
    Кстати, ещё один факт: если список пустой, то окно с сообщением об этом вызывается нормально

  6. #6
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    112
    Репутация:
    33 ±
    Версия плагина MySQL какая?

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

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    Версия плагина MySQL какая?
    MySQL R8 (R34)

  8. #8
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    112
    Репутация:
    33 ±
    Попробуй

    PHP код:
    forward Banlist(playerid); 
    public 
    Banlist(playerid

        new 
    rowsfieldsbanlist[1000]; 
        new 
    name[24], line[30]; 
        
    cache_get_data(rowsfields); 
        if(
    rows
        { 
            for(new 
    i;rows;i++) 
            { 
               
    cache_get_field_content(i,"Name",name,переменная подключения mysql,длина строки);
           
    format(linesizeof(line), "{FF0000}%s\n"name); 
               
    strcat(banlistline);
            } 
            
    ShowPlayerDialog(playeridD_BANINFODIALOG_STYLE_LIST"Банлист"banlist"Выбрать""Закрыть"); 
        } 
        else 
    ShowPlayerDialog(playerid1029DIALOG_STYLE_MSGBOX"Банлист""                   Список пуст""Закрыть"""); 
        return 
    true

    - - - Добавлено - - -

    И запрос бы ещё увидеть.
    Последний раз редактировалось MR_BEN; 14.07.2014 в 12:39.

  9. Пользователь сказал cпасибо:
    Edwin (14.07.2014)
  10. #9
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    Попробуй

    PHP код:
    forward Banlist(playerid); 
    public 
    Banlist(playerid

        new 
    rowsfieldsbanlist[1000]; 
        new 
    name[24], line[30]; 
        
    cache_get_data(rowsfields); 
        if(
    rows
        { 
            for(new 
    i;rows;i++) 
            { 
               
    cache_get_field_content(i,"Name",name,переменная подключения mysql,длина строки);
           
    format(linesizeof(line), "{FF0000}%s\n"name); 
               
    trcat(banlistline);
            } 
            
    ShowPlayerDialog(playeridD_BANINFODIALOG_STYLE_LIST"Банлист"banlist"Выбрать""Закрыть"); 
        } 
        else 
    ShowPlayerDialog(playerid1029DIALOG_STYLE_MSGBOX"Банлист""                   Список пуст""Закрыть"""); 
        return 
    true

    - - - Добавлено - - -

    И запрос бы ещё увидеть.
    Вот спасибо тебе, братишка
    Блин, самый прикол, что я уже делал извлечение данных этой строчкой и всё равно срабатывало один раз, только я ставил её в начало коллбэка...
    Всех благодарю, закройте тему.

 

 

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

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

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

Ваши права

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