creature_respawn - 生物/怪物重生计时表
基于 AzerothCore Characters 数据库 · 副本内生物重生时间持久化表
📋 表概述
creature_respawn 表记录副本实例中已死亡生物的重生倒计时。当副本中的怪物/生物被击杀后,其重生时间记录在此表中,服务器根据此表决定何时让生物重新出现。主要用于副本实例中的生物重生管理。
- 副本生物重生追踪
- 死亡后重生倒计时
- 按实例区分管理
- Grid加载系统
联合主键 (guid, instanceId),同一生物在不同副本实例中可以有独立的复活时间。属于 Grid Loading System。
📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | int UNSIGNED | 0 | 生物GUID(creature.guid,主键1) |
| respawnTime | int UNSIGNED | 0 | 重生时间(Unix时间戳) |
| mapId | smallint UNSIGNED | 0 | 所在地图ID |
| instanceId | int UNSIGNED | 0 | 副本实例ID(主键2) |
🔍 重要字段详解
🐉 guid - 生物标识
详细说明:对应 world 库 creature 表中的生物GUID。
- 每个生物在游戏世界中有唯一GUID
- 副本中的生物死亡后在此表记录重生时间
- 重生后对应记录被移除
⏱️ respawnTime - 重生倒计时
详细说明:Unix时间戳,标记生物何时复活。
- 当前时间 >= respawnTime → 生物重生,记录删除
- 当前时间 < respawnTime → 生物保持死亡状态
- 5人副本:怪物不记录在此表(软重置)
- 团队副本:怪物死亡后记录,副本重置时清除
💡 立即复活某生物:
DELETE FROM creature_respawn WHERE guid = X AND instanceId = Y;🏛️ instanceId - 副本实例区分
详细说明:区分同一生物在不同副本实例中的重生状态。
- instanceId=0 → 世界生物(非副本)的重生时间
- instanceId>0 → 副本实例中生物的重生时间
- 同一guid在不同instanceId中可以有不同重生时间
💡 SQL示例
示例1:查询某副本实例中已死亡生物的列表
SELECT
guid, mapId, instanceId,
FROM_UNIXTIME(respawnTime) AS respawn_at,
TIMESTAMPDIFF(SECOND, NOW(), FROM_UNIXTIME(respawnTime)) AS seconds_remaining
FROM creature_respawn
WHERE instanceId = 42
ORDER BY respawnTime;示例2:强制重置某副本中所有生物
DELETE FROM creature_respawn
WHERE instanceId = 42;❓ 常见问题
Q1: 副本怪物不重生怎么办?
检查 creature_respawn 表中该生物在对应 instanceId 下的记录。删除记录后再进入副本即可看到重生。如果问题持续,可能需要重置整个副本实例。
Q2: 此表与 creature 表的关系是什么?
creature 表(world库)定义生物的基础数据(位置、模板等),creature_respawn 表(characters库)只记录副本实例中生物的重生时间。两者通过 guid 关联。