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

На главную

# CategoryCartographer

События и функции Lua Api, относящиеся к интерфейсным картам.

Для отображения карты используется текстура определенных размеров. Все текстуры лежат в \game\data\Interface\Maps\.

Чтобы преобразовать реальные мировые координаты в координаты текстуры, используется геодата - это положение угла карты и её размеры в реальных координатах.

Пример использования см. в: cartographer.GetObjectGeodata( unitId, zonesMapId ).

Одна карта может включать в себя несколько врезок. Например: архипелаг островов включает несколько островов, сильно разнесенных в пространстве. Чтобы красиво показать их на карте, они отображаются на текстуре, как врезки. Для каждой врезки определена своя геодата. То есть два объекта, находящиеся на разных островах, получают разную геодату для каждого острова, хоть и на одной интерфейсной карте.

Если на карте нет дополнительных врезок (обычный случай), то просто задаётся одна врезка.

Кроме того, некоторые подзоны должны показываться не на карте их главной, родительской зоны, а на какой-то другой. Например, в крупном городе можно отдельный район вынести на отдельную укрупнённую карту. Или вынести окраины этого города на карту окрестностей.

Таким образом структура одной интерфейсной карты выглядит, как:

    interfaceMap:
      name - имя
      description - описание
      texture - текстура
      isShowPositions - false, если не показывать на карте положение объектов. Не будет возвращаться геодата
      isShowInList - false, если не показывать карту в списке карт блока (см. ниже)
      insets: - список врезок
        inset[0]:
          geodata (x, y, width, height) - координаты левого нижнего угла и размер врезки в реальных координатах
          zones - список ZoneResource, входящих в эту врезку
        inset[1]
          ...
        inset[n]

Несколько карт можно объединить в один блок карт. Список таких блоков будет показан в интерфейсе. Например, могут быть блоки: Хадаган, Кания, Канийские архипелаги. А в блок Хадагана входят: Незебград, Северный плацдарм и т.д.

Структура блоков выглядит так:

    mapBlocks:
      mapBlock[0]:
        name - имя
        description - описание
        isShowInList - false, если в блоке нет карт, которые показываются в списке
        zonesMaps - список объектов interfaceMap, входящих в блок
      mapBlock[1]
        ...
      mapBlock[n]

Дополнительные подробности: LuaApiDetails (закрытая ссылка)

При поиске подходящей интерфейсной карты последовательно просматривается вхождение ZoneResource в какую-либо врезку какой-либо карты. Если такой карты не обнаруживается, то поиск итеративно продолжается для родительских ZoneResource.

Кроме того, можно задать один блок карт - Неизвестные места. Зоны, найденные в этом блоке, определяются как неизвестное место, и для них возвращается interfaceMap с определенной текстурой, не показываемая в списках зон и блоков, и для неё нельзя получить геодату. Кроме того эта карта возвращается в случае невозможности определить реальную карту (игрок на тестовой карте или ZoneResource текущего места игрока не прописан в данных интерфейсных карт).

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

Специально для целевой и финальных точек квестов во врезке карты есть дополнительный список зон otherQuestZones. Это зоны других (не требуемой) карт, содержащие квестовые точки, которые должны отображаться в требуемой карте. Например, квесты из Новограда должны отображаться на карте Светлолесья. У врезки карты Светлолесья в поле otherQuestZones прописана зоно Новограда.

## BlurpSearch: 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

На главную