SA-MP Forums Archive
Алгоритм выведения ближайшего АЗС к игроку. - 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 xsizeof(PS); x++) {
    new 
Floatdistance GetPlayerDistanceFromPoint(playeridPS[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(playerid0xB22222FF"[Справка]: {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 
xsizeof(PS); x++) { 
    new 
Floatdistance GetPlayerDistanceFromPoint(playeridPS[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(playeridPS[min_id][ps_pos_x], PS[min_id][ps_pos_y], PS[min_id][ps_pos_z], 5.0); 



Re: Алгоритм выведения ближайшего АЗС к игроку. - Johhnyllll - 04.12.2016

Спасибо,всё работает