COMMAND:loadcrates(playerid, params[])
{
new hCar = GetPlayerVehicleID(playerid);
if(!comps[hCar][wguns]) return SendClientError(playerid, "You don't have any crates on your forklift.");
new Pcar = GetPlayerNearestVehicle(playerid);
if(GetDistanceFromPlayerToVehicle(playerid, Pcar) > 8.0)
comps[Pcar][wguns] += 10;
comps[hCar][wguns] += -10;
DestroyObject(GetPVarInt(playerid, "harrycrate"));
Action(playerid, "places the crate in the back of the van.");
format(iStr, sizeof(iStr), "has loaded a crate in a back of a van.", PlayerName(playerid));
iEcho(iStr);
return 1;
}
"hCar"
comps[Pcar][wguns] += 10;
comps[hCar][wguns] += -10;
new Pcar = GetPlayerNearestVehicle(playerid);
if(GetDistanceFromPlayerToVehicle(playerid, Pcar) > 8.0)
stock GetPlayerNearestVehicle(playerid)
{
new closest = -1;
if(IsPlayerInAnyVehicle(playerid)) return GetPlayerVehicleID(playerid);
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(GetDistanceFromPlayerToVehicle(playerid, i) < GetDistanceFromPlayerToVehicle(playerid, closest) && closest != -1 && IsVehicleConnected(i) && GetVehicleVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
{
closest = i;
}
if(closest == -1 && IsVehicleConnected(i)) closest = i;
}
return closest;
}
stock GetPlayerNearestVehicle(playerid)
{
new closest = -1, pvehid = INVALID_VEHICLE_ID;
if(IsPlayerInAnyVehicle(playerid))
pvehid = GetPlayerVehicleID(playerid);
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(GetDistanceFromPlayerToVehicle(playerid, i) < GetDistanceFromPlayerToVehicle(playerid, closest) && closest != -1 && IsVehicleConnected(i) && GetVehicleVirtualWorld(i) == GetPlayerVirtualWorld(playerid) && i != pvehid)
{
closest = i;
}
if(closest == -1 && IsVehicleConnected(i)) closest = i;
}
return closest;
}
stock GetVehicleNearestVehicle(playerid)
{
new closest = -1;
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(GetDistanceFromVehicleToVehicle(playerid, i) < GetDistanceFromVehicleToVehicle(playerid, closest) && closest != -1 && IsVehicleConnected(i) && GetVehicleVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
{
closest = i;
}
if(closest == -1 && IsVehicleConnected(i)) closest = i;
}
return closest;
}
stock GetDistanceFromVehicleToVehicle(playerid, closestcarid)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
new Float:tmpdis;
GetPlayerPos(playerid,x1,y1,z1);
GetVehiclePos(closestcarid,x2,y2,z2);
tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
return floatround(tmpdis);
}
It wont mess the other script usage of "GetPlayerNearestVehicle" ?
For example : /friskcar - Which need to check the car ID. I hope you understand my point. I was thinking of creating new stock "GetVehicleNearestVehicle". pawn Код:
// updating Wont work it seems like the "wguns" wont go to the nearst vehicle. |
stock GetVehicleNearestVehicle(playerid)
{
new Float:closestdist = 99999.0;
new Float:clostestvid;
new Float:checkdist;
new Float:x,Float:y,Float:z;
for(new i = 0; i < MAX_VEHICLES; i++)
{
GetVehiclePos(i, x, y, z);
checkdist = GetPlayerDistanceFromPoint(playerid, x, y, z);
if(checkdist < closestdist && IsVehicleConnected(i) && GetVehicleVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
{
clostestvid = i;
checkdist = checkdist;
}
}
return clostestvid;
}
COMMAND:loadcrates(playerid, params[])
{
new hCar = GetPlayerVehicleID(playerid);
if(!comps[hCar][wguns]) return SendClientError(playerid, "You don't have any crates on your forklift.");
new Pcar = GetPlayerNearestVehicle(playerid);
[B]if(GetDistanceFromPlayerToVehicle(playerid, Pcar) > 8.0)[/B]
checkdist = checkdist;
return clostestvid;