View Single Post
04-08-24, 06:53 AM   #9
Hubb777
A Flamescale Wyrmkin
 
Hubb777's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2024
Posts: 122
Many thanks for the help. I still managed to do it using your code again + OnUpdate
Lua Code:
  1. local addonName, addon = ...
  2. local frame = CreateFrame("Frame", "QuestCompletionFrame", UIParent)
  3. frame:SetSize(100, 100)
  4. frame:SetPoint("CENTER")
  5. frame:EnableMouse(true)
  6. frame:SetMovable(true)
  7. frame:RegisterForDrag("LeftButton")
  8. frame:SetScript("OnDragStart", frame.StartMoving)
  9. frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
  10.  
  11. local text = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
  12. text:SetPoint("CENTER")
  13.  
  14. local Quests_Completed = Quests_Completed or {}
  15.  
  16. local function QuestTurnedIn(...)
  17.     local questID, xpReward, moneyReward = ...
  18.     local isCompleted = C_QuestLog.IsQuestFlaggedCompleted(questID)   -- Returns true
  19.     print("Quest: ", questID,"XP: ", xpReward,"Money: ", moneyReward,"Completed: ",isCompleted)
  20.     Quests_Completed[questID].Completed = isCompleted
  21. end
  22.  
  23. local function QuestAccepted(...)
  24.     local questID = ...
  25.     local questLogIndex = C_QuestLog.GetLogIndexForQuestID(questID)
  26.     local info = { C_QuestLog.GetInfo(questLogIndex) }
  27.     print("Accepted Quest: ", questID, info["title"])
  28.     Quests_Completed[questID] = info
  29. end
  30.  
  31. frame:SetScript("OnEvent", function(self, event, ...)
  32.     if event == "PLAYER_LOGIN" then
  33.         self.elapsed = 0 -- Initialize elapsed time
  34.         self:RegisterEvent("QUEST_TURNED_IN")
  35.         self:RegisterEvent("QUEST_ACCEPTED")
  36.     end
  37. end)
  38.  
  39. frame:SetScript("OnUpdate", function(self, elapsed)
  40.     self.elapsed = self.elapsed + elapsed
  41.     if self.elapsed >= 1 then -- Check every 1 second
  42.         local completedQuests = {}
  43.         local questIDs = {70893, 71995}
  44.  
  45.         for _, questID in ipairs(questIDs) do
  46.             local isCompleted = C_QuestLog.IsQuestFlaggedCompleted(questID)
  47.             completedQuests[questID] = isCompleted
  48.         end
  49.  
  50.         local localization = {
  51.             ["enUS"] = {
  52.                 ["quest70893"] = "|cFFDEB887Community Feast:|r",
  53.                 ["quest71995"] = "|cFFDEB887Trial of the Elements:|r",
  54.                 ["yes"] = "|cFF1EFF00Complete|r",
  55.                 ["no"] = "|cFFDC143CIncomplete|r"
  56.             }
  57.         }
  58.  
  59.         local locale = GetLocale()
  60.         local locStrings = localization[locale] or localization["enUS"]
  61.  
  62.         local questStatus = locStrings["quest70893"] .. " "
  63.         if completedQuests[70893] then
  64.             questStatus = questStatus .. locStrings["yes"]
  65.         else
  66.             questStatus = questStatus .. locStrings["no"]
  67.         end
  68.  
  69.         questStatus = questStatus .. "\n" .. locStrings["quest71995"] .. " "
  70.         if completedQuests[71995] then
  71.             questStatus = questStatus .. locStrings["yes"]
  72.         else
  73.             questStatus = questStatus .. locStrings["no"]
  74.         end
  75.  
  76.         text:SetText(questStatus)
  77.        
  78.         self.elapsed = 0 -- Reset elapsed time
  79.     end
  80. end)
  81.  
  82. frame:RegisterEvent("PLAYER_LOGIN")
  Reply With Quote