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

На главную


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
FunctionCartographerIsCurrentZoneAnonymizedMap
FunctionCartographerIsCurrentZoneRiftMap
FunctionCartographerIsFinalQuestCompleted
FunctionCartographerIsOnCommon
FunctionRulesGetZonesMaps
FunctionUnitGetZonesMapId
Geodata
MapModifierId


CategoryLuaApi CategoryFunction CategoryPosition CategoryCartographer CategoryQuest

На главную