📋 表概述

creature_respawn 表记录副本实例中已死亡生物的重生倒计时。当副本中的怪物/生物被击杀后,其重生时间记录在此表中,服务器根据此表决定何时让生物重新出现。主要用于副本实例中的生物重生管理。

联合主键 (guid, instanceId),同一生物在不同副本实例中可以有独立的复活时间。属于 Grid Loading System。

📊 表结构

字段名类型默认值说明
guidint UNSIGNED0生物GUID(creature.guid,主键1)
respawnTimeint UNSIGNED0重生时间(Unix时间戳)
mapIdsmallint UNSIGNED0所在地图ID
instanceIdint UNSIGNED0副本实例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 关联。