Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 5
    Гостей: 3
    Пользователи: - отсутствуют
    Роботы: robot Bot, crawl Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Nesquik Дата: 23-09-2013, 09:15 Просмотров: 4244

    vformat Функция для преобразование массивов.

    Из string.inc
    /* Replacement for format_args.  Much faster and %L compatible.
    * This works exactly like vsnprintf() from C.
    * You must pass in the output buffer and its size,
    *  the string to format, and the number of the FIRST variable
    *  argument parameter.  For example, for:
    *  function (a, b, c, ...)
    *  You would pass 4 (a is 1, b is 2, c is 3, et cetera).
    * There is no vformatex().
    */
    native vformat(buffer[], len, const fmt[], vararg);


    Тип функции : Native
    Используется для перевода массивов без размера в массив с размером
    В примере будет использована stock ChatColor (раскраска чата):
    stock ColorChat(const id, const Msg[], any:...) // id = ид игрока , Msg[] = наше сообщение , any:... = означает что ChatColor может содержать мултиязычность и получения разных кваров и т.д. 
    {
    new msg[192] // наш массив который будет содержать сообщение
    vformat(msg, 191, Msg, 3) // форматируем сообщение

    replace_all(msg, sizeof(msg), "!g", "^4") // Зеленый цвет
    replace_all(msg, sizeof(msg), "!t", "^3") // Цвет команды
    replace_all(msg, sizeof(msg), "!y", "^1") // Дефолтный цвет (желтый)

    new index, MsgType // index = массив который будет содержать ид игрока или индексы всех игроков, MsgType = будет содержать тип сообщения

    if(id) // Будем проверять кому отправляется сообщение
    {
      MsgType = MSG_ONE // Будем отправлять сообщение одному игрока
      index = id
    }else{ // Если отправляем всех игроков
      MsgType = MSG_ALL // Будем отправлять сообщение всем игрокам
      index = FindPlayer()
    }

    message_begin(MsgType, get_user_msgid("SayText"), _, index)
    write_byte(index)
    write_string(msg)
    message_end()
    }

    FindPlayer() // Будет получать всех игроков которые находятся на сервере
    {
    new i = -1 // Индекс последнего игрока
    while(i <= get_maxplayers())
      if(is_user_connected(i))
       return i

    return -1
    }
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    vformat Функция для преобразование массивов.
    PA3PyIIIuTEJlb

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Для чего это нужно?
    Nesquik

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Цитата: PA3PyIIIuTEJlb
    Для чего это нужно?

    Смысл данного Натива в том что он переводит безразмерные массивы в массив с размером
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  54  +

    Он не про смысл спрашивал, а о примерах использования.
    --------------------
    Valer4

    20.07.2012
    ICQ: 616504260
    Публикаций: 4
    Комментариев: 70
    Репутация: -  3  +

    Вижу здесь только перевод одномерного массива в двумерный
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    buffer[] - безразмерный массив.
    len - максимальная длина массива.
    const fmt[] - массив в который будет записано.
    vararg - максимальное количество допустимых ошибок.
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Valer4,
    http://amxxmodx.ru/lessons-on-pawn/355-rabota-s-dvumernym-i-trehmernym-massivami
    .html
    Radius

    7.05.2013
    ICQ: 357188115
    Публикаций: 1
    Комментариев: 34
    Репутация: -  2  +

    артист,
    buffer[] - безразмерный массив.
    len - максимальная длина массива.
    const fmt[] - массив в который будет записано.
    vararg - максимальное количество допустимых ошибок.


    Не надо вводить в заблуждение
    buffer[] - массив применик
    len - максимальная длина массива.
    const fmt[] - слово const уже говорит о том что сюда записать ничего нельзя
    vararg - это не кол-во допустимых ошибок, а номер передаваемого аргумента например для форматирования.

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

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Я так понял...
    Буду знать на будущее...
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    ColorChat(const id, const Msg[], any:...)
    id = 1й аргумент
    Msg = 2й

    А почему там 3 стоит?
    vformat(msg, 191, Msg, 3)
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Ааа...
    Ещё раз прочитал и понял. lol

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама