Закрыть Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Тема: PathFinder: Маршрут из точки A в точку B

Показано с 1 по 6 из 6

Комбинированный просмотр

  1. #1
    Пользователь

    Аватар для UnO33

    Статус: Онлайн
    Регистрация:04.02.2013
    Адрес:Los Santos
    Сообщений:677
    Репутация:96 [+/-] 

    PathFinder: Маршрут из точки A в точку B

    PathFinder 1.0 RC 2 by Pamdex

    Описание:
    Данный плагин позволяет рассчитать маршрут из точки A в точку B на карте SanAndreas, используя встроенный MapAndreas и алгоритм Джастина Хейеса Джонса.
    Маршрут можно рассчитать везде, кроме воды.
    Плагин для расчётов использует отдельный поток.





    Автовызываемые функции
    OnPathCalculated
    PHP код:
    OnPathCalculated(routeidsuccessFloat:nodesX[], Float:nodesY[], Float:nodesZ[], nodesSize
    Параметры:
    • routeid <- ID маршрута
    • success <- Возвращает 1 или 0, зависимо от удачности составления маршрута
    • nodesX[], nodesY[], nodesZ[] <- Позиции маршрута
    • nodesSize <- Возвращает длину маршрута



    Пример использования:
    PHP код:
    new text[128];
    public 
    OnPathCalculated(routeidsuccessFloat:nodesX[], Float:nodesY[], Float:nodesZ[], nodesSize)
    {
        
    format(textsizeof(text), "PATH: route: %d success: %d nodesSize: %d"routeidsuccessnodesSize);
        
    SendClientMessageToAll(-1text);
        if(
    success)
        {
            for(new 
    inodesSizei++)
                {
                
    CreateDynamicObject(19130nodesX[i], nodesY[i], nodesZ[i] + 1000);
                }
                
    Streamer_Update(0);
        }
        return 
    1;

    Внимание! При неудачном построении маршрута nodesX[], nodesY[], nodesZ[] создаются с одним индексом со значением = -1 (nodesSize = 1).




    Функции
    PathFinder_Init
    PHP код:
    PathFinder_Init(mapAndreasAddress); 
    Параметры:
    • mapAndreasAddress <- адрес класса CMapAndreas в памяти (смотрите ниже: "Использование в PAWN")




    PathFinder_FindWay
    PHP код:
    PathFinder_FindWay(routeidFloat:startXFloat:startYFloat:endXFloat:endYFloat:zDifference 0.9stepSize 1stepLimit = -1maxSteps 2000); 
    Параметры:

    • routeid <- ID маршрута
    • startX, startY <- координаты X и Y точки A
    • endX, endY <- координаты X и Y точки B
    • zDifference <- максимальная разница координаты Z между нодами(узлами) маршрута.
    • stepSize <- размер шага
    • stepLimit <- лимит шагов. При stepLimit = -1 плагин работает в обычном режиме (без лимита). Если расчёт достигнет этого лимита, построение маршрута прекратится и плагин вернёт маршрут (max return path size = limit + 1)
    • maxSteps <- максимальное количество шагов, если при расчёте эта цифра будет превышена, построение закончится неудачей

    Функция начинает построение маршрута из точки A в точку B.



    PathFinder_GetNodePos
    PHP код:
    PathFinder_GetNodePos(nodeid, &Float:x, &Float:y, &Float:z); 
    Параметры:

    • nodeid <- ID ноды (узла)
    • x, y, z <- координаты X, Y и Z

    Функция возвращает координаты определённой ноды.
    Важно! Z-координата определяется с точностью до сантиметра, при использовании координат для телепортов, ботов и т.д. желательно прибавлять 1.0 к Z.



    PathFinder_GetNearNodeId
    PHP код:
    PathFinder_GetNearNodeId(Float:posXFloat:posY); 
    Параметры:

    • x, y <- координаты X и Y

    Функция возвращает ID ноды за её координатами.



    PathFinder_SetTickRate
    PHP код:
    PathFinder_SetTickRate(rate 5); 
    Параметры:

    • rate

    Функция устанавливает скорость тактов для потоков связи.




    Использование в PAWN
    Новая версия PathFinder работает вместе с MapAndreas 1.2.1, поэтому код инициализации должен выглядеть так:
    PHP код:
    #include <MapAndreas>
    #include <PathFinder>
    public OnFilterScriptInit()
    {
        
    MapAndreas_Init(MAP_ANDREAS_MODE_FULL);
        
    PathFinder_Init(MapAndreas_GetAddress());
        return 
    1;

    Внимание! MapAndreas_Init может принять один из этих аргументов: MAP_ANDREAS_MODE_FULL и MAP_ANDREAS_MODE_NOBUFFER!




    Видео

    Открыть спойлер

    [Скрыть]




    Загрузка

    Исходный код (VT)
    Инклюд и плагин (VT)
    MapAndreas (VT)




    Установка

    1. Перенесите плагины PathFinder и MapAndreas в папку с плагинами на вашем сервере и подключите их в server.cfg (MapAndreas должен быть последним).
    2. Подключите инклюды MapAndreas и PathFinder и перекомпилируйте мод.
    3. Файлы SAfull.hmap и SAmin.hmap из архива MapAndreas перенесите в scripfiles.



    Автор: Pamdex
    Перевёл: UnO
    Источник: forum.sa-mp.com
    Последний раз редактировалось UnO33; 05.12.2015 в 23:57.
  2. 1 пользователь сказал cпасибо UnO33 за это полезное сообщение:

    muv4ansky (12.01.2018)

  3. #2
    Пользователь

    Аватар для Zaur_Lumanov

    Статус: Оффлайн
    Регистрация:11.07.2014
    Адрес:Российская Федерация - Москва
    Сообщений:311
    Репутация:227 [+/-] 
    Ну ничего себе... И где можно его применить?
    Связь со мной:
    VK: @zaur_lumanov
    Telegram @zaur_lumanov


    http://u.to/a-poDQ
  4. #3
    Пользователь

    Аватар для UnO33

    Статус: Онлайн
    Регистрация:04.02.2013
    Адрес:Los Santos
    Сообщений:677
    Репутация:96 [+/-] 
    Ну ничего себе... И где можно его применить?
    В системе npc-зомби например.
  5. #4
    мастер спорта

    Аватар для muv4ansky

    Статус: Оффлайн
    Регистрация:30.10.2016
    Адрес:pawno-info.ru
    Сообщений:663
    Репутация:114 [+/-] 
    хороший плагин , и где-то видел что кто-то его использует , автор спасибо!

    VK: vk.com/muvik1337
    Услуги: Кликабельно


  6. #5
    Пользователь

    Аватар для Richie56

    Статус: Оффлайн
    Регистрация:01.05.2014
    Сообщений:507
    Репутация:164 [+/-] 
    ну я так понимаю что кастомные объекты (маппинг) не считает ?
  7. #6
    Пользователь

    Аватар для UnO33

    Статус: Онлайн
    Регистрация:04.02.2013
    Адрес:Los Santos
    Сообщений:677
    Репутация:96 [+/-] 
    ну я так понимаю что кастомные объекты (маппинг) не считает ?
    Всё верно, он берет координаты из mapandreas, который вместе с ним и подключается.

Ваши права

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