📊 WorldMapArea.dbc
WorldMapArea.dbc 定义了世界地图(M键)中各个区域在UI地图贴图上的位置和边界。控制玩家打开世界地图时的区域显示范围和定位。
📋 字段结构
| 索引 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 0 | ID | uint32 | 世界地图区域唯一标识符 |
| 1 | MapID | uint32 | 关联的游戏地图ID(引用 Map.dbc) |
| 2 | AreaID | uint32 | 关联的区域ID(引用 AreaTable.dbc),0=整张地图 |
| 3 | AreaName | string | 区域名称(地图UI显示) |
| 4 | LocLeft | float | 区域左边界坐标 |
| 5 | LocRight | float | 区域右边界坐标 |
| 6 | LocTop | float | 区域上边界坐标 |
| 7 | LocBottom | float | 区域下边界坐标 |
| 8 | DisplayMapID | uint32 | UI显示使用的地图ID(可能与 MapID 不同) |
| 9 | DefaultDungeonFloor | uint32 | 默认副本楼层 |
📌 关键字段详解
LocLeft/Right/Top/Bottom - 边界坐标
定义区域在世界地图UI贴图上的显示区域。坐标系统基于世界地图的贴图像素坐标。例如艾尔文森林可能占据世界地图的某一块区域。
MapID vs DisplayMapID - 地图显示映射
MapID 是实际游戏地图,DisplayMapID 是世界地图UI上显示的贴图。例如副本可能同时显示在世界地图上,但使用不同的 DisplayMapID。
AreaID - 区域过滤
AreaID=0 表示该条目覆盖整个 MapID。非0时只覆盖指定的 AreaTable 区域。用于子区域在父级地图上的精确定位。
🔧 使用示例
查询地图UI显示区域
-- 查询东部王国(MapID=0)的世界地图显示区域
SELECT AreaName, LocLeft, LocRight, LocTop, LocBottom
FROM world_map_area
WHERE MapID = 0 AND AreaID = 0;💡 使用技巧
- 自定义地图边界:正确设置边界坐标确保区域在世界地图上显示在正确位置。
- 副本地图:副本也可配置世界地图显示区域,用 DefaultDungeonFloor 控制楼层。
- 多层副本:多楼层副本为每层创建独立条目。
- 参考链接:AzerothCore Wiki - world_map_area