mcpField
W
wow-api-encounters

wow-api-encounters

github.com/jburlison开发4636 次安装37 周前更新
代码仓库

关于 wow-api-encounters

面向《World of Warcraft》正式服的 API 参考 skill,涵盖首领日志、史诗钥石、场景、团队副本进度和赛季数据。它整理相关函数、返回值与用法示例,供开发这些游戏系统的人员查阅。

主要功能

  1. 01首领日志与首领数据
  2. 02战利品、技能和难度查询
  3. 03史诗钥石与地下城记录
  4. 04场景与地下城进度
  5. 05团队副本进度与赛季数据

适用场景

  1. 01查阅首领和战利品 API
  2. 02构建史诗钥石信息显示
  3. 03读取场景或地下城进度
  4. 04检查已保存的团队副本进度

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jburlison/wowaddonapiagents --skill wow-api-encounters

安装后在 Claude Code 中输入/wow-api-encounters确认已加载。

详细介绍

遭遇 API(正式服 — Patch 12.0.0)

遭遇日志、史诗钥石、地下城、副本、团队副本进度和赛季的综合参考。

来源: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API 截至: Patch 12.0.0(Build 65655)— 2026 年 1 月 28 日 范围: 仅限正式服。


范围

  • 遭遇日志 — 首领数据库、战利品列表、技能
  • C_ChallengeMode — M+ 钥石、词缀、计时器
  • C_MythicPlus — 每周 M+ 记录、评分、赛季内容
  • ScenarioInfo — 场景、地下堡、阶段
  • InstanceLeaverInfo — 逃兵信息
  • 团队副本进度 — 已保存的副本进度
  • C_SeasonInfo — 赛季内容

遭遇日志

副本导航
函数返回值描述
EJ_GetNumTiers()numTiers资料片等级数量
EJ_GetTierInfo(tierIndex)name, link等级名称和链接
EJ_SelectTier(tierIndex)—选择资料片等级
EJ_GetCurrentTier()tierIndex当前选中的等级
EJ_GetInstanceByIndex(index, isRaid)instanceID, name, description, bgImage, buttonImage1, loreImage, buttonImage2, dungeonAreaMapID, link, shouldDisplayDifficulty指定索引处的副本
EJ_GetNumInstances()—不是函数;遍历 EJ_GetInstanceByIndex,直到返回 nil
EJ_SelectInstance(instanceID)—选择副本
EJ_GetInstanceInfo(instanceID)name, description, bgImage, ...副本信息
EJ_InstanceIsRaid()isRaid所选副本是否为团队副本?
遭遇(首领)数据
函数返回值描述
EJ_GetEncounterInfoByIndex(index)name, description, journalEncounterID, rootSectionID, link, journalInstanceID, dungeonEncounterID, instanceID指定索引处的首领
EJ_GetEncounterInfo(encounterID)name, description, journalEncounterID, rootSectionID, link, journalInstanceID, dungeonEncounterID, instanceID首领信息
EJ_SelectEncounter(encounterID)—选择遭遇
EJ_GetNumEncountersForLootByIndex(index)numEncounters有战利品的首领数量
EJ_GetCreatureInfo(index, encounterID)id, name, description, displayInfo, iconImage, ...生物信息
区段(技能)数据
函数返回值描述
EJ_GetSectionInfo(sectionID)info区段/技能信息
EJ_GetNumSectionsForEncounter(encounterID)numSections区段数量
区段信息字段
  • title — 区段标题
  • description — 区段文本
  • headerType — 标题类型枚举
  • abilityIcon — 图标纹理
  • creatureDisplayID — 显示 ID
  • siblingSectionID — 下一个同级区段
  • firstChildSectionID — 第一个子区段
  • filteredByDifficulty — 是否因难度筛选而隐藏?
  • link — 日志链接
  • startsOpen — 默认展开?
战利品
函数返回值描述
EJ_GetLootInfoByIndex(index)name, icon, slotFilter, armorType, itemID, link, encounterID指定索引处的战利品
EJ_GetNumLoot()numLoot战利品数量
EJ_SetLootFilter(classID, specID)—按职业/专精筛选
EJ_GetLootFilter()classID, specID当前筛选条件
EJ_SetSlotFilter(slotFilter)—按栏位筛选
EJ_GetSlotFilter()slotFilter当前栏位筛选条件
EJ_ResetLootFilter()—清除所有筛选条件
EJ_IsLootListOutOfDate()isOutOfDate是否需要刷新?
难度
函数返回值描述
EJ_SetDifficulty(difficultyID)—设置日志难度
EJ_GetDifficulty()difficultyID当前日志难度
EJ_GetNumEncountersByDifficulty(difficultyID)numEncounters指定难度下的首领数量
搜索
函数返回值描述
EJ_SetSearch(text)—设置搜索文本
EJ_GetSearchResult(index)resultInfo搜索结果
EJ_GetNumSearchResults()numResults结果数量
EJ_IsSearchFinished()isFinished搜索已完成?
EJ_ClearSearch()—清除搜索

C_ChallengeMode — Mythic+ 钥石

钥石信息
函数返回值描述
C_ChallengeMode.GetActiveKeystoneInfo()activeKeystoneLevel, activeAffixIDs, wasActiveKeystoneCharged当前钥石
C_ChallengeMode.GetActiveChallengeMapID()mapID当前 M+ 地图
C_ChallengeMode.GetActiveKeystoneLink()link钥石超链接
C_ChallengeMode.GetSlottedKeystoneInfo()mapID, affixIDs, keystoneLevel已放入的钥石
C_ChallengeMode.HasSlottedKeystone()hasKeystone是否已放入钥石?
C_ChallengeMode.SlotKeystone()slotted放入钥石
C_ChallengeMode.RemoveKeystone()removed移除钥石
地图与词缀数据
函数返回值描述
C_ChallengeMode.GetMapTable()mapIDs所有 M+ 地图
C_ChallengeMode.GetMapUIInfo(mapID)name, id, timeLimit, texture, backgroundTexture地图信息
C_ChallengeMode.GetAffixInfo(affixID)name, description, filedataid词缀信息
C_ChallengeMode.GetCurrentAffixes()affixes本周词缀
完成情况与记录
函数返回值描述
C_ChallengeMode.GetMapPlayerStats(mapID)durationSec, ...个人最佳记录
C_ChallengeMode.GetGuildLeaders()guildLeaders公会最佳通关记录
C_ChallengeMode.GetCompletionInfo()mapID, level, time, onTime, keystoneUpgradeLevels, practiceRun, oldOverallDungeonScore, newOverallDungeonScore, IsMapRecord, IsAffixRecord, PrimaryAffix, isEligibleForScore, members通关数据
C_ChallengeMode.IsChallengeModeActive()isActive是否正在进行 M+?
C_ChallengeMode.GetDeathCount()numDeaths, timeLost死亡次数与损失时间
C_ChallengeMode.GetActiveChallengeModeLevel()level当前钥石层数
奖励
函数返回值描述
C_ChallengeMode.GetChallengeMapInfo(mapID, keystoneLevel)rewardInfo对应钥石层数的奖励

C_MythicPlus — 赛季 M+ 数据

函数返回值描述
C_MythicPlus.GetCurrentSeason()seasonID当前赛季
C_MythicPlus.GetRunHistory(includePreviousWeeks, includeIncompleteRuns)runs通关历史
C_MythicPlus.GetRewardLevelFromKeystoneLevel(keystoneLevel)rewardLevel奖励物品等级
C_MythicPlus.GetOwnedKeystoneLevel()level持有的钥石层数
C_MythicPlus.GetOwnedKeystoneChallengeMapID()mapID持有钥石对应的地下城
C_MythicPlus.GetOwnedKeystoneMapID()mapID持有钥石对应的地图
C_MythicPlus.GetCurrentAffixes()affixIDs当前词缀
C_MythicPlus.GetWeeklyChestRewardLevel()rewardLevel宝库奖励等级
C_MythicPlus.GetSeasonBestAffixScoreInfoForMap(mapID)bestScoreInfo各词缀最佳分数
C_MythicPlus.GetSeasonBestForMap(mapID)intimeInfo, overtimeInfo本赛季最佳通关记录
C_MythicPlus.GetOverallDungeonScore()scoreM+ 总评分
C_MythicPlus.RequestCurrentAffixes()—请求词缀数据
C_MythicPlus.RequestMapInfo()—请求地图数据
C_MythicPlus.RequestRewards()—请求奖励数据
C_MythicPlus.IsDungeonScorable(mapID)isScorable是否可获得评分?

ScenarioInfo — 场景与地下堡

函数返回值描述
C_ScenarioInfo.GetScenarioInfo()scenarioInfo当前场景
C_ScenarioInfo.GetScenarioStepInfo()stepInfo当前步骤
C_ScenarioInfo.GetCriteriaInfo(criteriaIndex)criteriaInfo指定索引处的标准
C_ScenarioInfo.GetCriteriaInfoByStep(stepIndex, criteriaIndex)criteriaInfo步骤标准
C_ScenarioInfo.GetScenarioStepByIndex(index)stepInfo指定索引处的步骤
场景信息字段
  • name — 场景名称
  • currentStage — 当前阶段
  • numStages — 阶段总数
  • flags — 场景标记
  • isComplete — 是否已完成?
  • xp — 经验值奖励
  • money — 金币奖励
  • type — 场景类型
  • area — 区域名称
  • uiTextureKit — UI 纹理套件
步骤信息字段
  • title — 步骤标题
  • description — 步骤描述
  • numCriteria — 标准数量
  • isComplete — 步骤是否完成?
  • isBonusObjective — 是否为奖励目标?
  • isFinal — 是否为最终步骤?
  • weightedProgress — 进度百分比

团队副本锁定(已保存的副本)

函数返回值描述
GetNumSavedInstances()numInstances已保存的副本数量
GetSavedInstanceInfo(index)name, id, reset, difficulty, locked, extended, instanceIDMostSig, isRaid, maxPlayers, difficultyName, numEncounters, encounterProgress, extendDisabled已保存的副本信息
GetSavedInstanceEncounterInfo(index, encounterIndex)bossName, fileDataID, isKilled, isIneligible首领击杀状态
SetSavedInstanceExtend(index, extend)—延长锁定时间
GetNumSavedWorldBosses()count世界首领锁定数量
GetSavedWorldBossInfo(index)name, id, reset世界首领信息
RequestRaidInfo()—请求锁定数据

InstanceLeaverInfo — 逃离者

函数返回值描述
C_InstanceLeaverInfo.GetLeaverInfo()leaverInfo逃离者信息
C_InstanceLeaverInfo.HasLeaverPenalty()hasPenalty是否有逃离惩罚?
C_InstanceLeaverInfo.GetLeaverPenaltyTimeRemaining()seconds剩余时间

C_SeasonInfo — 赛季内容

函数返回值描述
C_SeasonInfo.GetCurrentDisplaySeasonID()seasonID当前显示的赛季
C_SeasonInfo.GetCurrentSeason()seasonID当前赛季
C_SeasonInfo.GetSeasonInfo(seasonID)seasonInfo赛季数据

常见模式

列出冒险指南中的首领
-- Select an instance and list its bosses
EJ_SelectTier(EJ_GetCurrentTier())
EJ_SelectInstance(instanceID)

local index = 1
while true do
    local name, description, encounterID, rootSectionID = EJ_GetEncounterInfoByIndex(index)
    if not name then break end
    print(index, name, "- EncounterID:", encounterID)
    index = index + 1
end
显示 M+ 钥石信息
local function ShowKeystoneInfo()
    local level = C_MythicPlus.GetOwnedKeystoneLevel()
    local mapID = C_MythicPlus.GetOwnedKeystoneChallengeMapID()
    if level and mapID then
        local name = C_ChallengeMode.GetMapUIInfo(mapID)
        print("Keystone:", name, "+", level)
    else
        print("No keystone")
    end
    
    local score = C_MythicPlus.GetOverallDungeonScore()
    print("M+ Rating:", score or 0)
end
检查当前 M+ 进度
local function ShowMythicPlusProgress()
    if not C_ChallengeMode.IsChallengeModeActive() then
        print("Not in an active M+")
        return
    end
    
    local level = C_ChallengeMode.GetActiveChallengeModeLevel()
    local mapID = C_ChallengeMode.GetActiveChallengeMapID()
    local name = C_ChallengeMode.GetMapUIInfo(mapID)
    local deaths, timeLost = C_ChallengeMode.GetDeathCount()
    
    print(name, "+", level)
    print("Deaths:", deaths, "Time lost:", timeLost, "sec")
end
列出已保存的副本
RequestRaidInfo()
-- Wait for UPDATE_INSTANCE_INFO event, then:
local numSaved = GetNumSavedInstances()
for i = 1, numSaved do
    local name, id, reset, difficulty, locked, extended, 
          _, isRaid, maxPlayers, diffName, numEncounters, progress = 
          GetSavedInstanceInfo(i)
    if locked then
        print(name, diffName, progress .. "/" .. numEncounters, 
              "Reset:", SecondsToTime(reset))
    end
end

关键事件

事件负载描述
EJ_LOOT_DATA_RECIEVEDitemID战利品数据已加载
EJ_DIFFICULTY_UPDATEdifficultyID冒险指南难度已更改
CHALLENGE_MODE_STARTmapIDM+ 已开始
CHALLENGE_MODE_COMPLETEDmapIDM+ 已完成
CHALLENGE_MODE_RESETmapIDM+ 已重置
CHALLENGE_MODE_DEATH_COUNT_UPDATED—死亡次数已更改
CHALLENGE_MODE_KEYSTONE_RECEPTABLE_OPEN—力量之泉已开启
CHALLENGE_MODE_KEYSTONE_SLOTTED—钥石已放入
MYTHIC_PLUS_CURRENT_AFFIX_UPDATE—词缀已更新
MYTHIC_PLUS_NEW_WEEKLY_RECORDmapID刷新每周最佳纪录
MYTHIC_PLUS_NEW_SEASON_RECORDmapID刷新赛季最佳纪录
SCENARIO_UPDATE—场景状态已更改
SCENARIO_CRITERIA_UPDATE—标准已更新
SCENARIO_COMPLETED—场景已完成
UPDATE_INSTANCE_INFO—已保存的副本数据
INSTANCE_LOCK_START—已获得副本锁定
INSTANCE_LOCK_STOP—副本锁定已解除
INSTANCE_LOCK_WARNING—副本锁定警告

注意事项与限制

  1. EJ 数据是异步的 — 战利品数据会异步加载。读取战利品前,请等待 EJ_LOOT_DATA_RECIEVED。
  2. 层级选择很重要 — EJ 函数会基于当前选中的层级运行。请务必先设置层级。
  3. M+ 完成数据是临时的 — GetCompletionInfo() 只会在一场挑战结束后立即返回数据。
  4. 放入钥石需要硬件事件 — 玩家必须手动与力量之泉互动。
  5. 延长团队副本锁定 — 必须在锁定有效期间调用 SetSavedInstanceExtend()。
  6. 场景类型各不相同 — 深潜、海岛探险和场景都会使用带有不同类型标记的 ScenarioInfo。
  7. M+ 评分按赛季计算 — GetOverallDungeonScore() 会在每个赛季重置。
  8. RequestRaidInfo() 是异步的 — 读取已保存的副本前,请等待 UPDATE_INSTANCE_INFO。

评论

支持 Markdown