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

    Статус
    Оффлайн
    Регистрация
    08.09.2013
    Сообщений
    22
    Репутация:
    16 ±

    [Макрос/Define] get_str_arg(%0,%1,%2)

    Для начала разберем функцию getarg.
    Wiki Samp: getarg() - Получает указанный аргумент из функции, очень удобно использовать с функциями, которые имеют динамическое число аргументов.

    С этим все понятно, но есть одно "НО"!
    Wiki Samp: Важное замечание: НЕ работает с массивами в качестве параметра !

    Недавно мне строчно нужно было сделать функцию с динамическим кол-вом аргументов и + ко всему, чтобы поддерживались массивы.

    Вот такое решение придумал для себя:

    PHP код:
    #define get_str_arg(%0,%1,%2); \
    for(new 0< (%2); ++x) { \
        if((%
    1[x] = getarg((%0), x)) != EOS) continue; \
        else %
    1[x] = EOS; break; \

    пример использования:

    PHP код:
    stock BlaBla(...) {
        new 
    str[20];
        for(new 
    0numargs(); ++i) {
            
    get_str_arg(istrsizeof(str)); // i - ID агргумента, значение которого вы хотите получить.
        
    }
        return print(
    str);
    }
    //numargs(); - функция возвращает число аргументов, переданных в функцию с динамическим числом аргументов.

    BlaBla("Текст1","Текст 2","Текст3"); 
    // вставим ее в OnGameModeInit и при старте сервера в консоль выведет текст последнего аргумента. 
    функция BlaBla чисто для примера, особо сверхестественного в ней ничего нету :)

  2. 3 пользователя(ей) сказали cпасибо:
    L0ndl3m (16.03.2014) Marik (17.03.2014) Копюшон (20.03.2014)
  3. #2
    Аватар для Копюшон
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2013
    Сообщений
    93
    Репутация:
    14 ±
    Полезно!+

 

 

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

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

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

Ваши права

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