DyrmanНу тут тем более ничего сложного.
Города = массив городовF;
xyzГерой = координаты герояF;
ИскомыйГород = nil;
МинРасстояние = 999;
От i, город in города
Расстояние = (xyzГород F xyzГерой) ;
Если Расстояние < МинРасстояние то
МинРасстояние = Расстояние
ИскомыйГород = Город
Конец
Конец
Вот весь код, осталось лишь перевести с Олбанского.
Этот вариант лучше. А то я поехал из Москвы в Питер через Кейптаун.
Вероятно, я не очень хорошо знаю олбанский, но перевод на луанский должен оказаться сносным.
function FindClosestEnemyTown()
local towns = GetObjectNamesByType('TOWN');
if IsHeroAlive('Avran') then
if GetHeroTown('Avran') then
return nil;
end;
else
return nil;
end;
local hx, hy, hz = GetObjectPosition('Avran');
local dist = {};
for i, town in towns do
local tx, ty, tz = GetObjectPosition(town);
if tz == hz then
local s = sqrt((tx - hx) * (tx - hx) + (ty - hy) * (ty - hy));
dist[town] = s;
end;
end;
local targetTown = min(dist);
if GetObjectOwner(targetTown) == GetObjectOwner('Avran') then
return nil;
else
return targetTown;
end;
end;