stock GetClosestVehicle(playerid, Float: fRadius) // by RyDeR` { new iClosestID = INVALID_VEHICLE_ID, Float: fFinalDistance, Float: fDistance, Float: fX, Float: fY, Float: fZ; GetPlayerPos(playerid, fX, fY, fZ); fFinalDistance = fRadius; for(new i; i != MAX_VEHICLES; i++) { if((fDistance = GetVehicleDistanceFromPoint(i, fX, fY, fZ)) < fFinalDistance) { fFinalDistance = fDistance; iClosestID = i; } } return iClosestID; }
CMD:lockrent(playerid, params[]) { new str[128]; new vehicle = GetClosestVehicle(playerid, 20); format(str, sizeof(str), "VehicleID: %d RentedCarId: %d ",vehicle, PlayerInfo[playerid][rentCarNo]); SendClientMessage(playerid, COLOR_DARKCORAL, str);//THIS IS FOR TESTING if(PlayerInfo[playerid][rentCarNo] != vehicle) { SendClientMessage(playerid, COLOR_DARKCORAL,"[BS] {AFAFAF}You don't have any vehicles nearby."); } else if(PlayerInfo[playerid][lockedRentCar] == 0 && PlayerInfo[playerid][rentCarNo] == vehicle) { SetVehicleParamsForPlayer(vehicle, playerid, 0, 1); SendClientMessage(playerid, COLOR_DARKCORAL,"[BS] {AFAFAF}You've locked your rental car."); } else if(PlayerInfo[playerid][lockedRentCar] == 1 && PlayerInfo[playerid][rentCarNo] == vehicle) { SetVehicleParamsForPlayer(vehicle, playerid, 0, 0); SendClientMessage(playerid, COLOR_DARKCORAL,"[BS] {AFAFAF}You've unlocked your rental car."); } return 1; }
for(new i = 1; i != MAX_VEHICLES; i++)
stock GetClosestVehicle(playerid) { new Float:fPos[3], Float:distance = 30, Float:curdistance, currentVehicle; for(new v = 0; v < MAX_VEHICLES; v++) { GetVehiclePos(v, fPos[0], fPos[1], fPos[2]); curdistance = GetPlayerDistanceFromPoint(playerid, fPos[0], fPos[1], fPos[2]); if(curdistance < distance) { currentVehicle = v; distance = curdistance; } } return currentVehicle; }
Vehicles ID start from 1.
pawn Код:
|
for(new i = 1; i < MAX_VEHICLES; i++)
This is my new for loop and it's still not working, I get 17 instead of 0 now. I have a total of 16 vehicles placed on my server
Код:
for(new i = 1; i < MAX_VEHICLES; i++) |
GetClosestVehicle(playerid)
{
new Float:vx, Float:vy, Float:vz, last_vehicle = -1, Float:last_distance = 99999;
for(new vi = 1, vj = GetVehiclePoolSize(); vi <= vj; vi++)
{
GetVehiclePos(vi, vx, vy, vz);
if(vi == INVALID_VEHICLE_ID || GetPlayerDistanceFromPoint(playerid, vx, vy, vz) > last_distance) continue;
last_vehicle = vi;
last_distance = GetPlayerDistanceFromPoint(playerid, vx, vy, vz);
}
return last_vehicle;
}