Thread Tools Display Modes
04-08-24, 06:53 AM   #1
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

WoWInterface » AddOns, Compilations, Macros » AddOn Help/Support » Real time update


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off