character_achievement_offline_updates 离线成就更新表
基于 AzerothCore 官方数据库 · Characters 库 · 存储角色离线期间的成就更新
表概述
character_achievement_offline_updates 表存储角色离线期间产生的成就更新。角色登录时处理这些待处理的成就变更。
核心概念:某些成就可能在其他玩家操作时触发(如组队成就、团本成就等),当角色不在线时无法实时更新,先暂存于此表,下次登录时批量处理。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | INT UNSIGNED | NOT NULL | 角色GUID,关联 → characters.guid |
| update_type | TINYINT UNSIGNED | NOT NULL | 更新类型(1=完成成就 2=更新条件进度) |
| arg1 | INT UNSIGNED | NOT NULL | 参数1:type=1时为成就ID;type=2时为条件类型 |
| arg2 | INT UNSIGNED | NULL | 参数2:type=2时为条件的miscValue1 |
| arg3 | INT UNSIGNED | NULL | 参数3:type=2时为条件的miscValue2 |
重要字段详解
update_type - 更新类型
详细说明:标识离线更新的类型。取值
- 1 - COMPLETE_ACHIEVEMENT:离线期间成就被完成。arg1=成就ID
- 2 - UPDATE_CRITERIA:更新成就条件进度。arg1=条件类型,arg2/arg3为具体参数
作用机制
详细说明:角色登录时服务器读取此表并处理。
- 角色登录→读取所有未处理的更新→执行成就更新→清除记录
- 支持跨角色的成就传播(如团队首次通关成就)
- 无主键约束,使用 guid 索引快速查询
SQL示例:查看待处理更新 →
SELECT * FROM character_achievement_offline_updates WHERE guid=1;SQL查询示例
-- 查看某角色的待处理离线成就更新
SELECT guid, update_type, arg1, arg2, arg3,
CASE update_type
WHEN 1 THEN '完成成就'
WHEN 2 THEN '更新进度'
END AS type_desc
FROM character_achievement_offline_updates
WHERE guid = 1;-- 清空角色的离线成就更新
DELETE FROM character_achievement_offline_updates WHERE guid = 1;常见问题
Q: 为什么需要离线成就更新机制?
某些成就由其他玩家操作触发(如团队首领首杀、公会成就等),目标角色可能不在线。此表确保离线角色也能正确获得成就。
Q: 此表的数据何时被清除?
角色登录后,服务器读取并处理所有待处理的离线更新,处理完毕后会清除该角色的所有记录。