# DayZMapManager

**DayZMapManager** — модификация, добавляющая в игру удобную интерактивную карту.\
Карта открывается мгновенно по нажатию клавиши **M**, позволяя быстро ориентироваться на местности и получать необходимую информацию прямо во время игры.

***

#### Содержимое архива

В архиве находятся файлы, необходимые для корректной работы модификации:

**`DayZMapManager.pbo`**\
Основной файл модификации. Устанавливается на **клиентскую часть** игры.

**`DZMM`**\
Папка с конфигурацией модификации.\
Её необходимо полностью поместить в папку **profiles** на сервере.

***

#### Содержимое конфигурации

В папке конфигурации находятся следующие файлы:

**`config.json`**\
Отвечает за настройки интерфейса.\
Здесь можно задать **цвет активных кнопок** и другие визуальные параметры карты.

**`locale.loc`**\
Файл локализации модификации.\
Позволяет **перевести интерфейс на любые языки** или изменить существующие тексты.

**`server_markers.json`**\
Файл для настройки **серверных маркеров** на карте.\
С его помощью можно добавлять важные точки, зоны или другие объекты, которые будут отображаться игрокам.

> **`server_markers.json`**

```json
{
	"markers": [
		{
			"active": true, // true/false - включение/отключение маркера
			"marker_color": [0, 0, 255], // RGB - Цвет маркера 
			"name": "Название маркера", // Название маркера
			"marker_image": "$DZMM/new_markers/mark.edds", // Путь до иконки маркера
			"marker_type": "area", // Тип маркера point - точка и area - зона
			"radius": 200, // Радиус зоны
			"position": [ // Позиция размещения маркера
				4572.84, // х
				90.8049, // y
				3468.37 // z
			]
		},
		{
			"active": true,
			"marker_color": [0, 255, 0],
			"name": "Название маркера2",
			"marker_image": "$DZMM/new_markers/mark.edds",
			"marker_type": "Point",
			"position": [
				4008.29,
				70.0338,
				4209.53
			],
			"allow3d": false // true/false - включение/отключение 3d маркера для игроков
		}
	]
}
```

\
Стандартные пути маркеров

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

Доступные пути к стандартным маркерам:

```json
"$DZMM/new_markers/box.edds"
"$DZMM/new_markers/car.edds"
"$DZMM/new_markers/home.edds"
"$DZMM/new_markers/mark.edds"
"$DZMM/new_markers/stash.edds"
"$DZMM/new_markers/zombie.edds"
```

Эти иконки можно использовать в конфигурации серверных маркеров для отображения различных типов объектов на карте.

***

#### Создание собственного маркера

Если стандартных иконок недостаточно, вы можете добавить **собственный маркер**.

Для этого необходимо:

1. Создать **собственную модификацию**.
2. Добавить иконку в формате **`.edds`** в папку вашего мода.
3. Указать путь к иконке в конфигурации маркеров.

Пример пути к пользовательскому маркеру:

```json
"MY_MOD/data/icons/icon.edds"
```

#### Горячие клавиши

Для удобства использования модификации предусмотрены быстрые клавиши управления картой и маркерами.

**Ь** — открытие игровой карты.\
Позволяет мгновенно открыть карту прямо во время игры.

**Ъ** — скрывает или показывает все 3D-маркеры.\
Используется для временного отключения отображения маркеров в игровом мире, чтобы не загромождать экран и сосредоточиться на игровом процессе.\
\
В модификации предусмотрено API для добавление и удаление сессионных маркеров в процессе игры&#x20;

```csharp
// Получаем доступ к серверной модели модификации.
// Через неё выполняется управление маркерами: добавление, удаление и изменение.
DZMM_ServerModel model = DZMM_ServerModel.GetInstance();

// Создаём экземпляр маркера.
// Далее заполняются его основные параметры.
DZMM_MarkerData data = new DZMM_MarkerData();

// Название маркера, которое будет отображаться на карте.
data.name = "My Marker";

// Позиция маркера в мире (формат: X Y Z).
data.position = "5000 0 5000";

// Путь к иконке маркера.
data.marker_image = "$DZMM/point.edds";

// Цвет маркера (RGB).
data.marker_r = 255;   // Красный канал
data.marker_g = 128;   // Зелёный канал
data.marker_b = 0;     // Синий канал

// Тип маркера (например: point, area и т.д.).
data.marker_type = "point";

// Активность маркера (true — отображается, false — скрыт).
data.active = true;

// Добавляем маркер в игровую сессию.
// Описание аргументов.
// "My Category" — название категории маркеров. (string)
// Если категории не существует, она будет создана автоматически.
// data — содержимое маркера. (DZMM_MarkerData)
// true — включает отображение 3D-маркера в игровом мире. (bool)
int id = model.AddSessionMarker("My Category", data, true);. 

// ─────────────────────────────────────────────────────────────────────────────
// Пример использования: AddSessionMarkerForPlayer — маркер для конкретного игрока
// ─────────────────────────────────────────────────────────────────────────────
// Принцип тот же, что и выше, но маркер отправляется только одному игроку.
// Игрок идентифицируется по PlainId (SteamID без двоеточий, например "76561198085441104").
//
// Если игрок не в сети в момент вызова — маркер сохраняется на сервере и будет
// автоматически отправлен ему при следующем подключении.
//
// Аргументы:
//   "76561198085441104" — PlainId целевого игрока (string).
//   "My Category"       — название категории (string).
//   data                — содержимое маркера (DZMM_MarkerData).
//   true                — включить 3D-маркер (bool).
// Возвращает ID маркера. Удаление — model.RemoveSessionMarker(id) — работает для всех игроков.
//   int id = model.AddSessionMarkerForPlayer("76561198085441104", "My Category", data, true);



```
