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

Тема: Цикл

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±

    Цикл

    Всем привет. Столкнулся с такой проблемой, что не знаю как сделать правильно цикл со следующим кодом:

    PHP код:
    static const fmt_str[] = "%s{FFFFFF}%s[%d] - Уровень розыска: {FFFF00}%d\n";
    new 
    string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+3-2+1];
    foreach(new 
    iPlayer)
    {
        if(
    player[i][pwanted] > 0format(stringsizeof(string), fmt_strstringGN(i), iplayer[i][pwanted]);
        else 
    SPD(playerid0DSM"Список разыскиваемых""{FFFFFF}Список пуст""Принять""");
    }
    SPD(playerid0DSM"Список разыскиваемых"string"Принять"""); 
    Как сделать правильно подсчет символов таким образом, чтобы работало вместе с циклом, а не на один раз?
    ______________________________________________
    Услуги Pawn

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Что-то такое должно быть (Код на работоспособность не проверял):
    PHP код:
    static const
            
    fmt_str[] = "{FFFFFF}%s[%d] - Уровень розыска: {FFFF00}%d\n";
        const
            
    buffer_size sizeof fmt_str + (-MAX_PLAYER_NAME) + (-5) + (-1),
            
    MAX_LINES 2048 buffer_size;
        new
            
    string[buffer_size MAX_LINES],
            
    buffer[buffer_size], str_len,
            
    players[MAX_LINES] = {0}, player_counti;
        foreach (
    iPlayer)
        {
            if (
    player[i][pwanted] == 0)
                continue;
            
    players[player_count++] = i;
        }
        if (
    player_count != 0)
        {
            for (
    = -1; ++!= player_count; )
            {
                
    format(buffersizeof stringfmt_strGN(i), iplayer[i][pwanted]);
                if ((
    str_len += strcat(stringbuffer)) + sizeof buffer sizeof string)
                    continue;
                break;
            }
        }
        else 
    string = !"{FFFFFF}Список пуст";
        return 
    ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX, !"Список разыскиваемых",
            
    string, !"Принять", !""); 
    Последний раз редактировалось VVWVV; 08.02.2016 в 18:09. Причина: Изменил код

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±
    Спасибо. Позже разберу код и проверю на работоспособность
    ______________________________________________
    Услуги Pawn

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±
    Короче, вроде работает, сам цикл не проверял, но столкнулся с такой проблемой:

    http://imgur.com/uyFu8A6

    Вместо имени игрока цифра 86 :D
    ______________________________________________
    Услуги Pawn

  6. #5
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Что-то такое должно быть (Код на работоспособность не проверял):
    static const
    fmt_str[] = "{FFFFFF}%d[%d] - Уровень розыска: {FFFF00}%d\n";
    const
    buffer_size = sizeof fmt_str + (-2 + MAX_PLAYER_NAME) + (-2 + 5) + (-2 + 1),
    MAX_LINES = 2048 / buffer_size;

    new
    string[buffer_size * MAX_LINES],
    buffer[buffer_size], str_len,
    players[MAX_LINES] = {0}, player_count, i;
    foreach (i: Player)
    {
    if (player[i][pwanted] == 0)
    continue;
    players[player_count++] = i;
    }
    if (player_count != 0)
    {
    for (i = -1; ++i != player_count; )
    {
    format(buffer, sizeof string, fmt_str, GN(i), i, player[i][pwanted]);
    if ((str_len += strcat(string, buffer)) + sizeof buffer < sizeof string)
    continue;
    break;
    }
    }
    else string = !"{FFFFFF}Список пуст";
    return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, !"Список разыскиваемых",
    string, !"Принять", !"");
    Кхм
    Мои глаза от твоего кода лезут на гавно-инфо и создают тему о расстановке пикапов.

  7. 2 пользователя(ей) сказали cпасибо:
    Vano_Glad (08.02.2016) VVWVV (08.02.2016)
 

 

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

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

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

Ваши права

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