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

На главную


сartographer.GetQuestGeodata( questId, zonesMapId )

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

Если квест содержит дополнительные целевые точки, то поле 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

Search: "CategoryLuaApi" "CategoryCartographer"

CategoryCartographer
EventAvatarClientZoneChanged
EventAvatarZoneChanged
EventSosFinished
EventSosStarted
FunctionCartographerGetCurrentMap
FunctionCartographerGetCurrentZone
FunctionCartographerGetCurrentZoneAttributes
FunctionCartographerGetMapBlockInfo
FunctionCartographerGetMapBlocks
FunctionCartographerGetPlayerGeodata
FunctionCartographerGetQuestGeodata
FunctionCartographerGetSosInfo
FunctionCartographerGetSosObjects
FunctionCartographerGetZonesMapId
FunctionCartographerGetZonesMapInfo
FunctionUnitGetZonesMapId


CategoryLuaApi CategoryFunction CategoryPosition CategoryCartographer CategoryQuest

На главную