JackMineua (10 января 2025 - 18:26) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Почему-то пишет везде 0 и машину не чинит (тобишь не находит). Что не так?...
forward GetClosestVehicleFromPlayer(playerid);
public GetClosestVehicleFromPlayer(playerid)
{
new Float:dis = 6.0;
new veh = -1;
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i; i < GetVehiclePoolSize(); i++)
{
new Float:distance = GetVehicleDistanceFromPoint(i, x, y, z);
if(distance < dis)
{
dis = distance;
veh = i;
SCF(playerid, -1, "%d",i);
SCF(playerid, -1, "%f",distance);
break;
}
else continue;
}
return veh;
}
forward GetClosestVehicleFromPlayer(playerid);
public GetClosestVehicleFromPlayer(playerid)
{
new Float:dis = 6.0;
new veh = -1;
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i = 1, j = GetVehiclePoolSize(); i <= j; i++)
{
new Float:distance = GetVehicleDistanceFromPoint(i, x, y, z);
if(distance < dis)
{
dis = distance;
veh = i;
break;
}
}
return veh;
}
Ид т/с начинаются с 1, а GetVehiclePoolSize возвращает максимальный ид, который был на сервере. Вероятно, у тебя был только один т/с с ид 1, а по условию i < GetVehiclePoolSize() цикл выполнился только для i = 0, поэтому и не могло найти.
Сообщение отредактировал R.SHAD0W: 10 января 2025 - 20:52