# Пользовательские дополнения

На главную

## cartographer.GetQuestObjectiveGeodata( objectiveId, zonesMapId )

Возвращает таблицу геодат, необходимых для проецирования реальных координат точек заданной цели задания в координаты заданной текстуры интерфейсной карты.

Индекс каждой геодаты соответствует индексам точек из таблицы 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

#### Search: "CategoryLuaApi" "CategoryCartographer"

CategoryCartographer
EventAvatarClientZoneChanged
EventAvatarMapModifiersChanged
EventAvatarZoneChanged
EventNavigateEnabledChanged
EventSosFinished
EventSosStarted
FunctionCartographerCanNavigateToPoint
FunctionCartographerGetCurrentMapInfo
FunctionCartographerGetCurrentMapModifiers
FunctionCartographerGetCurrentZoneAttributes
FunctionCartographerGetCurrentZoneInfo
FunctionCartographerGetMapBlockInfo
FunctionCartographerGetMapBlocks
FunctionCartographerGetMapMarkerObjects
FunctionCartographerGetMapMarkers
FunctionCartographerGetMapModifierInfo
FunctionCartographerGetMapModifierValuedObject
FunctionCartographerGetMarkerInfo
FunctionCartographerGetObjectGeodata
FunctionCartographerGetQuestGeodata
FunctionCartographerGetQuestObjectiveGeodata
FunctionCartographerGetSosInfo
FunctionCartographerGetSosObjects
FunctionCartographerGetZonesMapId
FunctionCartographerGetZonesMapInfo
FunctionCartographerGetZonesMapLowQuests
FunctionCartographerGetZonesMapQuests
FunctionCartographerIsFinalQuestCompleted
FunctionRulesGetZonesMaps
FunctionUnitGetZonesMapId
Geodata
MapModifierId

CategoryLuaApi CategoryFunction CategoryPosition CategoryCartographer CategoryQuest

На главную