Иконка ресурса

amxx Point Map Maker 1.0.3

Нет прав для скачивания
Установка
  1. Скачайте архив с плагином
  2. Из папки source вытащите все в папку scripting
  3. В папке extra перейдите до последней папки и вытащите .txt ланг файл в свою папку data/lang
  4. Скомпилируйте плагин
Настройки
Добавляет меню данной системы в amxmodmenu
#define AddMenuToAmxModMenu
  • PluginPrefix - Отвечает за префикс в чате и консоли сервера
  • MainFolder - Название папки с нашими файлами в папке amxmodx/configs (может быть пустым)
  • ObjectNames - Название объектов. Не удаляйте "general" и оставьте его самым первым.
  • IgnoreEntitiesList - Список игнорируемых энтити при проверке - занята ли точка (При включенном EnableIgnoreList)
API
C-like:
const PMM_ALL_POINTS = -1;

/**
* Получает индекс точки или массив с индексами точек в ваш динамичный массив Array
*
* @param szObjectName                 Название объекта
*                                     Если указано "*" = ищет точки из всех объектов
*                                     Если название невалидно (не может найти) = автоматически присваивается "general" (первый из ObjectNames)
*                                     Если название пустое = ошибка
* @param iPointsCount                 Количество точек
*                                     Если PMM_ALL_POINTS (-1) = получить ВСЕ точки из объекта
* @param bCheckPointIsFree            Проверяет, свободна ли точка
* @param szCallBack                   CallBack для bCheckPointIsFree. Если этот аргумент пустой,
*                                     то вы можете указать название вашей функции, где вы будете проверять "занята ли точка"
*
* @note Используйте "" чтоб использовать проверку из главного плагина.
* @note Callback должно содержать следующие аргументы "public Point_CallBack(const Float:vecOrigin[3])"
* @note 'return true' чтоб остановить CallBack и 'return false' чтоб продолжить CallBack.
* @note Callback остановится сам, если ни нашел ни одной свободной точки и вернет 'return -1'.
*
* @return                             Возвращает индекс точки (integer), если 'iPointsCount = 1', иначе возвращает Array handle.
*                                     Если любая ошибка = возвращает 'return -1'
*/
native any: pmm_get_points( const szObjectName[ ] = "general", const iPointsCount = 1, const bool: bCheckPointIsFree = false, const szCallBack[ ] = "" );

/**
* Получает origin и angles по вашему индексу точки
*
* @param iPointIndex                   Индекс точки
* @param vecOrigin                     Массив для хранения origin
* @param vecAngles                     Массив для хранения angles
*
* @return                              Возвращает true если получило данные точки, иначе false
*/
native bool: pmm_get_point_data( const iPointIndex, const Float: vecOrigin[ 3 ], const Float: vecAngles[ 3 ] = { 0.0, 0.0, 0.0 } );

/**
* Очищает в указанный объект в главном массиве
*
* @param szObjectName                  Название объекта
*                                      Если указано "*" = ищет точки из всех объектов
*                                      Если название невалидно (не может найти) = автоматически присваивается "general" (первый из ObjectNames)
*                                      Если название пустое = ошибка
*
* @return                              Возвращает true если указанный объект был очищен в массиве, иначе false
*/
native bool: pmm_clear_points( const szObjectName[ ] = "general" );
C-like:
new iPointIndex = pmm_get_points( "general", 1 );
if ( iPointIndex == -1 )
    return;

new Float: vecOrigin[ 3 ];
pmm_get_point_data( iPointIndex, vecOrigin );
C-like:
new iPointIndex = pmm_get_points( "general", 1, true );
if ( iPointIndex == -1 )
    return;

new Float: vecOrigin[ 3 ];
pmm_get_point_data( iPointIndex, vecOrigin );
Код:
{
    // some code

    new iPointIndex = pmm_get_points( "general", 1, true, "Point_CallBack" );
    if ( iPointIndex == -1 )
        return;

    new Float: vecOrigin[ 3 ];
    pmm_get_point_data( iPointIndex, vecOrigin );

    // another code
}

public Point_CallBack( const Float: vecOrigin[ 3 ] )
{
    if ( vecOrigin[ 2 ] >= 128.0 )
    {
        // Точка подходит
        return true;
    }

    // Точка не подходит - берем следующую
    return false;
}
C-like:
new Array: arPoints = pmm_get_points( "market_place", 5 );
if ( arPoints != Invalid_Array )
{
    /**
     * В arPoints мы получили 5 случайных точек из объекта "market_place"
     * Далее мы делаем уже свой нужный код
     */

    // Не забываем уничтожить свой массив с точками
    ArrayDestroy( arPoints );
}
C-like:
new Array: arPoints = pmm_get_points( "*", PMM_ALL_POINTS );
if ( arPoints != Invalid_Array )
{
    /**
     * В arPoints мы получили абсолютно все точки из всех объектов
     * Далее мы делаем уже свой нужный код
     */

    // Не забываем уничтожить свой массив с точками
    ArrayDestroy( arPoints );
}
C-like:
new Array: arPoints = pmm_get_points( "presents", PMM_ALL_POINTS );
if ( arPoints != Invalid_Array )
{
    /**
     * В arPoints мы получили все точки из объекта "presents"
     * Далее мы делаем уже свой нужный код
     */

    // Не забываем уничтожить свой массив с точками
    ArrayDestroy( arPoints );
}

// Очищаем главный массив от точек объекта "presents"
pmm_clear_points( "presents" );
Сверху Снизу