character_achievement_progress 成就进度表
基于 AzerothCore 官方数据库 · Characters 库 · 记录角色成就条件进度
表概述
character_achievement_progress 表存储角色在各成就条件(criteria)上的实时进度。是成就系统追踪进度的核心表。
核心概念:每个成就由多个条件(criteria)组成,每个条件有进度计数器。例如"造成100000点伤害"成就,每造成伤害就更新 counter 值。counter 达到目标值时成就完成。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | INT UNSIGNED | NOT NULL | 角色GUID,关联 → characters.guid |
| criteria | SMALLINT UNSIGNED | NOT NULL | 成就条件ID → Achievement_Criteria.dbc |
| counter | INT UNSIGNED | NOT NULL | 当前进度值 |
| date | INT UNSIGNED | 0 | 最后更新时间(Unix时间戳) |
重要字段详解
counter - 进度计数器
详细说明:记录成就条件的当前进度值。
- 累计类型:如"造成100000伤害",counter记录已造成的伤害
- 计数类型:如"完成50个任务",counter记录已完成数
- 达到目标值后成就完成,记录移到 character_achievement 表
criteria - 成就条件ID
详细说明:对应 Achievement_Criteria.dbc 中的条件定义。
- 每个成就可以有多个条件
- 每个条件有独立的计数器
- 所有条件满足后成就才完成
SQL示例:查看角色成就进度 →
SELECT * FROM character_achievement_progress WHERE guid=1 ORDER BY counter DESC;SQL查询示例
-- 查看角色所有接近完成的成就(进度>=80%)
SELECT cap.criteria, cap.counter
FROM character_achievement_progress cap
WHERE cap.guid = 1
ORDER BY cap.counter DESC
LIMIT 20;-- 重置角色所有成就进度
DELETE FROM character_achievement_progress WHERE guid = 1;-- 统计某成就条件的平均进度
SELECT criteria, AVG(counter) AS avg_progress
FROM character_achievement_progress
GROUP BY criteria;常见问题
Q: 成就完成后进度会被删除吗?
是的。成就一旦完成,所有相关 criteria 的进度记录会被清除,完成记录移至 character_achievement 表。
Q: 如何查看角色某一成就还需要多少进度?
需关联 Achievement_Criteria.dbc 表:SELECT cap.criteria, cap.counter, ac.requiredCount FROM character_achievement_progress cap JOIN Achievement_Criteria ac ON cap.criteria=ac.ID WHERE cap.guid=1;