Возвращает таблицу геодат, необходимых для проецирования реальных координат точек заданной цели задания в координаты заданной текстуры интерфейсной карты.
Индекс каждой геодаты соответствует индексам точек из таблицы locations метода avatar.GetQuestObjectiveInfo( objectiveId ).
То есть, полученая таблица может содержать nil, по тем индексам точек, для которых не получено геодаты по заданным данным.
Если для всех точек не нашлось геодаты, то естественно, таблица будет пустой, а в случае ошибки, вместо таблицы будет возвращён nil.
См. Geodata.
-- библиотека: cartographer -- объявление: function GetQuestObjectiveGeodata( objectiveId, zonesMapId ) -- параметры: objectiveId: QuestId -- идентификатор цели задания. zonesMapId: ObjectId - идентификатор интерфейсной карты зоны, для которой надо получить геодату -- возвращаемые значения table of Geodata or nil - если не произошло ошибки, то индексированная с 0 таблица геодат, соответствующим точкам из avatar.GetQuestObjectiveInfo( objectiveId ).locations
Пример:
function GetTexturePos( pos, geoData ) local pixelsPerMeterX = ( MAP_TEXTURE_X / geodata.width ) local pixelsPerMeterY = ( MAP_TEXTURE_Y / geodata.height ) local mapCenterX = geodata.x + ( geodata.width / 2 ) local mapCenterY = geodata.y + ( geodata.height / 2 ) texturePosX = math.ceil( ( pos.posX - mapCenterX ) * pixelsPerMeterX ) texturePosY = math.ceil( ( mapCenterY - pos.posY ) * pixelsPerMeterY ) return { x = texturePosX, y = texturePosY } end local questObjective = avatar.GetQuestObjectiveInfo( objectiveId ) local geodatas = cartographer.GetQuestObjectiveGeodata( objectiveId, currentZonesMapId ) if geodatas and questObjective then for index = 0, GetTableSize( questObjective.locations ) - 1 do local location = questObjective.locations[ index ] local geodata = geodatas[ index ] if geodata then local texturePos = GetTexturePos( location.position, geodata ) else LogInfo( "Нет такой точки на текущей карте" ) end end end