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

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

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 31-08-2011, 13:48 Просмотров: 8860

    add Функция добавляет одну строку к другой

    Иногда требуется сделать одну длинную строку, например sql запрос на создание таблицы в базе данных,как правило эти запросы очень длинные, и не получится записать его в одну строку или бывает что нужно сделать одно сообщение, сформированное из нескольких строк, в зависимости от событий.
    Так же если делать очень длинные строки это просто не красиво смотрится в коде и не удобно работать с таким исходником. Но нам повезло, что есть функция add

    Инфо из string.inc:
    /* Adds one string to another. Last parameter different from 0, specifies
    * how many chars we want to add. Function returns number of all merged chars. */
    native add(dest[],len,const src[],max=0);


    Синтаксис:
    add ( dest[], len, const src[], [ max ] )

    • dest[] - К какому массиву добавляем строку.
    • len - Размер массива
    • const src[] - Добавляемое сообщение ( без возможности подстановки (константа))
    • [ max ] - задается длинна текста

      new strtemp[100] = First Name
      new strtemp2[100] = Last Name
      add( strtemp, sizeof strtemp, strtemp2, sizeof strtemp2 )




    Пример:

    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "Add sting"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init ( ){
        
        register_plugin ( PLUGIN, VERSION, AUTHOR )
        
        register_clcmd("say /add","format_add")
        
    }
    public format_add(id){
        
        new message[1024]
        new Name[32]

        get_user_name(id,Name,31)
        format(message,charsmax(message),"Hello %s!!^n",Name)
        
        if(is_user_alive(id)){
            add(message,charsmax(message),"You is alive")
        }else{
            add(message,charsmax(message),"You is die")    
        }
        set_hudmessage(0, 255, 0, -1.0, -1.0)
        show_hudmessage(id,message)
        
        /*
        //Без функции add тоже самое выглядело бы так:
        if(is_user_alive(id)){
            set_hudmessage(0, 255, 0, -1.0, -1.0)
            show_hudmessage(id, "Hello %s!!^n you is alive",Name)

        }else{
            set_hudmessage(0, 255, 0, -1.0, -1.0)
            show_hudmessage(id, "Hello %s!!^n you is die",Name)
            
        }
        */

    }


    Описание:
    Казалось бы, без этой функции на 1 строку меньше,но теперь представьте, если у вас не из двух строк формируется строка, а из хотя бы 3.
    Попробуйте дописать в каждый вариант условие бот это или нет и изменить соответственно сообщение (сроку) вы сразу заметите разницу в количестве строк и удобстве составления.

    Но для динамических сообщений я бы рекомендовал пользоваться функцией format, так как внутри нее можно работать с переменными.
    А данную функцию использовал для работы с файлами, базы данных и так даее, тоесть с технической стороной плагина, а не для вывода сообщений.

    Ах да, как это все работает:
    С функциями получения имени игрока вы уже должны быть знакомы, с функцией формат тоже..
    После того как мы получили имя игрока и сформировали "шапку" сообщения, ту часть которая показывается в любом случае, задаем условие живой ли игрок и в двух разных вариантах добавляем с помощью ф-ции add соответствующую строку к нашему исходному сообщению.
    Ну а затем естественно выводим это дело на экран игроку.
    Команда для выполнения нашей функции,если кто не читал первые статьи, say /add
    Новость отредактировал Admin - 10-08-2013, 20:33
    Причина: Дополнение от igas ([ max ])
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    add Функция добавляет одну строку к другой
    igas

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

    [ max ] - Не знаю что это такое, ни когда не использовал, просто пропускал.
    задается длинна текста

    new strtemp[100] = First Name
    new strtemp2[100] = Last Name
    add( strtemp, sizeof strtemp, strtemp2, sizeof strtemp2 )
    Admin

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

    Спасибо, дополнил.
    --------------------

    Информация

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

Реклама