Алгоритм выведения ближайшего АЗС к игроку. - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: Non-English (
https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (
https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (
https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Алгоритм выведения ближайшего АЗС к игроку. (
/showthread.php?tid=623717)
Алгоритм выведения ближайшего АЗС к игроку. -
Johhnyllll - 04.12.2016
Делаю /gps, но столкнулся с такой проблемой, я не знаю как создать алгоритм таким способом что-бы обноружился ближайший Авто-Заправочная Станция к игроку.
Вот что получилось:
PHP Code:
for(new x; x < sizeof(PS); x++) {
new Float: distance = GetPlayerDistanceFromPoint(playerid, PS[x][ps_pos_x],PS[x][ps_pos_y],PS[x][ps_pos_z]);
printf("%0.2f", distance);
if(distance <= 0.0) return printf("asdsa");
}
PlayerPlaySound(playerid,1083,0.0,0.0,0.0);
SendClientMessage(playerid, 0xB22222FF, "[Справка]: {FFFFFF}Ближайшая заправка была отмечена на радаре.");
Расстояние же определяется правильно:
PHP Code:
4437.32
4744.81
3194.19
3490.76
4062.92
5012.70
5744.01
5149.38
4248.02
5172.52
3899.89
3283.25
551.38
2036.96
2710.78
1943.12
Re: Алгоритм выведения ближайшего АЗС к игроку. -
cm666 - 04.12.2016
Через цикл прогонять все заправки и запоминать ближайшею, потом ее выводить .
Re: Алгоритм выведения ближайшего АЗС к игроку. -
ZiGGi - 04.12.2016
PHP Code:
new min_id;
new Float:min_distance = 99999.0;
for (new x; x < sizeof(PS); x++) {
new Float: distance = GetPlayerDistanceFromPoint(playerid, PS[x][ps_pos_x],PS[x][ps_pos_y],PS[x][ps_pos_z]);
if (distance < min_distance) {
min_distance = distance;
min_id = x;
}
}
SetPlayerCheckpoint(playerid, PS[min_id][ps_pos_x], PS[min_id][ps_pos_y], PS[min_id][ps_pos_z], 5.0);
Re: Алгоритм выведения ближайшего АЗС к игроку. -
Johhnyllll - 04.12.2016
Спасибо,всё работает