Возвращает геодату, необходимую для проецирования реальных координат точек цели и возвращения задания в координаты текстуры интерфейсной карты.
Если квест содержит дополнительные целевые точки, то поле additionalGeodata содержит список геодат дополнительных целевых точек. Индекс каждой геодаты соответствует индексам точек из таблицы additionalLocations метода avatar.GetQuestInfo( questId ). То есть полученая таблица может содержать nil, по тем индексам дополнительных точек, для которых не получено геодаты по заданным данным.
Подробности см. сartographer.GetPlayerGeodata( unitId, zonesMapId ).
-- библиотека: сartographer -- объявление: function GetQuestGeodata( questId, zonesMapId ) -- параметры: questId: QuestId -- идентификатор задания. zonesMapId: ObjectId - идентификатор интерфейсной карты зоны, для которой надо получить геодату -- возвращаемые значения goalGeodata: Geodata or nil - геодата цели returnGeodata: Geodata or nil - геодата точки возвращения additionalGeodata: table of Geodata - геодата дополнительных целевых точек Geodata: table - если геодата получена, то таблица с полями: x, y: number (int) - мировые координаты точки левого нижнего угла карты width, height: number (int) - размер зоны (в мировых единицах), охватываемой картой.
Пример:
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 geodata = cartographer.GetQuestGeodata( questId, currentZonesMapId ) if geodata then local goalPos = object.GetPos( unitId ) if goalPos then local texturePos = GetTexturePos( pos, geodata.goalGeodata ) end -- additional for index = 0, GetTableSize( questInfo.additionalLocations ) - 1 do local locationGeodata = geodata.additionalGeodata[ index ] if locationGeodata then -- get texture point position local texturePos = GetTexturePos( questInfo.additionalLocations[ index ].position, locationGeodata ) end end end