# 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);



```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://workshop-guide.magicbyte.ru/mods/dayzmapmanager.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
