npc_trainer表是AzerothCore中控制NPC训练师教授技能和法术的核心表格。它定义了哪些NPC可以教授哪些技能,以及学习这些技能的条件和费用。这个表格是游戏技能学习系统的重要组成部分。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
ID | MEDIUMINT UNSIGNED | 0 | NPC的模板ID,对应creature_template.entry |
SpellID | MEDIUMINT UNSIGNED | 0 | 教授的法术ID,对应spell表或DBC中的法术 |
MoneyCost | INT UNSIGNED | 0 | 学习该法术所需的金币费用(铜币) |
ReqSkillLine | SMALLINT UNSIGNED | 0 | 需要的技能线ID,对应SkillLine.dbc |
ReqSkillRank | SMALLINT UNSIGNED | 0 | 需要的技能等级 |
ReqAbility1 | MEDIUMINT UNSIGNED | 0 | 前置技能1的法术ID |
ReqAbility2 | MEDIUMINT UNSIGNED | 0 | 前置技能2的法术ID |
ReqAbility3 | MEDIUMINT UNSIGNED | 0 | 前置技能3的法术ID |
ReqLevel | TINYINT UNSIGNED | 0 | 学习该技能需要的最低等级 |
VerifiedBuild | SMALLINT | 1 | 验证版本号 |
指定哪个NPC模板可以作为训练师。这个值必须对应creature_template表中存在的entry值。
常见值:
指定训练师教授的具体法术或技能。必须对应有效的法术ID。
技能类型:
学习该法术所需的金币费用,以铜币为单位。
费用参考:
指定学习该技能需要的技能线。对应SkillLine.dbc文件中的ID。
常见技能线:
学习该技能需要的前置技能等级。
技能等级:
学习该技能前必须先掌握的其他技能。可以设置最多3个前置技能。
学习该技能需要的最低角色等级。
为法师训练师添加火球术技能:
INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel)
VALUES (1317, 133, 100, 0, 0, 1);
为锻造训练师添加高级锻造配方:
INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel)
VALUES (5164, 9785, 50000, 164, 200, 35);
添加需要掌握基础技能才能学习的高级技能:
INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqAbility1, ReqLevel)
VALUES (1317, 2136, 1000, 133, 6);
从训练师那里移除特定技能:
DELETE FROM npc_trainer
WHERE ID = 1317 AND SpellID = 133;
SELECT nt.*, st.name
FROM npc_trainer nt
LEFT JOIN spell_template st ON nt.SpellID = st.ID
WHERE nt.ID = NPC_ID
ORDER BY nt.ReqLevel, nt.MoneyCost;
SELECT nt.*, ct.name
FROM npc_trainer nt
LEFT JOIN creature_template ct ON nt.ID = ct.entry
WHERE nt.SpellID = 法术ID;
不需要完全重启服务器,但需要重新加载训练师数据:
.reload npc_trainer
职业限制通常在creature_template表的npcflag字段中设置,或者通过conditions表来实现复杂的条件判断。
可能的原因包括:
npc_trainer表经常与以下表格配合使用: