achievement_reward表是AzerothCore中定义成就奖励的重要表格。它存储了玩家完成特定成就后获得的各种奖励,包括称号、物品、金币、邮件等,是成就系统奖励机制的核心数据表。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
ID | MEDIUMINT UNSIGNED | 0 | 成就ID |
详细说明:成就的唯一标识符,这是主键。对应Achievement.dbc中的成就ID。
常见成就类型:
|
|||
TitleA | MEDIUMINT UNSIGNED | 0 | 联盟称号ID |
详细说明:联盟玩家完成成就后获得的称号ID。对应CharTitles.dbc中的称号ID。
称号系统:
常见称号类型:
|
|||
TitleH | MEDIUMINT UNSIGNED | 0 | 部落称号ID |
详细说明:部落玩家完成成就后获得的称号ID。通常与联盟称号相同,但某些阵营特定成就可能有不同称号。
阵营差异:
|
|||
ItemID | MEDIUMINT UNSIGNED | 0 | 奖励物品ID |
详细说明:完成成就后获得的物品ID。对应item_template表中的物品。
奖励物品类型:
物品特点:
|
|||
Sender | MEDIUMINT UNSIGNED | 0 | 邮件发送者ID |
详细说明:发送奖励邮件的NPC ID。如果设置了此值,奖励将通过邮件系统发送。
邮件系统:
常见发送者:
|
|||
Subject | VARCHAR(255) | NULL | 邮件主题 |
详细说明:奖励邮件的主题内容。支持本地化字符串。
主题示例:
|
|||
Body | TEXT | NULL | 邮件正文 |
详细说明:奖励邮件的正文内容。可以包含详细的祝贺信息和说明。
正文内容建议:
|
|||
MailTemplateID | MEDIUMINT UNSIGNED | 0 | 邮件模板ID |
详细说明:使用预定义邮件模板的ID。如果设置了此值,将使用模板而不是Subject和Body字段。 |
-- 查看所有有奖励的成就
SELECT ID, TitleA, TitleH, ItemID, Subject
FROM achievement_reward
ORDER BY ID;
-- 查看所有提供称号的成就
SELECT ID, TitleA, TitleH, Subject
FROM achievement_reward
WHERE TitleA > 0 OR TitleH > 0
ORDER BY ID;
-- 查看所有提供物品的成就
SELECT ar.ID, ar.ItemID, it.name as item_name, ar.Subject
FROM achievement_reward ar
LEFT JOIN item_template it ON ar.ItemID = it.entry
WHERE ar.ItemID > 0
ORDER BY ar.ID;
-- 添加新的成就奖励
INSERT INTO achievement_reward
(ID, TitleA, TitleH, ItemID, Sender, Subject, Body)
VALUES
(9001, 100, 100, 19902, 4949, '恭喜您的杰出成就!',
'亲爱的勇士,\n\n恭喜您完成了这项艰难的挑战!作为奖励,请接受这份特殊的礼物。\n\n继续您的冒险之旅吧!\n\n致敬\n国王');
-- 修改成就奖励的物品
UPDATE achievement_reward
SET ItemID = 19903, Subject = '更新的奖励'
WHERE ID = 9001;
不是所有成就都需要物质奖励。有些成就本身就是奖励,如探索成就或统计成就。
考虑成就的难度、稀有性和意义。重要成就给予称号,收集成就给予相关物品,挑战成就给予纪念品。
通常在玩家完成成就后立即发送,但也可以设置延迟发送以增加仪式感。