— | число карт | u32; клиент требует ровно 37 (0x25 зашито в 0075C490) и равенство с числом карт NDMap.edf maps.md §4 (раскладка Map.edf); maps.md §4.3 | Map_Data.spt (число строк) | — | клиент | производное | — |
— | index | номер карты 0…36 maps.md §4 (раскладка Map.edf) | Map_Data.spt (порядок) | — | клиент | производное | — |
— | name | код карты (32); поиск карты и миникарты по коду без учёта регистра maps.md §4 (раскладка Map.edf); maps.md §4.3 | Map_Data.spt колонка 1 | — | клиент | производное | — |
— | file | путь BSP (128); из него же клиент строит путь _dummy.spt maps.md §4 (раскладка Map.edf) | Map_Data.spt колонка 2 | — | клиент | производное | — |
— | spr | имя .spr миникарты (128); клиент хранит ./SpriteImage/Common/Map/<spr> и грузит как спрайт окна миникарты maps.md §4 (раскладка Map.edf); maps.md §4.3 | — | — | — | известно | — |
— | portalCount | число порталов maps.md §4 (раскладка Map.edf) | [PORTAL] карты | — | клиент | производное | — |
— | портал × N | 288 байт: карта, номер портала, рамка (6 float), матрица 3×4, точка x y z 1 (та же, что -node_tm в .spt), тип (1 вход, 0 прибытие, 3 меню), «работает», расы, имя пустышки, название (пусто — берётся из NDMap), +0xED число пар назначения (везде 1), требования (4.2) maps.md §4.2; maps.md §4.3 | .spt (*dp) + [PORTAL] | — | клиент | производное | — |
— | назначения × N | после всех порталов карты: на каждый портал +0xED пар (i32 карта, i32 портал) по 8 байт, −1, −1 у точек прибытия; клиент хранит указатель в +0xF0 портала maps.md §4.3; maps.md §4 | [PORTAL] m_strLinkMapCode/m_strLinkPortalCode | — | клиент | производное | — |
— | dummyCount + пустышки | u32 + n × 96 — точки добычи руды: рамка (+8 minX, +0x10 minZ, +0x14 maxX, +0x1C maxZ; Y не проверяется), матрица и точка не читаются. Клиент берёт индекс первой записи, в чью рамку попадает игрок, и шлёт его как byMineIndex (14/1) и при установке автошахты; сервер трактует индекс по своему массиву *0dr, *1dr, *2dr. AoP: 226 записей против 62 *0dr сервера — старый список maps.md §4.3 [код, 30.10.2026]; mining.md 2.1 | *0dr, *1dr, *2dr серверного .spt в порядке файла: рамка = bbox + позиция, поворот и позиция округлены | — | клиент | производное | — |
— | tooltipCount + подсказки | u32 + n × 84: u32 номер, i32 left, top, right, bottom — прямоугольник значка на картинке миникарты (16 × 16), char[64] текст (в файле пуст, в память читается из NDMap). Значок типа 5 с id номер | 0x50000000, текст — подсказка maps.md §4.3 [код, 30.10.2026] | текст — NDMap.edf | — | сервер → клиент | известно | — |
— | fScale/rect × 2 | две врезки миникарты: fScale ≠ 0 — врезка есть (увеличенный фрагмент), rect[0..1] — левый верхний угол фрагмента в пикселях картинки, rect[2..3] — положение окна врезки в окне миникарты; значок во врезке: (px − rect[0]) × fScale − ширина/2 maps.md §4.3 [код, 30.10.2026] | — | — | — | известно | — |
— | miniMapScale X/Y, Shift X/Y | размер и сдвиг миникарты: формула «мир ↔ клетка» maps.md §1.2; maps.md §4.3 | — | — | — | известно | — |
— | leafNum, nodeNum | числа листьев и узлов BSP — контроль при загрузке карты (0075A130): 0, 0 — не проверять; иначе должны равняться значениям загруженного BSP, при расхождении карта не загружается («DIFF BSP LEAF/NODE…» в лог) maps.md §4.3 [код, 30.10.2026] | BSP карты (nodeNum = leafNum − 1 во всех корпусах) | — | клиент | производное | — |
— | миникарты и карты мира | два раздела одного формата (списки CMapArea): u32 число; на запись u32 высота, u32 ширина картинки, u32 длина + имя (= код карты без учёта регистра), u32 число зон, зоны × {u32 цвет (не читается — код мёртвый), u32 x, u32 y подписи в пикселях, i32 звук (не читается)}, u32 длина + RLE-маска {u16 длина−1, u8 зона} → байт на пиксель. Зона игрока — по пикселю маски; названия зон — NDMap. Сервер шлёт индекс зоны (8/6) по своему Map\MAPDATA.DAT — у AoP байт в байт этот раздел. Карты мира — дерево map1 → map1_<зона+1>; текст зоны = название карты для перехода к её миникарте maps.md §4.3 [код, 30.10.2026] | = серверный Map\MAPDATA.DAT (порядок и число зон) | — | сервер → клиент | известно | — |