Download
(179Kb)
Download
Updated: 10-23-19 07:35 PM
Pictures
File Info
Compatibility:
BfA content patch (8.2.5)
Shadows of Argus (7.3.0)
Tomb of Sargeras (7.2.0)
Return to Karazhan (7.1.5)
Legion (7.0.3)
Updated:10-23-19 07:35 PM
Created:unknown
Downloads:49,850
Favorites:388
MD5:

Urban Achiever  Popular! (More than 5000 hits)

Version: 17.160
by: Syzgyn, Tomate

Urban Achiever is a replacement Achievement frame.

Features

  • Search through all the achievements, statistics, and criteria in game for any term.
  • Sort achievements by name, point value, or completion date
  • Now uses the built in Tracking frame added in 3.1, with additional functionality
  • More information available with less scrolling required.
  • See how far progressed other people are in every achievement, along with the status of individual criteria.
  • Track timed achievements as they start, automatically.


Localization
All localization are now implemented:
  • English
  • French
  • Korean (Thanks to maknae & zubrik)
  • German (Thanks to ElderIlem)
  • Chinese (Thanks to stephenmarquis)
  • Russian (Thanks to osgod)
  • Spanish (Thanks to Phanx)

Known Issues

Sorting isn't working as well as I'd like.
Also you have to specificly bind a key to open the UrbanAchiever frame. It should be at the bottom of your binding menu, in the UrbanAchiever section.

Usage
/urbanachiever or /ua to toggle the options and help.

All the current /commands for the achievement frame will open the new one.

Shift-click achievements to track them, alt-click them on the tracker to remove them.

Feature Requests
Please use the integrated feature request system. It makes my life so much easier.

Bug Reports
Please Use commentaries for any and all bugs. Again, makes my life easier if you do.

17.162
- Update for 8.2.5.
- Update faction achievement list.
- Hide tracking achievement.

17.160
- Update for 7.3.

17.158
- Update for 7.2.5.

17.157
- Update for 7.2.

17.155
- Update for Legion Release.

17.154
- Update for Legion.

16.153
- Update for patch 6.1.

16.152
- Fix too long reward name.
- Fix achievement with status bar criteria and an criteria.
- Category achievement count bar is now clickable.

16.149
- Update for 6.0.
- Update libs.
- Update maximum achievement threshold.
- Update alliance/horde specific achievement.
- Change the account share achievement color to be blue.
- Change the way achievement category status bar counter is displayed on the summary tab.
- Enlarge the display of the criteria list.

15.7
- Fix an issue with auto-tracking timed achievement, weirdly event "TRACKED_ACHIEVEMENT_UPDATE" return 0 for the achievementID when doing new 5.4 cooking dailies.
15.6
- Update specific faction achievement (for patch 5.4).
- Bump toc for patch 5.4.
15.5
- Update specific faction achievement (for patch 5.3).
- Bump toc for patch 5.3.
- Update Ace library.
15.4
- Update specific faction achievement (for patch 5.2).
- Bump toc for patch 5.2.
- Update Ace library.
15.3
- Update specific faction achievement (for patch 5.1).
- Bump toc for patch 5.1.
15.2
- Add a missing specific faction achievement (now get by parsing of wowhead).
15.1
- Add a missing specific faction achievement and add the last id achievement that was missing.
15.0
- Version compatible with MoP (Faction specific achievement updated...).
- Add information concerning account wide achievements.
- Update some status bar skins.
- Category status bar completion are now refresh on display (you don't have to reload the UI)
- Fix some compare bugs.
- Add esES & esMX localization (thanks to Phanx).
14.3
- Fix missing specific faction achievement for World event.
- Add three new achievements (feat of strength).
14.2
- Fix missing specific faction achievement for Darkmoon fair.
- Fix error for united nation guild achievement specific faction.
14.1
- Toc Bump for 4.3.
14.0
- Fix the guild achievement issue (at last).
- Fix category counter in summary.
- Fix achievement link in other frame than default chat frame.
- Add future missing achievement of 4.3.
13.5
- Minor fix in method to display achievement in chat.
- Minor fix in method to remove Quest and achievement directly from tracker.
13.4
- Add missing achievement add in 4.2.0.
- Filter achievement side for 4.2.0 achievement and missing achievement.
13.3
- Add missing achievement add in 4.0.6 and future 4.1.
- Remove last statistic update in summary pannel.
13.2
- Add a specific faction achievement (Wildhammer Tour of Duty/Dragonmaw Tour of Duty)
- Add a specific guild faction achievement (PvP & Wotlk dungeon)
- Criteria is correctly completed in guild tab when it is an achievement.
- Add the information of the guild reputation require for the few guild achievement which require it.
- Add tooltip with date on criteria when it is an achievement.
- For guild achievement it also add player name which achieve this achievement.
- Fix collapse issue with criteria and category total achievement bar in summary category.
- Fix total completed category achievement bar display.
- Fix some localization.
13.1
- Add a new category in the summary "Recent guild achievement".
- Display the the total guild achievement point on the top of the guild tab rather than the total achievement point.
- Display new summary bar for each guild category in the guild tab rather than classic category achievement.
- Localization zhTW & zhCN & deDE for the guild string.
- Remove a debug line which .
13.0
- Add a guild tab (YAY).
- Add some string in the localization.
- Add the german date format.
- Remove the first '0' in the version number.
0.12.11
- Add ruRU localization.
- Add some string for localization.
- Russian localization have date in dd/mm/yy (like French).
0.12.10
- Fix an error with zhTW localization.
0.12.9
- Fix an error with localization.
0.12.8
- Add zhCN localization.
- Add zhTW localization.
- Fix a localization string name.
0.12.7
- Add deDE localization.
0.12.6
- Add specific faction achievement (Fishing & Cooking).
- Add guild specific faction achievement (in the list only, not display).
0.12.5
- Fix bug with missing achievements.
- Fix specific faction achievements of 4.0.3a.
0.12.4
- Fixed koKR localization.
- Added message when trying to follow an already earned achievement.
- Change Feat of strength Shield icon with the expected one.
0.12.3
- Add koKR localization.
0.12.2
- Fix a bug with localization.
0.12.1
- Fix category section background display.
- Add localization capability (need translation).
- Add French localization.
0.11.3
- Fix the shield icon display.
- Fix error when trying to track an already finished achievement. YOU CAN'T do that anymore.
0.11.2
- Fix a bug when your earn an achievement.
0.11.1
- Fix 4.0 Bug. (A big thanks to elaundar)
0.10.1
- Fix a bug with year of the achievement 2010 was noted '010' whereas 2009 was noted '09'.
- Added a format of date for the French client (dd/mm/yy).
0.10.0
- Fix the 'ChatFrameEditBox' bug introduced in 3.3.5.
0.9.9
- Add achivement total bars and counts for each category of achievement (currently not the same count of Original Achivement UI).
- Correct some bugs.
0.9.7c
- All the specifc faction achievements are update now. (I think)
0.9.7b
- More faction specific stuff and getting ready for 3.2.2.
0.9.7a
- Updated faction specific achievements for 3.2, thanks Tomate.
0.9.7
- Updated for 3.2
0.9.6
- Fixed some bugs with old code and the alert buttons
0.9.5
- Updated for 3.1
0.9.4
- Fixed Secure call bug (Thanks Arrowmaster)
0.9.3
- Updated for new achievements added in 3.0.8
- Some minor optimizations and bug fixes.
0.9.2
- Fixed tracked achievements not saving between sessions.
- Tracker now scales correctly between sessions.
- Fixed some text formatting on the tracker.
- Timed achievements are now removed from the tracker after the timer ends.
0.9.1
- Removed a stray print call.
0.9
- Tracked Achievements are now saved between sessions.
- Fixed font clipping and formatting on status bars.
- Added options for detailed criteria and automatic tracking.
- Fixed display bug with category scroll bar.
- Added Timers for timed achievements, updated on the fly.
- Fixed formatting bug with money strings.
- Fixed some sorting bugs.
0.8
- Hooked the Micro Menu Achievement button
- Tracked achievements show a green T next to the button.
- Added options for statistic criteria, money formatting, tracker scaling, and a help file.
- Removed bunches of old code, more optimizations.
0.7.1
- Fixed issue with me being an idiot and uploading the wrong file.
0.7
- Frame will no longer show when other mods inspect someone's achievements
- Stopped errors from being thrown by the default UI
- Achievements are removed from the tracker upon completion.
- Added Panel to integrated UI options
- Opposite faction's achievments should be hidden when not searching or comparing.
0.6
- Various optimizations.
- Added summary progress bar.
- Added slash commands
- Money should format properly now.

0.5
- Category buttons now have textures.
- You can now shift-click achievements with the editbox open to paste them into chat.
- General Bug fixes.

0.4.1
- More Tracker Improvements and bugfixes.
- Hooked the Buttons that popup when you earn a new achievement, they now open the improved frame.

0.4
- Achievement Comparison Fully Implemented, including popup menu injection.
- Achievement Tracker Fully Implemented
- Summary Category Implemented
- Fixed Sorting by date completed, and by comparison date completed

0.3
- Added Keybindings
- Added alot of visual elements
- Massive optimization
Post A Reply Comment Options
Unread 08-28-10, 07:04 PM  
ironrawkfist
A Kobold Labourer

Forum posts: 0
File comments: 15
Uploads: 0
i downloaded this, and nothing happened. i followed all the procedures for installing mods. i even turned off all my other mods in case of conflicts. but my achievment frame hasnt changed. and yes i triple checked. it IS in my addons folders, and i can access the options via interface/addons options.


I figured it out, the Y Hotkey that normally opens the cheevment frame opens the old one. you will have to change ur Y keybinding to the new mod frame
Last edited by ironrawkfist : 08-28-10 at 07:12 PM.
Report comment to moderator  
Reply With Quote
Unread 09-08-10, 09:39 AM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
I had an access to the current cataclysm BETA. (Thanks to WoWInterface)
I will work on the cataclysm compatibility as soon as I successfully copy my rogue on beta server.
Report comment to moderator  
Reply With Quote
Unread 09-16-10, 07:02 AM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
I finally succeed to copy my char (Yesterday!).
For those who cares, I started working on the UA compatibility on cataclysm.
I encounter one issue for the moment, but I think I will succeed to avoid it.
Report comment to moderator  
Reply With Quote
Unread 09-17-10, 04:12 AM  
zerstreuter
A Murloc Raider

Forum posts: 4
File comments: 3
Uploads: 0
Exclamation how to post an achievement to chat ??

hi tomate,

it is nice that "shift-click" ist mark for tracking but ingame is shift-click for post into the chat.

How can i do this now ?

At the moment i can post an achievement only one time - at first using after login.

HELP !

Greetings
z.
Report comment to moderator  
Reply With Quote
Unread 09-21-10, 06:51 AM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
Hi,

I never encounter this issue.

I think an achievement does not get linked if no chat-box is open.
But if a chat-box is open the achievement will not be mark for tracking, It should be link in the open chat-box.

I can't launch the game now but I think it is how it works.
Maybe something brakes this in the last update. I will test it as soon as I can play.

Maybe it is an issue with an other addon which automatically open chat-box when you try to link something. If it is the case, I think you should disable it.
Report comment to moderator  
Reply With Quote
Unread 09-21-10, 03:10 PM  
zerstreuter
A Murloc Raider

Forum posts: 4
File comments: 3
Uploads: 0
Originally posted by Tomate
Hi,

I never encounter this issue.

I think an achievement does not get linked if no chat-box is open.
But if a chat-box is open the achievement will not be mark for tracking, It should be link in the open chat-box.

I can't launch the game now but I think it is how it works.
Maybe something brakes this in the last update. I will test it as soon as I can play.

Maybe it is an issue with an other addon which automatically open chat-box when you try to link something. If it is the case, I think you should disable it.
hi T.

at first , i have no addon what open chatline automaticly.

at second i try to post on diverent ways.

first try to post while chat-line is open - achievement will (dis)marked but no posting

second try shift-click without chat-line and achievement will (dis)marked and no posting.

only directly after login : open achievement window and shift-click on achievement !!
now this achievement will be write into the chat-line and at this moment i´m not able to mark the achievement .

i think there is an big fatal mistake inside the code.

greetings
z.
Report comment to moderator  
Reply With Quote
Unread 09-30-10, 12:12 PM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
I have try you it but I can't reproduce your issue.
It actually works like I explain in my last post.

I really think it is an other addon which cause the issue. Try to link an achievement or track one with all your other addon disable.

After that if your issue persist try to clean your WTF folder.

Finally, if it still persist you are screwed.
Report comment to moderator  
Reply With Quote
Unread 10-07-10, 04:31 AM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
For the Cataclysm compatibility, I think I will not succeed alone.
I will need some help.
I will post on forum to get some help.
Report comment to moderator  
Reply With Quote
Unread 10-07-10, 12:40 PM  
Codex
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 19
File comments: 280
Uploads: 12
It seems if you have carbonite enabled, it breaks achievement tracking
Last edited by Codex : 10-07-10 at 12:41 PM.
Report comment to moderator  
Reply With Quote
Unread 10-16-10, 12:32 AM  
Lightning
A Kobold Labourer

Forum posts: 0
File comments: 14
Uploads: 0
Originally posted by Tomate
For the Cataclysm compatibility, I think I will not succeed alone.
I will need some help.
I will post on forum to get some help.
What kind of help do you need?
... and where?
Report comment to moderator  
Reply With Quote
Unread 10-18-10, 06:15 AM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
Originally posted by Lightning
What kind of help do you need?
... and where?
Yeah I know, I am lazy. I haven't realy the time to work on it.
But, I am encounter two problems.
The fist one a change in the API forbid us to check achievement info on an inexistent achievement ID. To avoid this issue I made a PHP script which dump the current achievement database from WoWhead.
After that I encounter an other issue which I don't know how to deal with.
I will try to open a Topic on the forum and add a link here with the log of the error and the code which produce the error.
Last edited by Tomate : 10-18-10 at 06:24 AM.
Report comment to moderator  
Reply With Quote
Unread 10-18-10, 01:54 PM  
elaundar
A Kobold Labourer

Forum posts: 0
File comments: 24
Uploads: 0
An easier way to handle the GetAchievementInfo problem would be to use pcall to simulate a try/catch. (about 3 places it seems)

+-- local id, name, points, completed, month, day, year, description, _,_, reward = GetAchievementInfo(id)
+local retok, id, name, points, completed, month, day, year, description, _,_, reward = pcall (GetAchievementInfo,id)
+if not retok then return nil end
Report comment to moderator  
Reply With Quote
Unread 10-18-10, 04:17 PM  
elaundar
A Kobold Labourer

Forum posts: 0
File comments: 24
Uploads: 0
Here is a diff (-U5) of the changes I made to get Urban Achiever working again. I was having problems with getting the SetScripts to pass in the args correctly, so I just split them into separate functions.

Awesome add-on Tomate; couldn't stand playing without it. Feel free to use my changes as needed/wanted.


Code:
--- ~/Downloads/UrbanAchiever/Main.lua    2010-08-28 12:18:22.000000000 -0500
+++ Main.lua    2010-10-18 17:15:56.000000000 -0500
@@ -451,12 +451,12 @@
     self:RefreshAchievementButtons("name a")
 end
 
 function self:GetSearchString(id)
     if not type(id) == "number" then return end
-    local id, name, points, completed, month, day, year, description, _,_, reward = GetAchievementInfo(id)
-    if not id then return nil end
+    local retok, id, name, points, completed, month, day, year, description, _,_, reward = pcall (GetAchievementInfo,id)
+    if not retok or not id then return nil end
     if completed then
         if year < 10 then
             year = "0" .. year;    
         end
         if (GetLocale() == "frFR") then
@@ -477,16 +477,32 @@
     end
     --Add all the info to the master list
     return searchStr:lower()
 end
 
-function self:ButtonScroll(arg1, scrollbar, offset)
+function UrbanAchiever_CatButtonScroll(self1, arg1)
     --arg1 = 1 for up, -1 for down
-    if IsShiftKeyDown() then arg1 = arg1 * 5 end    --Shift = longer scroll
-    local sMin, sMax = self.frame[scrollbar]:GetMinMaxValues()
-    self[offset] = math.min(sMax, math.max(sMin, self[offset] + (arg1 * -1)))
-    self.frame[scrollbar]:SetValue(self[offset])
+    if IsShiftKeyDown() then arg1 = arg1 * 5 end    --Shift = longer scroll
+    local sMin, sMax = self.frame.catScroll:GetMinMaxValues()
+    self.catOffset = math.min(sMax, math.max(sMin, self.catOffset+ (arg1 * -1)))
+    self.frame.catScroll:SetValue(self.catOffset)
+end
+
+function UrbanAchiever_AchButtonScroll(self1, arg1)
+    --arg1 = 1 for up, -1 for down
+    if IsShiftKeyDown() then arg1 = arg1 * 5 end    --Shift = longer scroll
+    local sMin, sMax = self.frame.achScroll:GetMinMaxValues()
+    self.achOffset = math.min(sMax, math.max(sMin, self.achOffset+ (arg1 * -1)))
+    self.frame.achScroll:SetValue(self.achOffset)
+end
+
+function UrbanAchiever_CriteriaButtonScroll(self1, arg1)
+    --arg1 = 1 for up, -1 for down
+    if IsShiftKeyDown() then arg1 = arg1 * 5 end    --Shift = longer scroll
+    local sMin, sMax = self.frame.criteriaScroll:GetMinMaxValues()
+    self.criteriaOffset = math.min(sMax, math.max(sMin, self.criteriaOffset+ (arg1 * -1)))
+    self.frame.criteriaScroll:SetValue(self.criteriaOffset)
 end
 
 function self:ToggleFrame()
     if self.frame == nil then self:Initialize("","") end
     if self.frame == nil then return end
@@ -828,25 +844,21 @@
     self.frame.catScroll:SetPoint("TOPLEFT", self.frame.catButtons[2], "TOPRIGHT")
     self.frame.catScroll:SetPoint("BOTTOMLEFT", self.frame.catButtons[#self.frame.catButtons - 1], "BOTTOMRIGHT")
     self.frame.catScroll:SetWidth(16)
     self.frame.catScroll:SetMinMaxValues(0,0)
     self.frame.catScroll:SetValueStep(1)
-    self.frame.catScroll:SetScript("OnValueChanged", function()
-        self:OnCatScroll()
-    end)
+    self.frame.catScroll:SetScript("OnValueChanged", UrbanAchiever_OnCatScroll)
     self.frame.catScroll:SetValue(1)
     
     --Achievement Button Scroll Bar
     self.frame.achScroll = CreateFrame("Slider", "$parentAchSlider", self.frame, "UIPanelScrollBarTemplate")
     self.frame.achScroll:SetPoint("TOPLEFT", self.frame.achButtons[2], "TOPRIGHT")
     self.frame.achScroll:SetPoint("BOTTOMLEFT", self.frame.achButtons[#self.frame.achButtons - 1], "BOTTOMRIGHT")
     self.frame.achScroll:SetWidth(16)
     self.frame.achScroll:SetMinMaxValues(0,0)
     self.frame.achScroll:SetValueStep(1)
-    self.frame.achScroll:SetScript("OnValueChanged", function()
-        self:OnAchScroll()
-    end)
+    self.frame.achScroll:SetScript("OnValueChanged",UrbanAchiever_OnAchScroll)
     self.frame.achScroll:SetValue(1)
     
     --Achievement Display Frame
     self.frame.display = CreateFrame("Frame", "$parentDisplayFrame", self.frame)
     self.frame.display.backdrop = self.frame.display:CreateTexture("$parentBG", "BACKGROUND")
@@ -944,13 +956,11 @@
     self.frame.criteriaScroll:SetPoint("TOPLEFT", self.frame.display.criteriaButtons[2], "TOPRIGHT", 1,0)
     self.frame.criteriaScroll:SetPoint("BOTTOMLEFT", self.frame.display.criteriaButtons[#self.frame.display.criteriaButtons - 1], "BOTTOMRIGHT", 1,0)
     self.frame.criteriaScroll:SetWidth(16)
     self.frame.criteriaScroll:SetMinMaxValues(0,0)
     self.frame.criteriaScroll:SetValueStep(1)
-    self.frame.criteriaScroll:SetScript("OnValueChanged", function()
-        self:OnCriteriaScroll()
-    end)
+    self.frame.criteriaScroll:SetScript("OnValueChanged", UrbanAchiever_OnCriteriaScroll)
     self.frame.criteriaScroll:SetValue(1)
     self.frame.criteriaScroll:Show()
     
     self.frame.display.criteria = self.frame.display:CreateFontString("$parentCriteria", "ARTWORK", "GameFontNormal")
     self.frame.display.criteria:SetPoint("TOPLEFT", 0, -135)
@@ -1024,19 +1034,11 @@
         end
         self.achOffset = 0
         self:RefreshCategoryButtons()
         self:RefreshAchievementButtons()
     end)
-    button:SetScript("OnMouseWheel", function()
-        self:ButtonScroll(arg1, "catScroll", "catOffset")
-        --[[--arg1 = 1 for up, -1 for down
-        local sMin, sMax = self.frame.catScroll:GetMinMaxValues()
-        self.catOffset = math.min(sMax, math.max(sMin, self.catOffset + (arg1 * -1)))
-        self.frame.catScroll:SetValue(self.catOffset)
-        --self:RefreshCategoryButtons()]]--
-        
-    end)
+    button:SetScript("OnMouseWheel",UrbanAchiever_CatButtonScroll)
     
     return button
 end
 
 function self:CreateAchievementButton(name, parent)
@@ -1166,19 +1168,11 @@
                 self:RefreshAchievementButtons(false)
                 self:SetDisplayAchievement(id)
             end
         end
     end)
-    button:SetScript("OnMouseWheel", function()
-        self:ButtonScroll(arg1, "achScroll", "achOffset")
-        --[[--arg1 = 1 for up, -1 for down
-        local sMin, sMax = self.frame.achScroll:GetMinMaxValues()
-        self.achOffset = math.min(sMax, math.max(sMin, self.achOffset + (arg1 * -1)))
-        self.frame.achScroll:SetValue(self.achOffset)
-        --self:RefreshAchievementButtons()
-        ]]--
-    end)
+    button:SetScript("OnMouseWheel", UrbanAchiever_AchButtonScroll)
     
     return button
 end
 
 function self:CreateCriteriaButton(name, parent)
@@ -1216,13 +1210,11 @@
     highlightTexture:SetTexCoord(0, 1, 0.56, 0.73)
     --highlightTexture:SetAllPoints(button)
     
     button:SetHighlightTexture("Interface\\FriendsFrame\\UI-FriendsFrame-HighlightBar", "ADD")
     
-    button:SetScript("OnMouseWheel", function()
-        self:ButtonScroll(arg1, "criteriaScroll", "criteriaOffset")
-    end)
+    button:SetScript("OnMouseWheel", UrbanAchiever_CriteriaButtonScroll)
     
     button:SetScript("OnClick", function()
         local id = button:GetID()
         if button.icon:IsShown() then
             self:SetDisplayAchievement(id)
@@ -1338,25 +1330,22 @@
 end
 
 -------------------------------------------------------------
 --Scroll Stuff                                        
 -------------------------------------------------------------
-function self:OnCatScroll()
-    --arg1 = GetValue()
-    self.catOffset = arg1
+function UrbanAchiever_OnCatScroll(self1)
+    self.catOffset = self1:GetValue()
     self:RefreshCategoryButtons()
 end
 
-function self:OnAchScroll()
-    --arg1 = GetValue()
-    self.achOffset = arg1
+function UrbanAchiever_OnAchScroll(self1)
+    self.achOffset = self1:GetValue()
     self:RefreshAchievementButtons(false)
 end
 
-function self:OnCriteriaScroll()
-    --arg1 = GetValue()
-    self.criteriaOffset = arg1
+function UrbanAchiever_OnCriteriaScroll(self1)
+    self.criteriaOffset = self1:GetValue()
     self:RefreshCriteriaButtons()
 end
 
 -------------------------------------------------------------
 --Core Stuff                                        
@@ -1445,11 +1434,12 @@
         end
     end
 end
 
 function self:SetAchievementButton(button, id, offset)
-    local id, name, points, completed, month, day, year, description, _, icon, reward = GetAchievementInfo(id)
+    local retok, id, name, points, completed, month, day, year, description, _,icon, reward = pcall (GetAchievementInfo,id)
+    if not retok then return nil end
     
     if completed then
         if year < 10 then
             year = "0" .. year;    
         end
@@ -1549,11 +1539,11 @@
     end
         
     --Update this achievement
     self.masterList[id].searchString = self:GetSearchString(id)
     
-    local id, name, points, completed, month, day, year, description, _, icon, reward = GetAchievementInfo(id)
+    local retok, id, name, points, completed, month, day, year, description, _,icon, reward = pcall (GetAchievementInfo,id)
     
     self.frame.display:Show()
     self.frame.display.icon:SetTexture(icon)
     self.frame.display.name:SetText(name)
     self.frame.display.desc:SetText(description)
@@ -1691,15 +1681,17 @@
                 end
             end
             
             if criteriaType == CRITERIA_TYPE_ACHIEVEMENT then    
                 --Its a meta achievement
-                _,_,_,_,_,_,_,_,_,icon = GetAchievementInfo(criteriaAssetID)
-                self.frame.display.criteriaButtons[buttonNum].icon:SetTexture(icon)
-                self.frame.display.criteriaButtons[buttonNum].icon:Show()
-                offset = offset + 16
-                self.frame.display.criteriaButtons[buttonNum]:SetID(criteriaAssetID)
+                retok,_,_,_,_,_,_,_,_,_,icon = pcall (GetAchievementInfo,criteriaAssetID)
+                if retok then
+                    self.frame.display.criteriaButtons[buttonNum].icon:SetTexture(icon)
+                    self.frame.display.criteriaButtons[buttonNum].icon:Show()
+                    offset = offset + 16
+                    self.frame.display.criteriaButtons[buttonNum]:SetID(criteriaAssetID)
+                end                
             elseif (bit.band(criteriaFlags, ACHIEVEMENT_CRITERIA_PROGRESS_BAR) == ACHIEVEMENT_CRITERIA_PROGRESS_BAR) then
                 --Its a progress bar
                 offset = 1
                 self.frame.display.criteriaButtons[buttonNum]:Hide()
                 str = ""
Last edited by elaundar : 10-18-10 at 04:28 PM.
Report comment to moderator  
Reply With Quote
Unread 10-18-10, 05:39 PM  
Tomate
A Murloc Raider
 
Tomate's Avatar
AddOn Author - Click to view AddOns

Forum posts: 5
File comments: 301
Uploads: 6
A big thanks elaundar for your help.
I am not sur of what I have done.
It seems it was an issue with the scroll binding.
Can you explain a bit what you have done, I haven't the time to look all your code to see all diff.
Report comment to moderator  
Reply With Quote
Unread 10-18-10, 06:37 PM  
elaundar
A Kobold Labourer

Forum posts: 0
File comments: 24
Uploads: 0
Sure thing!

Basically, once I had the Achievement lookup working, I ran into several nil values. I tracked them down to the self.*Offset variables being nil. Since the variables had a default value set, I isolated the problem to be in ButtonScroll and On*Scroll functions.

Something seems to have changed in how SetScript() is passing variables. My wow lua is so limited, I couldn't figure out exactly what, but I was able to look at a few addons that were working to figure out what to change. I finally just decided to use the default passing mechanism (which passes self and arg1). Unfortunately, this meant that buttonScoll needed to be split into 3 different methods rather than just passing in the scrollbar/offset. (I suspect there is a better way to do this, but it works )
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: