creature_questender表是AzerothCore中定义哪些NPC可以结束(完成)特定任务的关联表。它建立了生物模板与任务之间的结束关系,控制玩家可以在哪些NPC处提交完成的任务。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
id | MEDIUMINT UNSIGNED | 0 | 生物模板ID,对应creature_template.entry |
详细说明:生物模板的ID,指定哪个NPC可以结束任务。这是复合主键的一部分。
取值范围:1 - 16777215 关联关系:
NPC要求:
|
|||
quest | MEDIUMINT UNSIGNED | 0 | 任务ID,对应quest_template.ID |
详细说明:任务的ID,指定哪个任务可以在此NPC处结束。这是复合主键的一部分。
取值范围:1 - 16777215 关联关系:
任务类型支持:
任务状态要求:
|
INSERT INTO creature_questender (id, quest) VALUES (12345, 1001);
INSERT INTO creature_questender (id, quest) VALUES
(12345, 1001),
(12345, 1002),
(12345, 1003),
(12346, 1001);
SELECT cq.quest, qt.LogTitle
FROM creature_questender cq
JOIN quest_template qt ON cq.quest = qt.ID
WHERE cq.id = 12345;
SELECT cq.id, ct.name, ct.subname
FROM creature_questender cq
JOIN creature_template ct ON cq.id = ct.entry
WHERE cq.quest = 1001;
SELECT qt.ID, qt.LogTitle
FROM quest_template qt
LEFT JOIN creature_questender cq ON qt.ID = cq.quest
WHERE cq.quest IS NULL;
-- NPC必须设置任务给予者标志
UPDATE creature_template
SET npcflag = npcflag | 2
WHERE entry = 12345;
-- 为NPC配置对话菜单
UPDATE creature_template
SET gossip_menu_id = 50001
WHERE entry = 12345;
检查以下配置:
可以。一个任务可以在多个不同的NPC处结束,这在某些特殊任务中很有用。
通过quest_template表的NextQuestId字段设置后续任务,结合creature_questender和creature_queststarter表控制任务流程。
删除记录后,玩家将无法在对应NPC处完成任务,可能导致任务无法提交。
-- 检查引用不存在NPC的记录
SELECT cq.* FROM creature_questender cq
LEFT JOIN creature_template ct ON cq.id = ct.entry
WHERE ct.entry IS NULL;
-- 检查引用不存在任务的记录
SELECT cq.* FROM creature_questender cq
LEFT JOIN quest_template qt ON cq.quest = qt.ID
WHERE qt.ID IS NULL;
SELECT cq.id, ct.name, COUNT(cq.quest) as quest_count
FROM creature_questender cq
JOIN creature_template ct ON cq.id = ct.entry
GROUP BY cq.id, ct.name
ORDER BY quest_count DESC;