📖 概述

quest_template_addon表存储任务的额外配置信息,包括:

📊 表结构

字段名 数据类型 默认值 说明
ID int UNSIGNED 0 任务ID,对应quest_template.ID (主键)
MaxLevel tinyint UNSIGNED 0 最大可接等级
AllowableClasses int UNSIGNED 0 允许的职业(位掩码)
SourceSpellID int UNSIGNED 0 开始任务时施放的技能ID
PrevQuestID int 0 前置任务ID(正数必须完成,负数必须激活)
NextQuestID int UNSIGNED 0 后续任务ID
ExclusiveGroup int 0 互斥任务组ID(正数可选其一,负数必须全部完成)
RewardMailTemplateID int UNSIGNED 0 奖励邮件模板ID
RewardMailDelay int UNSIGNED 0 奖励邮件延迟时间(秒)
RequiredSkillID smallint UNSIGNED 0 需要的技能ID
RequiredSkillPoints smallint UNSIGNED 0 需要的技能等级
RequiredMinRepFaction smallint UNSIGNED 0 需要的最小声望阵营
RequiredMaxRepFaction smallint UNSIGNED 0 需要的最大声望阵营
RequiredMinRepValue int 0 需要的最小声望值
RequiredMaxRepValue int 0 需要的最大声望值
ProvidedItemCount tinyint UNSIGNED 0 提供的物品数量
SpecialFlags int UNSIGNED 0 特殊标志(位掩码)

🔑 核心字段详解

ID - 任务ID

唯一任务ID,必须与quest_template.ID匹配。这是主键字段。

PrevQuestID - 前置任务

定义任务的前置依赖关系:

ExclusiveGroup - 互斥任务组

定义任务的互斥关系:

注意: 使用ExclusiveGroup的任务必须在pool_template和pool_quest中添加相应条目。

AllowableClasses - 职业限制

使用位掩码定义允许的职业。0表示所有职业都可接取。可组合多个职业值:

职业掩码值
战士1
圣骑士2
猎人4
盗贼8
牧师16
死亡骑士32
萨满祭司64
法师128
术士256
德鲁伊1024

示例: 法师+术士+牧师 = 128+256+16 = 400(布甲职业)

RequiredSkillID & RequiredSkillPoints - 技能要求

定义接取任务需要的专业技能:

示例: 需要采矿技能300级 → RequiredSkillID=186, RequiredSkillPoints=300

RequiredMinRepFaction & RequiredMinRepValue - 声望要求

定义接取任务需要的最小声望:

示例: 需要暴风城崇拜 → RequiredMinRepFaction=72, RequiredMinRepValue=42000

SpecialFlags - 特殊标志

定义任务的特殊行为(位掩码):

标志值说明
1自动完成标志
2任务失败时删除物品
4任务完成时删除物品
8日常任务
16周常任务
32月常任务
64可重复任务
128无声望奖励
256无经验奖励
512无金钱奖励

💡 实际案例

任务链 前置任务示例 - 任务ID 750

必须完成任务747才能接取任务750

-- PrevQuestID=747(必须完成任务747), MaxLevel=5(最高5级可接) DELETE FROM quest_template_addon WHERE ID = 750; INSERT INTO quest_template_addon VALUES (750,5,0,0,747,0,0,0,0,0,0,0,0,0,0,0,0);

职业 职业限制示例 - 任务ID 1598

术士职业任务,只有术士可接(AllowableClasses=256)

-- AllowableClasses=256(术士), PrevQuestID=0(无前置) DELETE FROM quest_template_addon WHERE ID = 1598; INSERT INTO quest_template_addon VALUES (1598,0,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

技能 技能要求示例 - 任务ID 9000

需要采矿技能300级才能接取

-- RequiredSkillID=186(采矿), RequiredSkillPoints=300 DELETE FROM quest_template_addon WHERE ID = 9000; INSERT INTO quest_template_addon VALUES (9000,0,0,0,0,0,0,0,0,186,300,0,0,0,0,0,0);

声望 声望要求示例 - 任务ID 8000

需要暴风城崇拜声望才能接取

-- RequiredMinRepFaction=72(暴风城), RequiredMinRepValue=42000(崇拜) DELETE FROM quest_template_addon WHERE ID = 8000; INSERT INTO quest_template_addon VALUES (8000,0,0,0,0,0,0,0,0,0,0,72,0,42000,0,0,0);

互斥 互斥任务组示例 - 任务ID 1200/1201/1202

三个任务只能选择一个完成(ExclusiveGroup=1200)

-- ExclusiveGroup=1200(同一组只能选其一) DELETE FROM quest_template_addon WHERE ID IN (1200,1201,1202); INSERT INTO quest_template_addon VALUES (1200,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0), (1201,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0), (1202,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0);

日常 日常任务示例 - 任务ID 10000

每日可重复完成的任务(SpecialFlags=8)

-- SpecialFlags=8(日常任务标志) DELETE FROM quest_template_addon WHERE ID = 10000; INSERT INTO quest_template_addon VALUES (10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8);

邮件 奖励邮件示例 - 任务ID 6000

完成任务后延迟1小时发送奖励邮件

-- RewardMailTemplateID=100(邮件模板), RewardMailDelay=3600(延迟1小时) DELETE FROM quest_template_addon WHERE ID = 6000; INSERT INTO quest_template_addon VALUES (6000,0,0,0,0,0,0,100,3600,0,0,0,0,0,0,0,0);

⚡ 快速参考

常用字段组合

任务链PrevQuestID + NextQuestID
职业任务AllowableClasses
专业技能RequiredSkillID + RequiredSkillPoints
声望任务RequiredMinRepFaction + RequiredMinRepValue
互斥任务ExclusiveGroup
日常任务SpecialFlags=8

职业掩码速查

战士=1圣骑=2
猎人=4盗贼=8
牧师=16DK=32
萨满=64法师=128
术士=256德鲁伊=1024

❓ 常见问题

Q: PrevQuestID的正数和负数有什么区别?
A: 正数表示必须完成该前置任务才能接取当前任务;负数表示父任务必须处于激活状态(未完成)才能接取当前任务。
Q: ExclusiveGroup如何使用?
A: 正数表示同一组任务只能选择一个完成(如1200、1201、1202都设置ExclusiveGroup=1200);负数表示同一组任务必须全部完成才能开启后续任务。使用ExclusiveGroup的任务必须在pool_template和pool_quest中添加相应条目。
Q: 如何设置多职业限制?
A: 使用位掩码组合。例如法师+术士+牧师 = 128+256+16 = 400。0表示所有职业都可接取。
Q: SpecialFlags可以组合吗?
A: 可以。例如日常+可重复 = 8+64 = 72。使用位掩码组合多个标志。

🔗 相关表格