RedHeavenHeroЗагвоздка не в этом.
По-моему такая функция подойдёт. Она возвращает индекс с самым маленьким значением.
При условии, что индекс заносимого в функцию аргумента - имя города, а значение - дистанция. То есть возвращать она будет имя ближайшего города (из тех, что были в массиве array).
Ну тут тем более ничего сложного.
ИскомыйГород = nil;
МинРасстояние = 999;
От i, город in массив_городов поехали
Расстояние = (xyzГород F xyzГерой) ;
Если Расстояние < МинРасстояние то
МинРасстояние = Расстояние
ИскомыйГород = Город
Конец
Конец
Вот весь код выбора ближайшего города, осталось лишь перевести с Олбанского и добавить пару условий. Можно ещё добавить фильтр принадлежности вражеского(фильтрация союзных игроков в команде) игрока и сразу находить ИД игрока, владеющего объектом.
Добавлено через 7 минут
Ple-SenНапример, награда будет считаться так, что расчищена сокровищница "на уровень выше". Разумеется, в случае сокровищниц максимального уровня, придётся вводить какую-то специальную ступень для героя. Другой вариант - процентное увеличение награды (но тут будет проблема с артефактами).
Надо будет хранить все посещения по массивам по каждому игроку по каждому герою в каждый период. Награду вернуть от сокровищницы не удастся, поэтому % версия отпадает.
Необходимо сначала составить список объектов, к которым будет такое отношение.
Геморрно, поэтому лучше оставить до второй 32-ки. Хотелось бы пораньше выпустить альфа версию первых 32 новых, а потом добавлять до 64. Поэтому спеца не канет в небытие, а лишь реализация переносится на другое время.
Напомню, что первая дата реализации всех 64 новых героев - 21 декабря 2012 - в аккурат под конец света
Но, скорее всего дата немного отодвинется.
P.S. 32-ку хотелось бы выпустить в начале октября, в принципе, для альфа наличие знакомых иконок незначительно(но сделать надо разные, чтобы не повторялись, например временно натырить у компанейских)