SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 07/06/2012, 12:19 AM   #1
Agrofyl
Little Clucker
 
Agrofyl's Avatar
 
Join Date: Aug 2011
Location: Russia
Posts: 6
Reputation: 0
Default Как определить, находится ли машина перед игроком?

Есть ID машины. Как мне проверить, находится ли она перед игроком, а не сзади его?
По координатам можно, но не соображу как. Возможно есть еще способы.
Помогите пожалуйста.
Agrofyl is offline   Reply With Quote
Old 07/06/2012, 02:47 AM   #2
ZiGGi
Gangsta
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 625
Reputation: 35
Default Re: Как определить, находится ли машина перед игроком?

Quote:
Originally Posted by Agrofyl View Post
Есть ID машины. Как мне проверить, находится ли она перед игроком, а не сзади его?
По координатам можно, но не соображу как. Возможно есть еще способы.
Помогите пожалуйста.
pawn Code:
stock GetPlayerToFaceVehicleID(playerid,Float:radius)
{
    #define range 60
    new Float:X,Float:Y,Float:Z,Float:pA;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, pA);
    for(new veh_id=0,Float:vX,Float:vY,Float:vZ,Float:ang;
        veh_id<2000;
        veh_id++
    )
    {
        if(!IsVehicleStreamedIn(veh_id,playerid)) continue;
        GetVehiclePos(veh_id, vX, vY, vZ);
        if(!IsPlayerInRangeOfPoint(playerid,radius,vX,vY,vZ)) continue;

        if( Y > vY ) ang = (-acos((X - vX) / floatsqroot((X - vX)*(X - vX) + (Y - vY)*(Y - vY))) - 90.0);
        else if( Y < vY && X < vX ) ang = (acos((X - vX) / floatsqroot((X - vX)*(X - vX) + (Y - vY)*(Y - vY))) - 450.0);
        else if( Y < vY ) ang = (acos((X - vX) / floatsqroot((X - vX)*(X - vX) + (Y - vY)*(Y - vY))) - 90.0);

        if(AngleInRangeOfAngle(-ang, pA, range)) return veh_id;
    }
    #undef range
    return -1;
}

stock AngleInRangeOfAngle(Float:a1, Float:a2, Float:range)
{
    a1 -= a2;
    if((a1 < range) && (a1 > -range)) return 1;
    return 0;
}

pawn Code:
if (GetPlayerToFaceVehicleID(playerid, 5) == vehicleid)
{
    return 1;
}
__________________
ziggi.org
github.com/ziggi
ZiGGi is offline   Reply With Quote
Old 07/06/2012, 08:52 AM   #3
Agrofyl
Little Clucker
 
Agrofyl's Avatar
 
Join Date: Aug 2011
Location: Russia
Posts: 6
Reputation: 0
Default Re: Как определить, находится ли машина перед игроком?

ZiGGi, спасибо!

Ох, да тут еще и с углом обзора. Класс!
Agrofyl 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
раскраска маркеров / маркер над игроком. sanya_gnoy Русский/Russian 13 30/05/2012 12:57 PM
Как определить место нахождение созданного объекта, который был привязан к авто ? anonim15 Русский/Russian 8 26/03/2012 11:14 AM
Как определить точку выхода из автомобиля. safari Русский/Russian 7 22/01/2012 12:08 PM
Не взрывается машина... Serafim_sd Русский/Russian 8 01/12/2011 08:46 PM
Как сделать так что бы перед ником администратора было например так *A* YellowCloud Русский/Russian 6 02/09/2010 01:02 PM


All times are GMT. The time now is 01:45 PM.


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