instance - 副本实例主表
基于 AzerothCore Characters 数据库 · 副本实例核心管理表
📋 表概述
instance 表存储所有已创建的副本实例信息。每次玩家进入一个副本,系统可能创建一个新的实例记录,包含地图ID、重置时间、难度、已完成进度等数据。副本实例的生命周期从此表开始管理。
- 副本实例创建管理
- 重置时间追踪
- 难度区分
- 进度保存(data字段)
- 大秘境扩展支持
主键为 id,每个副本实例有唯一ID。该表还包含大秘境(M+)相关的扩展字段,如词缀列表、奖励倍数等。
📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| id | int UNSIGNED | 0 | 副本实例ID(主键) |
| map | smallint UNSIGNED | 0 | 副本地图ID |
| resettime | int UNSIGNED | 0 | Unix时间戳,副本重置时间 |
| difficulty | tinyint UNSIGNED | 0 | 副本难度(0=普通10人,1=英雄5人,2=普通25人,3=英雄25人) |
| completedEncounters | int UNSIGNED | 0 | 已完成的首领战掩码(按位标记) |
| data | text | NOT NULL | 副本保存数据(序列化状态) |
| challenge_level | int | 0 | 大秘境层数 |
| 周期id | int | 0 | 大秘境周期ID |
| 星期数 | int | 0 | 大秘境周数 |
| boss调整id | int | 0 | 首领属性调整ID |
| 小怪调整id | int | 0 | 小怪属性调整ID |
| 专属难度光环 | varchar(500) | '' | 该副本专属光环效果列表 |
| 玩家增加的光环 | varchar(500) | '' | 玩家增益光环列表 |
| 玩家扣减的光环 | varchar(500) | '' | 玩家减益光环列表 |
| boss扣减的光环 | varchar(500) | '' | 首领减益光环列表 |
| 小怪扣减的光环 | varchar(500) | '' | 小怪减益光环列表 |
| 词缀列表 | varchar(500) | '' | 大秘境词缀组合 |
| 基础奖励倍数 | int | 0 | 基础奖励倍数 |
| 提前完成奖励倍数 | int | 0 | 限时内完成奖励倍数 |
| 额外奖励id | varchar(500) | '' | 额外奖励物品ID列表 |
| 大秘境钥匙id | int | 0 | 当前大秘境钥匙物品ID |
| 大秘境开始时间 | int | 0 | 大秘境计时开始时间戳 |
| 大秘境随机光环 | varchar(500) | '' | 大秘境随机附加光环 |
🔍 重要字段详解
🗺️ map / difficulty - 副本标识
详细说明:map 和 difficulty 共同确定一个副本的具体类型。
- map - 副本地图ID,如 33=影牙城堡, 249=奥妮克希亚的巢穴, 533=纳克萨玛斯
- difficulty - 0=普通10人, 1=英雄5人, 2=普通25人, 3=英雄25人
- 同一 map 可能有多条 instance 记录(不同难度分别创建)
⏰ resettime - 重置时间
详细说明:副本过期重置时间(Unix时间戳),到达后会重置副本进度。
- 5人英雄副本:通常为每日凌晨重置
- 团队副本:通常为每周二维护时重置
- 到达 resettime 后,副本已完成的首领和战利品会重置
💡 示例:查询即将重置的副本 →
WHERE resettime < UNIX_TIMESTAMP() + 3600⚔️ completedEncounters - 进度掩码
详细说明:按位标记已击败的首领。每个首领对应一个二进制位。
- 位 0(值1)= 1号首领已击败
- 位 1(值2)= 2号首领已击败
- 位 2(值4)= 3号首领已击败…依次类推
- 值 0 = 无首领被击败(全新副本)
💡 SQL示例
示例1:查询所有存活的副本实例
SELECT
i.id, i.map, i.difficulty,
FROM_UNIXTIME(i.resettime) AS reset_time,
BIN(i.completedEncounters) AS bosses_killed
FROM instance i
WHERE i.resettime > UNIX_TIMESTAMP()
ORDER BY i.resettime;示例2:重置指定副本实例
-- 将副本实例ID=5设置为已过期(立即重置)
UPDATE instance
SET resettime = 1
WHERE id = 5;示例3:查询大秘境副本信息
SELECT
id, map, challenge_level AS level,
词缀列表 AS affixes,
基础奖励倍数 AS base_multiplier
FROM instance
WHERE challenge_level > 0
ORDER BY challenge_level DESC;❓ 常见问题
Q1: 副本实例什么时候会被创建?
玩家进入副本时,如果该地图和难度没有对应的可用实例,系统会创建一个新的 instance 记录并分配新ID。
Q2: 大秘境相关字段为空(0或'')是否影响普通副本?
不影响。大秘境扩展字段仅在大秘境副本(challenge_level > 0)时生效,普通副本直接忽略这些字段。