pet_spell_cooldown 宠物冷却表
基于 AzerothCore 官方数据库 · Characters 库 · 存储宠物技能的冷却时间
表概述
pet_spell_cooldown 表存储宠物各个技能的冷却时间和分类冷却。用于追踪宠物技能何时可以再次使用。
核心概念:宠物技能使用后有冷却时间。此表存储每个宠物每个技能的冷却结束时间戳,以及技能冷却分类(category),实现共享冷却。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | INT UNSIGNED | 0 | 宠物GUID → character_pet.id |
| spell | INT UNSIGNED | 0 | 技能ID → Spell.dbc |
| category | INT UNSIGNED | NULL | 冷却分类ID(共享冷却组) |
| time | INT UNSIGNED | 0 | 冷却结束时间戳(Unix时间戳) |
重要字段详解
time - 冷却结束时间
详细说明:Unix时间戳,表示技能冷却何时结束,可以再次使用。
- 值为过去时间:冷却已完成,可以立即使用
- 值为未来时间:冷却中,需要等到该时间
- 施放技能后自动更新为 当前时间+冷却时长
category - 共享冷却
详细说明:技能冷却分类,实现同类型技能的共享冷却。
- NULL/0:独立冷却,不影响其他技能
- 相同category值:共享冷却。使用其中任一技能都会让同组其他技能进入冷却
- 例如:宠物多个防御技能可能共享同一冷却分类
SQL示例:查看宠物冷却 →
SELECT * FROM pet_spell_cooldown WHERE guid=宠物GUID;SQL查询示例
-- 查看宠物正在冷却中的所有技能
SELECT psc.spell, psc.category,
(UNIX_TIMESTAMP() - psc.time) AS seconds_remaining
FROM pet_spell_cooldown psc
WHERE psc.guid = 宠物GUID
AND psc.time > UNIX_TIMESTAMP();-- 清除宠物的所有冷却时间
DELETE FROM pet_spell_cooldown WHERE guid = 宠物GUID;-- 清除宠物特定技能的冷却
DELETE FROM pet_spell_cooldown
WHERE guid = 宠物GUID AND spell = 技能ID;常见问题
Q: 宠物技能冷却不正确怎么办?
清空冷却记录:DELETE FROM pet_spell_cooldown WHERE guid=宠物GUID; 让宠物登录时重新计算冷却状态。
Q: category 和普通冷却有什么区别?
普通冷却(spell级别)只影响一个技能。category冷却(共享冷却)会影响所有属于同一分类的技能,使用其中任何一个都会让同组所有技能进入冷却。