表概述

pet_spell_cooldown 表存储宠物各个技能的冷却时间和分类冷却。用于追踪宠物技能何时可以再次使用。

核心概念:宠物技能使用后有冷却时间。此表存储每个宠物每个技能的冷却结束时间戳,以及技能冷却分类(category),实现共享冷却。

表结构

字段名数据类型默认值说明
guidINT UNSIGNED0宠物GUID → character_pet.id
spellINT UNSIGNED0技能ID → Spell.dbc
categoryINT UNSIGNEDNULL冷却分类ID(共享冷却组)
timeINT UNSIGNED0冷却结束时间戳(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冷却(共享冷却)会影响所有属于同一分类的技能,使用其中任何一个都会让同组所有技能进入冷却。