📋 表结构

字段名 数据类型 默认值 说明
id MEDIUMINT UNSIGNED 0 生物模板ID,对应creature_template.entry
quest MEDIUMINT UNSIGNED 0 任务ID,对应quest_template.ID

🔍 核心字段详解

id - 生物模板ID

字段说明:指定哪个NPC可以结束任务,这是复合主键的一部分
取值范围:1 - 16777215
关联关系:必须对应creature_template表中存在的entry

NPC要求:

quest - 任务ID

字段说明:指定哪个任务可以在此NPC处结束,这是复合主键的一部分
取值范围:1 - 16777215
关联关系:必须对应quest_template表中存在的ID

任务状态要求:

💡 实际案例

基础 为NPC添加单个任务结束

NPC 12345可以接受任务 1001的提交

INSERT INTO creature_questender VALUES(12345, 1001);

批量 为NPC添加多个任务结束

NPC 12345可以接受任务 1001、1002、1003的提交

INSERT INTO creature_questender VALUES (12345, 1001), (12345, 1002), (12345, 1003);

共享 多个NPC接受同一任务

任务 1001可以在NPC 12345或12346处提交

INSERT INTO creature_questender VALUES (12345, 1001), (12346, 1001);

完整 同一NPC发放和结束任务

NPC 12345既发放任务1001,也接受任务1001的提交

-- 发放任务 INSERT INTO creature_queststarter VALUES(12345, 1001); -- 结束任务 INSERT INTO creature_questender VALUES(12345, 1001);

任务链 不同NPC发放和结束

任务1001由NPC A发放,但需要在NPC B处提交

-- NPC A发放任务 INSERT INTO creature_queststarter VALUES(12345, 1001); -- NPC B结束任务 INSERT INTO creature_questender VALUES(12346, 1001);

⚙️ 配置要求

NPC基础配置

-- NPC必须设置任务给予者标志 UPDATE creature_template SET npcflag = npcflag | 2 WHERE entry = 12345; -- 设置合适的子名称 UPDATE creature_template SET subname = '任务提交者' WHERE entry = 12345; -- 配置对话菜单 UPDATE creature_template SET gossip_menu_id = 50001 WHERE entry = 12345;

任务完成流程

玩家完成任务后:

❓ 常见问题

为什么NPC不显示任务完成标识?

检查以下配置:

  • creature_template.npcflag是否包含2 (任务给予者标志)
  • creature_questender表中是否有对应记录
  • 任务是否已经完成所有目标
  • 玩家是否满足任务的完成条件
一个任务可以有多个结束者吗?

可以。一个任务可以在多个不同的NPC处结束,这在某些特殊任务中很有用,例如护送任务可能在目的地NPC处结束。

如何设置任务链?

通过quest_template表的NextQuestId字段设置后续任务,结合creature_questender和creature_queststarter表控制任务流程。

⚡ 快速参考

关键字段

id生物模板ID
quest任务ID

NPC标志要求

npcflag必须包含2
gossip_menu_id建议配置

任务标识

黄色问号任务可完成
灰色问号任务未完成

🔗 相关表格