PathFinder 1.0 RC 2 by Pamdex
Описание:
Данный плагин позволяет рассчитать маршрут из точки A в точку B на карте SanAndreas, используя встроенный MapAndreas и алгоритм Джастина Хейеса Джонса.
Маршрут можно рассчитать везде, кроме воды.
Плагин для расчётов использует отдельный поток.
Автовызываемые функции OnPathCalculated
PHP код:
OnPathCalculated(routeid, success, Float:nodesX[], Float:nodesY[], Float:nodesZ[], nodesSize)
Параметры:
- routeid <- ID маршрута
- success <- Возвращает 1 или 0, зависимо от удачности составления маршрута
- nodesX[], nodesY[], nodesZ[] <- Позиции маршрута
- nodesSize <- Возвращает длину маршрута
Пример использования:
PHP код:
new text[128];
public OnPathCalculated(routeid, success, Float:nodesX[], Float:nodesY[], Float:nodesZ[], nodesSize)
{
format(text, sizeof(text), "PATH: route: %d success: %d nodesSize: %d", routeid, success, nodesSize);
SendClientMessageToAll(-1, text);
if(success)
{
for(new i; i < nodesSize; i++)
{
CreateDynamicObject(19130, nodesX[i], nodesY[i], nodesZ[i] + 1, 0, 0, 0);
}
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(routeid, Float:startX, Float:startY, Float:endX, Float:endY, Float:zDifference = 0.9, stepSize = 1, stepLimit = -1, maxSteps = 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:posX, Float:posY);
Параметры:
Функция возвращает ID ноды за её координатами.
PathFinder_SetTickRate
PHP код:
PathFinder_SetTickRate(rate = 5);
Параметры:
Функция устанавливает скорость тактов для потоков связи.
Использование в 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!
Видео
- Перенесите плагины PathFinder и MapAndreas в папку с плагинами на вашем сервере и подключите их в server.cfg (MapAndreas должен быть последним).
- Подключите инклюды MapAndreas и PathFinder и перекомпилируйте мод.
- Файлы SAfull.hmap и SAmin.hmap из архива MapAndreas перенесите в scripfiles.
Автор: Pamdex
Перевёл: UnO
Источник: forum.sa-mp.com