SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 13/10/2018, 09: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, 01:12 PM   #2
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 646
Reputation: 31
Default Re: FNPC(NPC) Есть ли преграда ?

Почему бы просто самому не написать проверку на пересечение с ограничивающим цилиндром / хитбоксом персонажа?
__________________
Russian forums: asking question - taking grammar notations.
Учитесь задавать вопросы по существу и изучать матчасть: иначе приобретайте лекарство "НИБОМБИН".
Mutha_X is online now   Reply With Quote
Old 13/10/2018, 02: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, 02:40 PM   #4
eakwarp
High-roller
 
Join Date: Feb 2007
Posts: 1,896
Reputation: 128
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(*****,i)
{
if(!*****_IsStreamedForAnyone(i))
continue;

dist = 3.5;
*****_GetPosition(i, mx, my, mz);
pid = *****_GetClosestPlayer(mx, my, mz, dist);
if (pid == -1)
{
continue;
}
if(GetPlayerState(pid)==PLAYER_STATE_DRIVER)
{
if(WNPCStopped[i]==0)
{
*****_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, 08:58 PM   #5
ZiGGi
Banned
 
Join Date: Sep 2008
Location: Russia
Posts: 1,447
Reputation: 356
Default Re: FNPC(NPC) Есть ли преграда ?

В ***** 2.0 есть такая функция https://github.com/*****/*****/blob/...tions.cpp#L439
Она находит сущность между двумя позициями. За одну позицию берётся позиция бота, за вторую - координаты перед ним. Её можно перевести на Pawn и использовать.
ZiGGi is offline   Reply With Quote
Old 14/10/2018, 05: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, 05: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(*****,i)
{
if(!*****_IsStreamedForAnyone(i))
continue;

dist = 3.5;
*****_GetPosition(i, mx, my, mz);
pid = *****_GetClosestPlayer(mx, my, mz, dist);
if (pid == -1)
{
continue;
}
if(GetPlayerState(pid)==PLAYER_STATE_DRIVER)
{
if(WNPCStopped[i]==0)
{
*****_Stop(i);
WNPCStopped[i]=1;
SetTimerEx("WNPCWalk", 10000, 0, "d", i);
}
}

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

Quote:
Originally Posted by ***** View Post
В ***** 2.0 есть такая функция https://github.com/*****/*****/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 07:04 PM
Crash while running FNPC Blackaslan Server Support 0 17/05/2017 04:19 AM
FNPC unload StarPeens Scripting Help 2 14/03/2015 01:13 AM
[Ajuda] Problema FNPC versгo SAMP maikons Portuguкs/Portuguese 11 16/12/2014 02:33 AM
[Off] Fnpc Mteck Portuguкs/Portuguese 0 28/05/2013 08:21 PM


All times are GMT. The time now is 06:24 PM.


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