FNPC(NPC) Есть ли преграда ? -
jakebat - 13.10.2018
Привет)
Есть ли не костыльный способ сделать проверку, если бот движется с точки 'А' в точку 'Б' и у него есть ВПЕРЕДИ преграда (машина ,либо игрок, либо игрок в машине)?
(КолАндрес не действует на игроков)
Может есть какой-то рейкаст?))
Re: FNPC(NPC) Есть ли преграда ? -
Mutha_X - 13.10.2018
Почему бы просто самому не написать проверку на пересечение с ограничивающим цилиндром / хитбоксом персонажа?
Re: FNPC(NPC) Есть ли преграда ? -
jakebat - 13.10.2018
Можно все это сделать через с++, а через павно нельзя ведь?
Re: FNPC(NPC) Есть ли преграда ? -
eakwarp - 13.10.2018
Quote:
Originally Posted by jakebat
Можно все это сделать через с++, а через павно нельзя ведь?
|
Почему нельзя? Вы, блдж, серьезно? У меня к примеру есть вот такая, совершенно элементарная штука, останавливающая неписей перед машинами.
forward check_collision();
public check_collision()
{
new Float:mx, Float:my, Float:mz;
new Float:dist;
new pid;
foreach(FCNPC,i)
{
if(!FCNPC_IsStreamedForAnyone(i))
continue;
dist = 3.5;
FCNPC_GetPosition(i, mx, my, mz);
pid = FCNPC_GetClosestPlayer(mx, my, mz, dist);
if (pid == -1)
{
continue;
}
if(GetPlayerState(pid)==PLAYER_STATE_DRIVER)
{
if(WNPCStopped[i]==0)
{
FCNPC_Stop(i);
WNPCStopped[i]=1;
SetTimerEx("WNPCWalk", 10000, 0, "d", i);
}
}
}
return 1;
}
Re: FNPC(NPC) Есть ли преграда ? -
ZiGGi - 13.10.2018
В FCNPC 2.0 есть такая функция
https://github.com/ziggi/FCNPC/blob/...tions.cpp#L439
Она находит сущность между двумя позициями. За одну позицию берётся позиция бота, за вторую - координаты перед ним. Её можно перевести на Pawn и использовать.
Re: FNPC(NPC) Есть ли преграда ? -
jakebat - 14.10.2018
А если взять проще цикл, и проверять есть ли либо игрок либо машина перед игроком? Например радиусом или дичь?
Re: FNPC(NPC) Есть ли преграда ? -
jakebat - 14.10.2018
Quote:
Originally Posted by eakwarp
Почему нельзя? Вы, блдж, серьезно? У меня к примеру есть вот такая, совершенно элементарная штука, останавливающая неписей перед машинами.
forward check_collision();
public check_collision()
{
new Float:mx, Float:my, Float:mz;
new Float:dist;
new pid;
foreach(FCNPC,i)
{
if(!FCNPC_IsStreamedForAnyone(i))
continue;
dist = 3.5;
FCNPC_GetPosition(i, mx, my, mz);
pid = FCNPC_GetClosestPlayer(mx, my, mz, dist);
if (pid == -1)
{
continue;
}
if(GetPlayerState(pid)==PLAYER_STATE_DRIVER)
{
if(WNPCStopped[i]==0)
{
FCNPC_Stop(i);
WNPCStopped[i]=1;
SetTimerEx("WNPCWalk", 10000, 0, "d", i);
}
}
}
return 1;
}
|
Это в принципе понятно, но будет ли оно работать точно? Если например у меня бот водитель и справа встать, будет ли он дальше стопаться или поедет?
Re: FNPC(NPC) Есть ли преграда ? -
jakebat - 14.10.2018
Quote:
Originally Posted by ZiGGi
|
Спасибо, переведу и буду использовать)