achievement_reward表

概述

achievement_reward表是AzerothCore中定义成就奖励的重要表格。它存储了玩家完成特定成就后获得的各种奖励,包括称号、物品、金币、邮件等,是成就系统奖励机制的核心数据表。

表格作用

表格结构

字段名 数据类型 默认值 说明
ID MEDIUMINT UNSIGNED 0 成就ID
详细说明:成就的唯一标识符,这是主键。对应Achievement.dbc中的成就ID。
常见成就类型:
  • 等级成就:达到特定等级
  • 探索成就:探索特定区域或地点
  • 副本成就:完成副本或特殊挑战
  • PvP成就:战场或竞技场成就
  • 专业成就:专业技能相关成就
  • 任务成就:完成特定数量或类型的任务
  • 收集成就:收集宠物、坐骑、物品等
TitleA MEDIUMINT UNSIGNED 0 联盟称号ID
详细说明:联盟玩家完成成就后获得的称号ID。对应CharTitles.dbc中的称号ID。
称号系统:
  • 称号显示在玩家名字前后
  • 玩家可以选择显示或隐藏称号
  • 某些称号有特殊的颜色或效果
  • 称号是玩家身份和成就的象征

常见称号类型:
  • 等级称号:如"勇士"、"英雄"
  • 职业称号:如"大法师"、"圣骑士"
  • PvP称号:如"角斗士"、"征服者"
  • 副本称号:如"屠龙者"、"救世主"
TitleH MEDIUMINT UNSIGNED 0 部落称号ID
详细说明:部落玩家完成成就后获得的称号ID。通常与联盟称号相同,但某些阵营特定成就可能有不同称号。
阵营差异:
  • 大多数成就的联盟和部落称号相同
  • 某些阵营特定成就有独特称号
  • PvP相关成就可能有阵营特色称号
ItemID MEDIUMINT UNSIGNED 0 奖励物品ID
详细说明:完成成就后获得的物品ID。对应item_template表中的物品。
奖励物品类型:
  • 坐骑:特殊的成就坐骑
  • 宠物:收集类宠物
  • 装备:纪念性装备或实用装备
  • 消耗品:特殊的药剂或食物
  • 玩具:娱乐性物品
  • 徽章:成就纪念品

物品特点:
  • 通常是绑定物品
  • 具有纪念意义
  • 可能有特殊外观或效果
Sender MEDIUMINT UNSIGNED 0 邮件发送者ID
详细说明:发送奖励邮件的NPC ID。如果设置了此值,奖励将通过邮件系统发送。
邮件系统:
  • 自动发送奖励邮件给玩家
  • 邮件包含奖励物品和金币
  • 可以包含祝贺信息
  • 玩家需要到邮箱领取奖励

常见发送者:
  • 国王/酋长:重要成就的祝贺
  • 导师NPC:专业或职业相关成就
  • 系统邮件:自动发送的奖励
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;

奖励设计原则

奖励类型选择

平衡考虑

邮件系统集成

邮件发送机制

常见问题

为什么有些成就没有奖励?

不是所有成就都需要物质奖励。有些成就本身就是奖励,如探索成就或统计成就。

如何设计合适的成就奖励?

考虑成就的难度、稀有性和意义。重要成就给予称号,收集成就给予相关物品,挑战成就给予纪念品。

邮件奖励何时发送?

通常在玩家完成成就后立即发送,但也可以设置延迟发送以增加仪式感。

相关表格