SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 13/10/2018, 08:18 AM   #1
jakebat
Big Clucker
 
Join Date: Aug 2013
Posts: 96
Reputation: 2
Smile FNPC(NPC) Есть ли преграда ?

Привет)
Есть ли не костыльный способ сделать проверку, если бот движется с точки 'А' в точку 'Б' и у него есть ВПЕРЕДИ преграда (машина ,либо игрок, либо игрок в машине)?
(КолАндрес не действует на игроков)
Может есть какой-то рейкаст?))
jakebat is offline   Reply With Quote
Old 13/10/2018, 12:12 PM   #2
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 656
Reputation: 37
Default Re: FNPC(NPC) Есть ли преграда ?

Почему бы просто самому не написать проверку на пересечение с ограничивающим цилиндром / хитбоксом персонажа?
__________________
Russian forums: asking question - taking grammar notations.
Учитесь задавать вопросы по существу и изучать матчасть: иначе приобретайте лекарство "НИБОМБИН".
Mutha_X is offline   Reply With Quote
Old 13/10/2018, 01:06 PM   #3
jakebat
Big Clucker
 
Join Date: Aug 2013
Posts: 96
Reputation: 2
Default Re: FNPC(NPC) Есть ли преграда ?

Можно все это сделать через с++, а через павно нельзя ведь?
jakebat is offline   Reply With Quote
Old 13/10/2018, 01:40 PM   #4
eakwarp
High-roller
 
Join Date: Feb 2007
Posts: 1,901
Reputation: 131
Default Re: FNPC(NPC) Есть ли преграда ?

Quote:
Originally Posted by jakebat View Post
Можно все это сделать через с++, а через павно нельзя ведь?
Почему нельзя? Вы, блдж, серьезно? У меня к примеру есть вот такая, совершенно элементарная штука, останавливающая неписей перед машинами.

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;
}
__________________
More than 10 years of development, more than 40 mb(sic! 1 kk lines+) of source code, more than a two hundred units and more than 35k revisions(upd. aug 2017). Valakas Roleplay - choose your role.

Как правило, то, что делаю я, лишь через годы начинают делать другие, но потом, обязательно мне ставят в укор, "ой, да это уже у всех есть"...



[Gamemode] Valakas Trucker Roleplay (Russian).
eakwarp is offline   Reply With Quote
Old 13/10/2018, 07:58 PM   #5
ZiGGi
Banned
 
Join Date: Sep 2008
Location: Russia
Posts: 1,447
Reputation: 356
Default Re: FNPC(NPC) Есть ли преграда ?

В FCNPC 2.0 есть такая функция https://github.com/ziggi/FCNPC/blob/...tions.cpp#L439
Она находит сущность между двумя позициями. За одну позицию берётся позиция бота, за вторую - координаты перед ним. Её можно перевести на Pawn и использовать.
ZiGGi is offline   Reply With Quote
Old 14/10/2018, 04:21 AM   #6
jakebat
Big Clucker
 
Join Date: Aug 2013
Posts: 96
Reputation: 2
Default Re: FNPC(NPC) Есть ли преграда ?

А если взять проще цикл, и проверять есть ли либо игрок либо машина перед игроком? Например радиусом или дичь?
jakebat is offline   Reply With Quote
Old 14/10/2018, 04:23 AM   #7
jakebat
Big Clucker
 
Join Date: Aug 2013
Posts: 96
Reputation: 2
Default Re: FNPC(NPC) Есть ли преграда ?

Quote:
Originally Posted by eakwarp View Post
Почему нельзя? Вы, блдж, серьезно? У меня к примеру есть вот такая, совершенно элементарная штука, останавливающая неписей перед машинами.

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;
}
Это в принципе понятно, но будет ли оно работать точно? Если например у меня бот водитель и справа встать, будет ли он дальше стопаться или поедет?
jakebat is offline   Reply With Quote
Old 14/10/2018, 04:33 AM   #8
jakebat
Big Clucker
 
Join Date: Aug 2013
Posts: 96
Reputation: 2
Default Re: FNPC(NPC) Есть ли преграда ?

Quote:
Originally Posted by ZiGGi View Post
В FCNPC 2.0 есть такая функция https://github.com/ziggi/FCNPC/blob/...tions.cpp#L439
Она находит сущность между двумя позициями. За одну позицию берётся позиция бота, за вторую - координаты перед ним. Её можно перевести на Pawn и использовать.

Спасибо, переведу и буду использовать)
jakebat is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
how to get fnpc name? parames3010 Scripting Help 1 20/05/2018 06:04 PM
Crash while running FNPC Blackaslan Server Support 0 17/05/2017 03:19 AM
FNPC unload StarPeens Scripting Help 2 14/03/2015 12:13 AM
[Ajuda] Problema FNPC versгo SAMP maikons Portuguкs/Portuguese 11 16/12/2014 01:33 AM
[Off] Fnpc Mteck Portuguкs/Portuguese 0 28/05/2013 07:21 PM


All times are GMT. The time now is 08:11 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.