GetClosestVehicle problem
#1

Hello guy !
What's the problem with my code ?
When I type the command near the vehicule (id 583) it says i'm not enough close to that vehicle

Here the command
pawn Код:
COMMAND:takekey(playerid, params[])
{
     
        new carid = GetClosestVehicle(carid);
        if(carid == 583)
        {
            SendClientMessage(playerid, 0x80FF00FF, "You take the key of the vehicle.");
         }
        else
        {
            SendClientMessage(playerid, 0x80FF00FF, "You are not enough close to the vehicle.");
        }
        return 1;
}
And Here the function GetClosest vehicle:

pawn Код:
forward GetClosestVehicle(carid);
public GetClosestVehicle(carid)
{
    new x,Float:dis,Float:dis2,car;
    car = 0;
    dis = 99999.99;
    for ( x = 0; x < MAX_VEHICLES; x++ )
    {
        if(x != carid)
        {
            dis2 = GetDistanceBetweenVehicles(x,carid);
            if(dis2 < dis && dis2 < 8.0)
            {
                dis = dis2;
                car = x;
            }
        }
    }
    return car;
}
forward Float:GetDistanceBetweenVehicles(vehicleid,carid);
public Float:GetDistanceBetweenVehicles(vehicleid,carid)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    GetVehiclePos(vehicleid,x1,y1,z1);
    GetVehiclePos(carid,x2,y2,z2);
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
Thank's alot and sorry for bad english
Reply
#2

Can you explain me more? Carid as param is vehicle from which you want to get closest vehicle?
Reply
#3

Yeah, i want:
If the player is close to vehicle 583 he can have a key
Reply
#4

Still you make confusion. Look:
PHP код:
new carid GetClosestVehicle(carid); 
Here you are calling GetClosestVehicle for carid which actually doesn't exist. You need to get closest vehicle from player and you are taking it from carid which, as I said, doesn't exist. Get Player's co-ordinates and then make it so it get's closest vehicle from those x,y,z.
Reply
#5

Try this:

pawn Код:
GetClosestVehicleForPlayer(playerid)
{
    new vehicleid = INVALID_VEHICLE_ID;
    new Float:distance = 99999.0;
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    for(i = 0; i < MAX_VEHICLES; i++)
    {
        if(GetVehicleDistanceFromPoint(i, X, Y, Z) < distance && distance < 8.0) //you can change this value
        {
            vehicleid = i;
            distance = GetVehicleDistanceFromPoint(i, X, Y, Z);
        }
    }
    return vehicleid;
}
pawn Код:
COMMAND:takekey(playerid, params[])
{
     
        new carid = GetClosestVehicleForPlayer(playerid);
        if(carid == 583)
        {
            SendClientMessage(playerid, 0x80FF00FF, "You take the key of the vehicle.");
        }
        else
        {
            SendClientMessage(playerid, 0x80FF00FF, "You are not enough close to the vehicle.");
        }
        return 1;
}
Reply
#6

doesn't work
But thanks
Reply
#7

Car IDs are different from model IDs. Try:

pawn Код:
COMMAND:takekey(playerid, params[])
{
     
        new carid = GetClosestVehicle(playerid);
        if(GetVehicleModel(carid) == 583)
        {
            SendClientMessage(playerid, 0x80FF00FF, "You take the key of the vehicle.");
        }
        else
        {
            SendClientMessage(playerid, 0x80FF00FF, "You are not enough close to the vehicle.");
        }
        return 1;
}
Reply
#8

Oh god, its so simply xD, i'll try thanks you
Reply
#9

But its not work
Reply
#10

Any others help please ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)