Map.dbc
地图定义文件。包含游戏中所有地图/副本的基础信息,如地图ID、名称、实例类型、加载屏幕、入口坐标等核心地图属性
文件概述
Map.dbc 定义了游戏世界中所有地图(包括普通世界地图、副本、战场、竞技场等)的基础属性。它决定了各地图的实例化行为、名称显示、入口位置、加载画面等。
列结构
| 列号 | 字段 | 类型 | 详细说明 |
|---|---|---|---|
| 1 | 编号 | 整数 | 地图唯一标识符 (MapID),在 creature、gameobject 等表中广泛引用 |
| 2 | 内部名称 | 字符串 | 地图数据目录名(客户端 Maps 目录),未直接用于游戏显示 |
| 3 | 地图类型 | 整数 | 实例类型:0=无(世界地图)、1=队伍(5人副本)、2=团队(团本)、3=PVP(战场)、4=竞技场、>=5=无 |
| 4 | 标识 | 整数 | 战场地图的简单标识,用于区分不同战场 |
| 5 | 是否战场 | 整数 | 1=是战场,0=不是战场 |
| 6~21 | 名称 | 字符串 | 各国语言的本地化地图名称(支持多语言显示) |
| 22 | 名称标识 | 整数 | 名称字符串的标志位 |
| 23 | 地区指向 | 整数 | 副本和内陆的普通地区关联,指向 AreaTable.dbc |
| 24~39 | 部落简介 | 字符串 | PVP区域的部落方文字介绍(本地化) |
| 40 | 文字标识 | 整数 | 部落简介文字标志位 |
| 41~56 | 联盟简介 | 字符串 | PVP区域的联盟方文字介绍(本地化) |
| 57 | 文字标识 | 整数 | 联盟简介文字标志位 |
| 58 | 加载屏幕 | 整数 | 进入地图时显示的加载屏幕ID,参考 LoadingScreens.dbc |
| 59 | 迷你地图图标尺寸 | 浮点数 | 小地图上该地图图标的显示缩放比例 |
| 60 | 地图入口 | 整数 | 入口地图编号,指定从哪张地图可以进入此地图 |
| 61 | 入口 X 坐标 | 浮点数 | 进入此地图时的入口 X 坐标 |
| 62 | 入口 Y 坐标 | 浮点数 | 进入此地图时的入口 Y 坐标 |
| 63 | 一天时间覆盖 | 整数 | 覆盖地图内的时间(影响日夜循环)。0=奥杜尔专用,720=勇气竞技场,-1=其他(使用默认) |
| 64 | 资料片附加 | 整数 | 资料片标识:0=原生地图(经典旧世),1=TBC附加(外域),2=WLK附加(诺森德) |
| 65 | 未知时间 | 整数 | 时间相关参数,具体用途尚未明确 |
| 66 | 最大玩家数量 | 整数 | 地图允许的最大玩家数。如果 MapDifficulty.dbc 中未定义,则使用此值作为回退 |
关键字段详解
地图类型 (InstanceType)
决定地图的实例化行为和重置规则:
| 值 | 类型 | 说明 |
|---|---|---|
| 0 | 无 / 世界地图 | 不重置,所有玩家在同一个实例(如东部王国、卡利姆多) |
| 1 | 队伍 / 5人副本 | 按队伍创建独立实例,绑定后重置 |
| 2 | 团队 / 团本 | 10/25人的团队副本实例 |
| 3 | PVP / 战场 | 按战场规则创建和管理 |
| 4 | 竞技场 | 竞技场比赛专用实例 |
名称与本地化
地图名称通过多列支持多语言(列6~21),语言索引顺序为:enUS、koKR、frFR、deDE、zhCN、zhTW、esES、esMX、ruRU。地图如 "Eastern Kingdoms"、"Kalimdor"、"Deadmines" 等都通过此字段在客户端显示。
部落/联盟简介
PVP 地图(战场、竞技场、世界PVP区域)显示阵营专用的文字介绍:
- 部落简介(列24~39):部落玩家进入PVP地图时看到的文字说明
- 联盟简介(列41~56):联盟玩家进入PVP地图时看到的文字说明
一天时间覆盖 (TimeOverride)
控制地图内的时间显示:
- 0:奥杜尔专用时间设置
- 720:勇气竞技场
- -1:使用默认服务器时间
重要地图ID速查
| ID | 名称 | 类型 |
|---|---|---|
| 0 | 东部王国 | 世界地图 |
| 1 | 卡利姆多 | 世界地图 |
| 33 | 死亡矿井 | 5人副本 |
| 530 | 外域 | 世界地图 |
| 571 | 诺森德 | 世界地图 |
| 603 | 奥杜尔 | 团本 |
| 631 | 冰冠堡垒 | 团本 |
使用示例
查询所有团队副本
-- 查询所有团队副本
SELECT ID, MapName_enUS
FROM map_dbc
WHERE InstanceType = 2
ORDER BY ID;
查询战场地图
-- 查询所有战场
SELECT ID, MapName_enUS
FROM map_dbc
WHERE 是否战场 = 1 AND 地图类型 = 3;
使用技巧
- 地图入口坐标:定义玩家进入该地图时的起始位置,结合入口地图编号使用
- 加载屏幕:参考 LoadingScreens.dbc,不同的地图可以有不同的加载画面
- 客户端匹配:地图ID需与客户端 Maps 目录下的文件对应
- 最大玩家数:如果 MapDifficulty.dbc 中针对某难度有定义,则优先使用难度定义的值
- 参考:AzerothCore Wiki - map