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

    Всего на сайте: 10
    Гостей: 7
    Пользователи: foxmits
    Роботы: crawl Bot, crawl Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Nesquik Дата: 14-08-2013, 12:13 Просмотров: 3612

    Изучаем CellArray вместе

    Если его (инклюда cellarray.inc) нету в папке addons/amxmodx/scripting/include
    Вы не можете скачивать файлы с нашего сервера

    Скачали :? Отлично
    Теперь перейдём к изучению


    /**
    * Создаёт Array
    * используется для Array{Get,Set,Push}
    *
    * @параметр cellsize        Размер Array 32 = строка , 1 = число
    * @параметр reserved        Сколько пустых записей создаются сразу же после создания массива.
    * @return             Handle to the array.
    */
    native Array:ArrayCreate(cellsize=1, reserved=32);


    Натив создает Array
    Пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(32, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    }



    /**
    * Возвращает сколько всего было зарегистрировано Array
    *
    * @параметр which        Array для проверки
    * @return                Число
    */
    native ArraySize(Array:which);


    Возвращает размер Array
    Пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(32, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    new size = ArraySize(MyArray)
    server_print("Array = %i", size)
    }



    /**
    * Возвращает число полученное из Array.  
    * Используется если cellsize = 1!
    *
    * @параметр which        Array для получения
    * @параметр item            Номер Array
    * @return                Число
    */
    native any:ArrayGetCell(Array:which, item);


    Получает число из Array
    пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(1, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    new size = ArraySize(MyArray)
    server_print("Array = %i", size)
    for(new i = 0; i < size; i++)
    {
      new MyArrayCell = ArrayGetCell(MyArray, i)
      server_print("Array = %i", MyArrayCell) // Выводиться ничего небудет так как мы еще не записывали ничего в MyArray
    }
    }



    /**
    * Возвращает строку полученную из Array.
    *
    * @параметр which            Array для получения строки
    * @параметр item            Номер Array
    * @параметр output        Массив для записи строки
    * @параметр size            Размер массива
    */
    native ArrayGetString(Array:which, item, output[], size);


    Возвращает строку полученную из Array
    Пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(32, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    new size = ArraySize(MyArray)
    server_print("Array = %i", size)
    for(new i = 0; i < size; i++)
    {
      new MyArrayString[32]
      ArrayGetCell(MyArray, i, MyArrayString, 31)
      server_print("Array = %s", MyArrayString) // Выводиться ничего небудет так как мы еще не записывали ничего в MyArray
    }
    }



    /**
    * Устанавливает число Array использовать только если cellsize = 1!
    *
    * @параметр which            Array для установки числа
    * @параметр input            Число для установки
    */
    native ArrayPushCell(Array:which, any:input);


    Устанавливает число для Array
    Пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc
    #include <amxmisc>

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(1, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    register_clcmd("set_array_cell", "set_cell")
    }

    public set_cell(id)
    {
    new Cell[15] // Массив куда будет записана строка с числом
    read_argv(1, Cell, 31) // Читаем строку

    if(strlen(Cell))
    {
      new MyCell = str_to_num(Cell) // Преобразуем строку в число
      ArrayPushCell(MyArray, MyCell) // Устанавливаем MyArray число MyCell
      server_print("MyArray = %i", MyCell) // Выводим в консоле сервера число которое было установлено
    }
    }



    /**
    * Устанавливает Array строку.  
    * @параметр which            Array для записи строки
    * @параметр input            Строка для записи
    */
    native ArrayPushString(Array:which, const input[]);


    Устанавливает строку в Array
    Пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc
    #include <amxmisc>

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(32, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    register_clcmd("set_array_string", "set_string")
    }

    public set_string(id)
    {
    new Cell[15] // Массив куда будет записана строка с числом
    read_argv(1, Cell, 31) // Читаем строку

    if(strlen(Cell))
    {
      ArrayPushString(MyArray, MyCell) // Устанавливаем MyArray строку Cell
      server_print("MyArray = %s", Cell) // Выводим в консоле сервера число которое было установлено
    }
    }



    /**
    * Уничтожает созданные Array
    *
    * @параметр which            Array для уничтожения
    */
    native ArrayDestroy(&Array:which);


    Уничтожает Array
    Пример :

    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc
    #include <amxmisc>

    new Array:MyArray // Наш Array

    public plugin_init()
    {
    MyArray = ArrayCreate(32, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
    register_clcmd("set_array_string", "set_string")
    }

    public set_string(id)
    {
    new Cell[15] // Массив куда будет записана строка с числом
    read_argv(1, Cell, 31) // Читаем строку

    if(strlen(Cell))
    {
      ArrayPushString(MyArray, MyCell) // Устанавливаем MyArray строку Cell
      server_print("MyArray = %s", Cell) // Выводим в консоле сервера строку которая была установлена
    }
    }

    public destroy()
    {
    ArrayDestroy(MyArray)
    }


    Ну вот немного разобрались
    Здесь описаны не все нативы которые есть в cellarray.inc
    Но можно сказать что они основные которые пригодятся вам
    Обычно инклюд используется для создания магазинов и т.д.
    примером для нас служит Zombie Mod, в моде все модели , звуки , спрайты записаны в Array
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Изучаем CellArray вместе
    VForVendetta

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

    Array в переводе массив, и просто если бы ты в статье вместо Array писал "массив", то получилось бы как-то более грамотнее что-ли, вот, например, строка
    "Уничтожает массив" лучше читается нежели "Уничтожает Array"
    Это не придирка, просто маленький совет, как, по-моему, было бы лучше.

    И кое-где некорректный перевод, чуть позже поправлю кое-какие строки и скину.
    gavrilyuc

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

    * @параметр cellsize Размер Array 32 = строка ,
    из за этого дуплил 2 часа
    "и почему же не выводило из файла всю строку"
    а вот у чём была проблема проблема была в том что кто то написал что 32 это строка...
    так как заверяется в коментариях... не мог бы просто :
    размер строки.
    ведь размер = 1, это же всё равно строка ( char - 48 )
    да я знаю эта статья для людей которые "Тук-тук"
    но всё же... я лично потратил 2 часа на левую ошибку...

    --------------------
    артист

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

    Всё правильно заметил.

    new Array:MyArray // Наш Array

    Хранит скорее индекс массива, а не содержимое...
    Diablo

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

    ArrayPushString(MyArray, MyCell) // Устанавливаем MyArray строку Cell

    =>
    ArrayPushString(MyArray, Cell) // Устанавливаем MyArray строку Cell
    Diablo

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

    Возвращает строку полученную из Array
    Пример :
    #include <amxmodx> // Инклюд cellarray.inc вписан в amxmodx.inc 

    new Array:MyArray // Наш Array

    public plugin_init()
    {
        MyArray = ArrayCreate(32, 1) // Создали наш Array, 32 = значит Array будет строкой , если хотим чтобы было число вместо 32 ставим 1
         new size = ArraySize(MyArray)
         server_print("Array = %i", size)
         for(new i = 0; i < size; i++)
         {
             new MyArrayString[32]
             ArrayGetCell(MyArray, i, MyArrayString, 31)
             server_print("Array = %s", MyArrayString) // Выводиться ничего небудет так как мы еще не записывали ничего в MyArray
         }
    }

    А возвращаете не строку, а число.

    ArrayGetCell(MyArray, i, MyArrayString, 31)

    =>
    ArrayGetString(MyArray, i, MyArrayString, 31)

    И используйте в статьях charsmax наконец. Вроде статья, а новичкам пример подаете "хороший" - использовать магические числа.
    Admin

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

    Diablo, Возьмешься переписать все статьи, а заодно и написать новую про charsmax?
    --------------------
    Diablo

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

    Admin, я от тебя другого ответа и не ожидал.
    Admin

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

    Diablo, я от тебя тоже :)
    --------------------
    gavrilyuc

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

    и чё, статья в пару строк?
    #define charsmax(%1)  (sizeof(%1) - 1)
    --------------------
    Admin

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

    А где статья?
    --------------------

    Информация

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

Реклама