gameobject_respawn - 游戏对象重生计时表
基于 AzerothCore Characters 数据库 · 副本内宝箱/矿点/门等GO重生时间表
📋 表概述
gameobject_respawn 表记录副本实例中游戏对象(GameObject)的重生倒计时。当宝箱被打开、矿点被采集或可交互对象被使用后,其重生时间记录在此表中。此表与 creature_respawn 结构相同,属于Grid加载系统。
- 宝箱拾取后重生
- 矿点/草药重生
- 可交互对象重置
- 副本实例区分
联合主键 (guid, instanceId),同一游戏对象在不同副本实例中独立计算重生时间。属于 Grid Loading System。
📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | int UNSIGNED | 0 | 游戏对象GUID(gameobject.guid,主键1) |
| respawnTime | int UNSIGNED | 0 | 重生时间(Unix时间戳) |
| mapId | smallint UNSIGNED | 0 | 所在地图ID |
| instanceId | int UNSIGNED | 0 | 副本实例ID(主键2) |
🔍 重要字段详解
🎯 guid - 游戏对象标识
详细说明:对应 world 库 gameobject 表中的游戏对象GUID。
- 包括宝箱、矿点、草药、门、控制台等可交互对象
- 采集/使用/打开后记录重生时间
- 副本重置时自动清除副本中的GO重生记录
⏱️ respawnTime - 重生时间
详细说明:记录游戏对象下次可用的Unix时间戳。
- 宝箱被打开后需等待 respawnTime 后才能再次打开
- 矿点/草药采集后按配置时间重生
- 副本中某些特殊GO(如奥妮克希亚宝箱)每周重置一次
💡 立即刷新某宝箱:
DELETE FROM gameobject_respawn WHERE guid = X AND instanceId = Y;🗺️ mapId / instanceId - 地点区分
详细说明:精确标识GO所在位置。
- instanceId=0 → 世界地图上的GO(如野外矿点)
- instanceId>0 → 副本实例中的GO
- mapId 辅助标识地图区域
💡 SQL示例
示例1:查询某副本实例中的GO重生状态
SELECT
guid, mapId, instanceId,
FROM_UNIXTIME(respawnTime) AS respawn_at,
TIMESTAMPDIFF(SECOND, NOW(), FROM_UNIXTIME(respawnTime)) AS sec_remaining
FROM gameobject_respawn
WHERE instanceId = 42
ORDER BY respawnTime;示例2:立即刷新所有已采集的矿点
DELETE FROM gameobject_respawn
WHERE instanceId = 0
AND respawnTime > UNIX_TIMESTAMP();❓ 常见问题
Q1: 宝箱被打开后没有重生怎么办?
首先在 gameobject_respawn 表中检查该 guid 的记录。如果 respawnTime 异常大,可删除该记录强制重生。团队副本的宝箱在副本重置时自动刷新。
Q2: gameobject_respawn 和 creature_respawn 结构一样,为什么不合并?
虽然结构相同,但两种对象类型(生物/GO)的重生逻辑和管理策略不同,分开存储便于模块化管理和性能优化。