Всем здравствуйте, сегодня начал изучение PathFinder , PathFinder использую для точного пути ботов FCNPC , но вот беда пришла ни одна.
Раньше использовал MapAndreas там у меня работало все, но все равно через малый угол/малый объект проходил, мне подсказали лучше для этого дела использовать PathFinder для более точного пути.
Я сразу начал изучение, все сделал, но вот беда, он бежит через объект, не могу понять почему, через любой объект.
Хотя я еще сделал построение пикапов по пути, они правильно располагаются, а вот бот бежит через объект, почему?
Прикреплю скиншот.
Открыть/закрыть
Как видно пикапы построились отлично, а вот бот как видно на мини-карте побежал сквозь объект :\
Несколько кодов:
PHP код:
CMD:smbot(playerid, params[])
{
new
name[MAX_PLAYER_NAME],
Float:player_pos_x,
Float:player_pos_y,
Float:player_pos_z;
GetPlayerPos(playerid, x, y, z);
static result = 1;
format(name, sizeof name, "Test_%d", ++result);
new npc = FCNPC_Create(name);
FCNPC_Spawn(npc, 53, x, y, z);
FCNPC_SetAngle(npc, 180);
NPC_TEST_BOT = npc;
return 1;
}
PHP код:
CMD:pathtest(playerid, params[])
{
new
Float:bot_pos_x,
Float:bot_pos_y,
Float:bot_pos_z;
FCNPC_GetPosition(NPC_TEST_BOT, bot_pos_x, bot_pos_y, bot_pos_z);
PathFinder_FindWay(0, bot_pos_x, bot_pos_y, point[playerid][0], point[playerid][1], 0.9);
return 1;
}
PHP код:
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
point[playerid][0] = fX;
point[playerid][1] = fY;
point[playerid][2] = fZ;
format(text, sizeof(text), "%f %f %f", point[playerid][0], point[playerid][1], point[playerid][2]);
SendClientMessageToAll(-1, text);
return 1;
}
PHP код:
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++)
{
FCNPC_GoTo(NPC_TEST_BOT, nodesX[i], nodesY[i], nodesZ[i] + 1, MOVE_TYPE_SPRINT, 30, 1);
CreateDynamicObject(19130, nodesX[i], nodesY[i], nodesZ[i] + 1, 0, 0, 0);
}
Streamer_Update(0);
}
return 1;
}