表概述

instance_template表是副本系统的基础配置表。每个副本(地下城、团队副本)都有一条记录,通过parent字段建立副本入口地图与实际副本地图的关联关系。

主键为 map,每条记录对应Map.dbc中的一个地图ID。

表结构

字段名数据类型默认值说明
mapSMALLINT UNSIGNEDNOT NULL副本地图ID(主键),对应Map.dbc
parentSMALLINT UNSIGNEDNOT NULL父地图ID,副本入口所在的地图
scriptVARCHAR(128)''实例脚本名称
allowMountTINYINT UNSIGNED0是否允许在副本内骑乘:0=禁止,1=允许

重要字段详解

map (副本地图ID)

主键,对应Map.dbc中的地图编号。常见副本地图ID:

  • 33 - 血色修道院
  • 36 - 死亡矿井
  • 43 - 哀嚎洞穴
  • 48 - 黑暗深渊
  • 70 - 奥达曼
  • 90 - 诺莫瑞根
  • 109 - 沉没的神庙
  • 209 - 祖尔法拉克
  • 229 - 黑石塔下层
  • 230 - 黑石深渊
  • 249 - 奥妮克希亚的巢穴
  • 309 - 祖尔格拉布
  • 409 - 熔火之心
  • 469 - 黑翼之巢
  • 531 - 安其拉废墟
  • 532 - 卡拉赞
  • 533 - 纳克萨玛斯
parent (父地图)

指向副本入口所在的世界地图。用于确定副本的物理入口位置:

  • 0 - 东部王国(死亡矿井、血色修道院等)
  • 1 - 卡利姆多(哀嚎洞穴、黑暗深渊等)
  • 530 - 外域(地狱火城墙、暗影迷宫等)
  • 571 - 诺森德(魔枢、闪电大厅等)
script (实例脚本)

C++实例脚本名称,用于控制副本的特殊机制:

  • instance_deadmines - 死亡矿井脚本
  • instance_blackrock_depths - 黑石深渊脚本
  • instance_molten_core - 熔火之心脚本

实战案例

查询所有副本及其入口位置:
SELECT it.map, it.parent, it.script, it.allowMount,
       att.Name, att.target_map
FROM instance_template it
LEFT JOIN areatrigger_teleport att ON it.map = att.target_map
WHERE it.map > 1
ORDER BY it.map;
查询某地图上的所有副本入口:
SELECT it.map, it.script
FROM instance_template it
WHERE it.parent = 0  -- 东部王国
ORDER BY it.map;
允许在副本内骑乘:
UPDATE instance_template SET allowMount = 1 WHERE map = [副本地图ID];

常见问题

Q: 进入副本后被传送到错误的位置,如何排查?

检查areatrigger表和areatrigger_teleport表的对应记录,确认target_map与instance_template.map一致。

Q: 副本没有Boss刷新,如何排查?

检查instance_template.script是否正确填写,以及对应的C++脚本是否已编译加载。