C_TaskQuest.GetQuestInfoByQuestID(questID) 问题

Issue with C_TaskQuest.GetQuestInfoByQuestID(questID)

我正在练习为魔兽世界制作插件。我试图通过从 Wow 的 API 检索信息并在框架中显示来显示任务标题。我可以显示任务是否已经完成或者不是很好,但是当我尝试使用 C_TaskQuest.GetQuestInfoByQuestID(questID) 端点时;没有任何内容打印到屏幕上。

local function questStatus()
    for questID = 1, #array do
        local y = topY - (questID * 15 - 20)
        local fontString = UIConfig:CreateFontString(nil, "ARTWORK")
        fontString:SetFont("Fonts\ARIALN.ttf", 13, "OUTLINE")
            fontString:SetText(C_TaskQuest.GetQuestInfoByQuestID(array[questID]))
            fontString:SetPoint("TOPLEFT", topX, y)
    end
end

我在聊天框中遇到的错误是

7x Usage: local questTitle, factionID, capped, displayAsObjective = C_TaskQuest.GetQuestInfoByQuestID(questID)
[string "=[C]:"]: in function 'GetQuestInfoByQuestID'
[string "@My-Addon\Core.lua"]:66: in main chunk

感谢任何帮助,谢谢!

如第一行错误所示;
C_TaskQuest.GetQuestInfoByQuestID(questID) 将 return 所有这些值:
questTitle, factionID, capped, displayAsObjective

您必须选择要设置的值,因为它无法为这种 return 类型(包含多个值的列表)设置文本。这是第一个 returned,但它也会 return 其他值 afaik。

我假设你想要 questTitle,所以要在不使用像 select() 这样的附加函数的情况下得到它,你会评论(或删除)您的 SetText 行并改用以下 2 行之一:

local questTitle, _, _, _ = C_TaskQuest.GetQuestInfoByQuestID(array[questID]) -- get quest title, other values to dummy locals
fontString:SetText(questTitle) -- set the text to the value of questTitle
-- fontString:SetText(C_TaskQuest.GetQuestInfoByQuestID(array[questID])) ORIGINAL


-- version using select(number, values)
fontString:SetText(select(1,C_TaskQuest.GetQuestInfoByQuestID(array[questID]))) -- set the text to the value of questTitle -- extra function usage is no good if done often!

希望对您有所帮助!

C_TaskQuest.GetQuestInfoByQuestID() 仅 returns 适合世界任务的值,但您可以使用 C_QuestLog.GetQuestInfo() 代替。注意数据还是要缓存的,第一次要等到QUEST_LOG_UPDATE事件

才可用

https://www.townlong-yak.com/framexml/go/QuestUtils_GetQuestName