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

На главную

## Geodata

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

Если геодата получена, то таблица с полями:

      x, y: number (int) - мировые координаты точки левого нижнего угла карты
      width, height: number (int) - размер зоны (в мировых единицах), охватываемой картой.

Пример проецирования:

    local geodata = cartographer.GetPlayerGeodata( unitId, currentZonesMapId )
    if geodata then
      local pos = object.GetPos( unitId )
      if pos then

        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 )

      end
    end

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

Кроме того nil возвращается для тех интерфейсных карт зон, у которых флаг isShowPositions = false. Это могут быть, например, общая карта мира, или чистилище. Также геодата не возвращается для карт, указанных в ресурсах, как карты неизвестного места.

Используется информация и о зоне самой точки и о зоне, в которой эта точка должна быть отображена. Это сделано, так как:

- геодата может быть разной для разных точек на одной интерфейсной карте, если на карте есть инсеты, то есть некоторые участки карты смещены для лучшего визуального представления (например, три острова Новой Земли расположены на карте не так, как в пространстве);

- геодата может возвращаться для одной и той же точки, но при показе её на разных картах, из-за чего геодата для отображения меняется от карты к карте (например, некоторые задания из Новограда видны также на общей карте Светлолесья).

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

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

CategoryCartographer
EventAvatarClientZoneChanged
EventAvatarMapModifiersChanged
EventAvatarZoneChanged
EventNavigateEnabledChanged
EventNavigatorObjectReached
EventSosFinished
EventSosStarted
FunctionCartographerCanNavigateToPoint
FunctionCartographerGetCurrentMap
FunctionCartographerGetCurrentMapModifiers
FunctionCartographerGetCurrentZone
FunctionCartographerGetCurrentZoneAttributes
FunctionCartographerGetMapBlockInfo
FunctionCartographerGetMapBlocks
FunctionCartographerGetMapMarkerObjects
FunctionCartographerGetMapMarkers
FunctionCartographerGetMapModifierInfo
FunctionCartographerGetMapModifierValuedObject
FunctionCartographerGetMarkerInfo
FunctionCartographerGetObjectGeodata
FunctionCartographerGetQuestGeodata
FunctionCartographerGetQuestObjectiveGeodata
FunctionCartographerGetSosInfo
FunctionCartographerGetSosObjects
FunctionCartographerGetZonesMapId
FunctionCartographerGetZonesMapInfo
FunctionCartographerGetZonesMapQuests
FunctionCartographerIsFinalQuestCompleted
FunctionCartographerNavigateToObject
FunctionCartographerNavigateToPoint
FunctionCartographerNavigateToRule
FunctionRulesGetZonesMaps
FunctionUnitGetZonesMapId
Geodata
MapModifierId

CategoryLuaApi CategoryTypes CategoryPosition CategoryCartographer

На главную