pet_spell 宠物法术表
基于 AzerothCore 官方数据库 · Characters 库 · 存储宠物已学会的法术/技能
表概述
pet_spell 表存储宠物已学会的法术和技能,以及当前的激活状态。类似于 character_spell 但用于宠物系统。
核心概念:宠物(猎人宠物、术士恶魔)拥有的主动性/被动性技能都记录在此。active 字段控制法术是否被宠物自动施放。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | INT UNSIGNED | 0 | 宠物GUID → character_pet.id |
| spell | INT UNSIGNED | 0 | 法术ID → Spell.dbc |
| active | TINYINT UNSIGNED | 0 | 法术激活状态(0=关闭 1=激活) |
重要字段详解
active - 自动施放状态
详细说明:控制宠物技能是否处于自动施放状态。状态值
- 0 (关闭):不会自动使用,需要手动命令
- 1 (激活/自动施放):宠物会智能地自动使用
- 玩家可以通过宠物动作条切换此状态(右键点击技能图标)
spell - 法术ID
详细说明:对应 Spell.dbc 中的法术ID。
- 包含宠物的所有技能:攻击技能、增益、嘲讽、特殊技能等
- 与 guid 组成联合主键,确保同一宠物不会重复学习同一技能
- 猎人宠物训练和术士宠物会有不同的技能集合
SQL示例:查看宠物技能 →
SELECT ps.spell, ps.active, s.SpellName FROM pet_spell ps JOIN world.spell_dbc s ON ps.spell=s.Id WHERE ps.guid=宠物GUID;SQL查询示例
-- 查看某宠物的所有技能及自动施放状态
SELECT spell, active,
CASE active WHEN 1 THEN '自动' ELSE '手动' END AS auto_cast
FROM pet_spell
WHERE guid = 宠物GUID
ORDER BY spell;-- 给宠物添加新技能
INSERT INTO pet_spell (guid, spell, active) VALUES (宠物GUID, 法术ID, 1);-- 启用宠物所有自动施放技能
UPDATE pet_spell SET active = 1 WHERE guid = 宠物GUID;常见问题
Q: 宠物技能自动施放不生效怎么办?
检查 active 字段是否为1。手动设置:UPDATE pet_spell SET active=1 WHERE guid=宠物GUID AND spell=技能ID;
Q: 宠物的技能等级如何体现?
Spell.dbc 中不同等级是不同的法术ID。当宠物升级时可以学习更高等级的同名技能(不同spell ID)。