📋 表结构

字段名 数据类型 默认值 说明
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_queststarter VALUES(12345, 1001);

批量 为NPC添加多个任务发放

NPC 12345可以发放任务 1001、1002、1003

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

共享 多个NPC发放同一任务

任务 1001可以从NPC 12345或12346处接受

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

任务链 创建线性任务链

任务1完成后才能接任务2,任务2完成后才能接任务3

-- 任务1由NPC A发放 INSERT INTO creature_queststarter VALUES(12345, 1001); -- 任务2由NPC B发放,需要完成任务1(在quest_template设置PrevQuestId=1001) INSERT INTO creature_queststarter VALUES(12346, 1002); -- 任务3由NPC C发放,需要完成任务2(在quest_template设置PrevQuestId=1002) INSERT INTO creature_queststarter VALUES(12347, 1003);

⚙️ 配置要求

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; -- 设置友好阵营 UPDATE creature_template SET faction = 35 WHERE entry = 12345;

任务显示条件

玩家必须满足以下条件才能看到任务:

❓ 常见问题

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

检查以下配置:

  • creature_template.npcflag是否包含2 (任务给予者标志)
  • creature_queststarter表中是否有对应记录
  • 玩家是否满足任务的接受条件
  • 任务是否已经被玩家完成或正在进行中
  • NPC的阵营是否允许玩家交互
如何设置日常任务?

在quest_template表中设置任务类型:

UPDATE quest_template SET Flags = Flags | 4096 WHERE ID = 任务ID;
如何限制任务只对特定职业开放?
-- 限制只有战士(1)和圣骑士(2)可以接受 UPDATE quest_template SET RequiredClasses = 3 WHERE ID = 任务ID;

⚡ 快速参考

关键字段

id生物模板ID
quest任务ID

NPC标志要求

npcflag必须包含2
gossip_menu_id建议配置
faction建议友好(35)

任务类型

普通一次性任务
日常Flags=4096
周常Flags=8192

🔗 相关表格