用途
wow-api-achievements 是一份面向《魔兽世界》正式服(Retail)插件开发者的 API 参考文档,专门整理成就(Achievement)、统计(Statistics)与成就标准(Achievement Criteria)相关的接口。文档来源为 warcraft.wiki.gg 的 World of Warcraft API 页面,内容截至 Patch 12.0.0(Build 65655,2026 年 1 月 28 日),仅覆盖正式服,不涉及经典服或其他版本。
主要能力
文档按功能模块组织,覆盖以下 API 类别:
- 成就信息:GetAchievementInfo、GetAchievementInfoFromCriteria、GetAchievementLink、GetAchievementNumRewards、GetAchievementReward、GetPreviousAchievement、GetNextAchievement、GetTotalAchievementPoints、GetComparisonAchievementPoints、SetAchievementSearchString、GetAchievementSearchSize、GetAchievementSearchProgress、GetFilteredAchievementID 等,用于获取成就详情、链接、奖励、成就链前后项、总点数以及搜索成就。
- 成就标准:GetAchievementNumCriteria、GetAchievementCriteriaInfo、GetAchievementCriteriaInfoByID,用于获取成就下各标准的描述、类型、完成状态、数量、需求数量、角色名、资产 ID、标准 ID 等。
- 成就分类:GetCategoryList、GetCategoryInfo、GetCategoryNumAchievements、GetAchievementCategory,用于获取分类列表、分类信息、分类下的成就数量与完成情况,以及某成就所属分类。
- 成就对比(观察):GetComparisonStatistic、ClearAchievementComparisonUnit、SetAchievementComparisonUnit,用于设置对比目标并读取其统计数据。
- 统计数据:GetStatistic、GetStatisticsCategoryList、GetCategoryAchievementPoints,用于读取统计值与统计分类。
- 成就追踪:GetTrackedAchievements、GetNumTrackedAchievements、AddTrackedAchievement、RemoveTrackedAchievement、IsTrackedAchievement,用于管理被追踪的成就。
文档还列出了关键事件,包括 ACHIEVEMENT_EARNED、CRITERIA_EARNED、CRITERIA_UPDATE、CRITERIA_COMPLETE、TRACKED_ACHIEVEMENT_LIST_CHANGED、TRACKED_ACHIEVEMENT_UPDATE、ACHIEVEMENT_SEARCH_UPDATED、INSPECT_ACHIEVEMENT_READY、RECEIVED_ACHIEVEMENT_MEMBER_LIST,并给出各事件的载荷说明。
使用方式
文档以函数表形式呈现,每个函数列出签名、返回值与描述,便于开发者按需查阅。同时提供若干常见用法示例代码,包括:检查成就是否完成(IsAchievementDone)、打印成就标准进度(PrintCriteriaProgress)、搜索成就(SearchAchievements)。示例代码展示了如何解构 GetAchievementInfo 的返回值、遍历标准索引、以及处理异步搜索结果。
适用场景
该参考适合开发《魔兽世界》正式服插件的开发者,在需要读取或展示成就信息、统计玩家成就进度、实现成就搜索、追踪成就、对比其他玩家成就数据等场景下查阅使用。
限制与注意事项
文档明确列出若干注意事项:GetAchievementInfo 返回 15 个值,需小心解构,completed 布尔值是第 4 个返回值;公会成就与个人成就需通过 isGuild 参数区分;GetStatistic 返回的是格式化字符串而非数字,必要时用 tonumber() 解析;标准索引从 1 开始,上限为 GetAchievementNumCriteria();部分成就有前后链关系,可用 GetPreviousAchievement()/GetNextAchievement() 处理;成就搜索是异步的,SetAchievementSearchString() 可能不会立即返回全部结果,需等待 ACHIEVEMENT_SEARCH_UPDATED 事件;追踪成就有数量上限;成就对比需要先调用 SetAchievementComparisonUnit() 并等待 INSPECT_ACHIEVEMENT_READY 事件。