Quantcast
Download
(14 Kb)
Download
Updated: 01/26/23 03:27 AM
Pictures
File Info
Compatibility:
Firesong (8.2.5)
Lost Depths (8.1.5)
High Isle (8.0.0)
Updated:01/26/23 03:27 AM
Created:03/12/22 10:59 AM
Monthly downloads:730
Total downloads:5,750
Favorites:15
MD5:
Categories:Bags, Bank, Inventory, Miscellaneous, Utility Mods
8.2.5
Descendants Support Set Tracker  Updated this week!  Popular! (More than 5000 hits)
Version: 0.991
by: Sven_re [More]
Dependencies

LibAddonMenu 2.0
LibSets

Overview

This AddOn is designed for Support Players who don't want to maintain an Excel sheet of their available gear anymore.
You can track which sets you own across Characters and which would be able to reconstruct with this AddOn.

The AddOn was mainly programmed for the Guild Descendants of the Dwemer (PC/EU) but i offer it to anyone who wants to use it here.

Feel free to report any isues on GitHub

How To

You can select one of the Following set lists in the AddOn settings to track your gear:
  • Default_Healer: Alphabetically ordered list of Healer Gear
  • Default_Tank: Alphabetically ordered list of Tank Gear
  • DOTD_Healer: Descendants of the Dwemer (PC/EU) Healer Requirements
  • DOTD_Tank: Descendants of the Dwemer (PC/EU) Tank Requirements
  • IP_Tank_U33: Invite Pending (PC/NA) Tank Requirements
  • IP_Healer_U33: Invite Pending (PC/NA) Healer Requirements
  • Custom: A list which lets you add gear you want to track
afterwads you can toggle the window eitehr with the button in the settings, the slash command or a keybind to show the selected gear list

Icons
Checkmark: Shows that a piece of gear is in your inventory, bank or storage
Color of the checkmark: shows the quality of the piece of gear
Transmute crystal: Shows that a piece of gear is in your collection and can be reconstructed
Empty box: shows that a piece of gear is neither collected nor reconstructed

Slash Command

/dsst - Will toggle the window

Features
  • Multiple Set Lists available (you cahnge the selected one per character in the settings)
  • Account Wide Gear Tracker (You need to log in every character once + 1 Character neeeds to visit your house)
  • Reconstruction cost + Item Tracking
  • Quality tracking for the gear you have
  • KeyBindings
  • Custom Set List with a Drop Down to choose from and the option to add multiple set by seperating them with a comma for example: Spell Power Cure,Master Architect
  • Default list for the Guild Invite Pending (PC/NA)
  • new option to also track 2h weapons to be viable for DDs as well
v 0.991
- Fixed a bug where deconstructed sets weren't deleted out of the set library
- added a Force update button
v 0.99
- Fixed a bug where the monster sets weren't shown as collected when the light piece wasn't collected
v 0.98
- added Multilanguage Support
- added Total Transmutes shown in the top left
v 0.97
- added Syrabanes ward and Archdruid Devyric
v 0.96
- added an option to hide the reconstruction icon
- added tooltips to the headder icons

v 0.95
- added new sets after u35
- deleted galenwe from teh guild set list
v 0.93
- added Pearlescent Ward to the Set Lists
v 0.93
- Fixed the keybind
- added alerts to the add/remove set from custom list functionality

v 0.92
- fixed the close button

v 0.91
- fixed a bug with the settings

v 0.9
- improved the custom list feature to add multiple sets at once
- added a list with all non craftable sets to choose from for the custom list
- added an option to show 2 handed weapons

v 0.9
- Default list for the Guild Invite Pending (PC/NA)
- added a Keybind
Optional Files (0)


Archived Files (14)
File Name
Version
Size
Uploader
Date
0.99
14kB
Sven_re
11/23/22 04:51 AM
0.98
14kB
Sven_re
11/21/22 06:29 AM
0.97
13kB
Sven_re
11/11/22 03:56 AM
0.96
13kB
Sven_re
09/09/22 04:31 AM
0.95
13kB
Sven_re
08/28/22 03:02 PM
0.94
98kB
Sven_re
07/10/22 07:32 AM
0.93
98kB
Sven_re
06/11/22 05:19 AM
0.92
13kB
Sven_re
06/09/22 04:00 PM
0.91
50kB
Sven_re
06/08/22 11:05 AM
0.9
13kB
Sven_re
06/06/22 09:15 AM
0.8
11kB
Sven_re
05/12/22 03:12 AM
0.7
10kB
Sven_re
04/24/22 03:17 PM
0.6
9kB
Sven_re
03/14/22 08:14 AM
0.51
9kB
Sven_re
03/12/22 02:21 PM


Post A Reply Comment Options
Unread 01/26/23, 11:03 AM  
hellhound_omega

Forum posts: 0
File comments: 4
Uploads: 0
Originally Posted by Sven_re
Originally Posted by hellhound_omega
Once I figured out how to use this addon, it is AWESOME! Thank you!

I am confused about the addon saying I have certain gear when I don't though. For example, I had shoulder for SPC then deconned it when I was doing some inventory clean up. Now it is saying I have it even though I don't (showing the check mark). Is there something I can do to force the addon to update?
Hello hellhound,
i redid some functions in the last update and apparently killed the auto update on loading the addon. I iwll release a fix soon.
Awesome! Thank you!
Report comment to moderator  
Reply With Quote
Unread 01/26/23, 08:31 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4323
File comments: 5437
Uploads: 74
I've updated LibSets with the following function:
Code:
-Added API function LibSets.GetSupportedLanguageChoices() for LibAddonMenu-2.0 dropdown widgts:
--Returns 3 tables for a libAddonMenu-2.0 dropdown widget:
--table choices { "German", "English", "Spanish", "French", "Russian", "Chinese" } --order is based on the ISO lang codes de, en, es, fr, ru, zh
--table choicesValues { 1, 2, 3, 4, 5, 6 }
--table choicesValuesTooltip e.g. {"German", "English", "Spanish", "French", "Russian", "Chinese" }
Okay, understood why you want that settings to control the language for the sets but why that extra check for
Code:
if LibSets.GetSetName(set) then
which will use client language then?

1. If clientLang is the same as DSST.lang you do the setName function twice without any need -> at least it's properly checked if the setName is not == nil then
2. If clientLang is not the same as DSST.lang then you check if the setName is given in clientLang and afterwards return a totally different language which might be non existing/nil in the data -> Error/empty list's row name

In both cases you should change your line to
Lua Code:
  1. if LibSets.GetSetName(set, DSST.lang) then
instead to make it properly work.


Performance improvement ideas
btw: if you use LibSets.GetSetName multiple times in your addon you could speed it up by
-either add a local pointer to LibSets.GetSetName like
Lua Code:
  1. local libSets_GetSetName = LibSets.GetSetName
and use that local pointer libSets_GetSetName then

Else each call to LibSets.<whatever> will search the whole table LibSets for the entry, each time.

-or caching the result of that setName in the row of the list that you have created and reuse the cached name from that row data of the control, instead of rereading it from LibSets (e.g. your tooltips at your UI: You got the setName already at the rowControl.data.name, no need to re read it from the library? ).

Edit:
I just noticed your scrollList entries might come from predefined tables from DSST.sets e.g. "Default_Healer", that's why their name could be "English" and that's most probably why the French players got them in their list "mixed" (and why you use LibSets.GetSetName again at the row setupFunction again > Understood now but might be not working for all your cases)?

You could use LibSets to get the setnames of your DSST.sets entries, with DSST.lang to fix that.
Instead of hardcoding the set names in English there, just fill in the setIds and then loop over the table once after DSST.lang is set, and update the same looped table row of DSST.sets with the setname in the chosen player language.
This strips the need to recall LibSets.GetSetname in your row setupFunction too in the end.

You could add those prefixes like "<3" to another tag of the table so they will stay and will be added again as the names are updated.
Also the info "(Monster Helm)" etc. can be proved by LibSets.

I'll provide you and example code here:

!!!ALL UNTESTED!!!
Here is the link to a changed file DescendantsSupportSetTrackerList.lua with a new function to update that tables DSST.sets with DSST.lang dependent setNames and setTypeNames, keeping your defined prefix (<3, OK, **, spaces) and suffix (setTypeName like "Monster" etc.).
DescendantsSupportSetTrackerList.lua - Changed for setNames and prefix & suffix language dependent, based on LibSets data

Function code as example:
Lua Code:
  1. --Check if LibSets was loaded properly before calling this function
  2. --and call this function before your DSST.sets tables are used anywhere in your addon!
  3. -->DSST.lang must be updated properly before this function is called -> make sure the SavedVariables were read before
  4. -->and call this function with DSST.updatePredefinedSetNames(DSST.lang)
  5. function DSST.updatePredefinedSetNames(lang)
  6.     --This function will read the tables above and update the "name" tag with the setName in the language "lang" (passed in parameter)
  7.     --If a prefix was defined it will be added to the setName's prefix
  8.     --If a suffix was defined it will be added to the setName's suffix -> You could also use LibSets.GetSetTypeName(libSetsSetType, lang) instead!
  9.  
  10.  
  11.     --Get all LibSet setNames and cache them internally in LibSets for improved performance
  12.     local allSetNames = LibSets.GetAllSetNames(lang)
  13.     --If something goes wrong, keep the data in the tables like above
  14.     if allSetNames == nil then return end
  15.  
  16.     --predefinedSetsType: e.g. "IP_Tank_U33", setsToUpdate = table of sets below that predefinedSetsType
  17.     for predefinedSetsType, setsToUpdate in pairs(predefinedSets) do
  18.         local setId = setsToUpdate.id
  19.         if setId ~= nil then
  20.             local setName = allSetNames[setId][lang]
  21.             if setName ~= nil and setName ~= "" then
  22.                 --Add the prefix if requested -> Set info like <3, OK, ** or just spaces
  23.                 if setsToUpdate.prefix ~= nil then
  24.                     setName = setsToUpdate.prefix .. setName
  25.                 end
  26.  
  27.                 --Add the suffix if requested -> SetType
  28.                 if setsToUpdate.suffix ~= nil then
  29.                     --Get the setType's name as String in the language of "lang" (passed in parameter)
  30.                     local setTypeName = LibSets.GetSetTypeName(setId, lang)
  31.                     if setTypeName ~= nil and setTypeName ~= "" then
  32.                         setName = setName .. " (" .. setTypeName .. ")"
  33.                     else
  34.                         setName = setName .. " " .. setsToUpdate.suffix
  35.                     end
  36.                 end
  37.  
  38.                 --Update the setName with the requested language "lang" to the table
  39.                 setsToUpdate.name = setName
  40.             end
  41.         end
  42.     end
  43. end


I know it's your addon and these are only ideas Feel free to use them or not.
Hope I could help to track those setName language mixes.
Last edited by Baertram : 01/26/23 at 09:28 AM.
Report comment to moderator  
Reply With Quote
Unread 01/26/23, 07:16 AM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Originally Posted by Baertram
Originally Posted by Sven_re
Originally Posted by XXXspartiateXXX
...
Set translation are taken out of libsets if the library there isn't complete the translations will be missing and it defaults to english. The sets are all displayed in alphabetic order in english.
The library is complete and updated on each patch with all the set names, so my guess here is: ZOs did not translate all setIds and set's itemIds properly to all languages :-(

Edit:
I've checked the data of LibSets for some of the sets shown at the screenshot
setId | setName EN | setName FR
180 | Powerfull Assault | L’Assaut puissant
452 | Hollowfang Thirst | La Soif du Croc creux
648 | Pearlescent Ward | Garde perlescente
649 | Pillager's Profit | Le Profit du pillard
650 | Perfected Pillager's Profit | Le Profit du pillard perfectionné

The translations are all there.

The question here now is Sven_re:
What APi function of LibSets do you use the read that setNames which are shown at the list in your addon (should be using with the client language of the user using the addon)?

Is it this code?
Lua Code:
  1. function DSST.saveSetTable()
  2.     if DSST.libSetsReady == true then
  3.         local setTable = LibSets.GetAllSetIds()
  4.         for set in pairs(setTable) do
  5.             if LibSets.IsCraftedSet(set) == false then
  6.                 if LibSets.GetSetName(set) then
  7.                     table.insert(DSST.fullSetTable, LibSets.GetSetName(set,DSST.lang)) 
  8.                 end
  9.             end
  10.         end
  11.     end
  12. end

Why the extra call with
if LibSets.GetSetName(set) --> It will check if the setName is available in clientLanguage of the currently logged in users
if you then add it with another language DSST.lang afterwards?
That does not make sense to me.
But it neither does explain why the output list contains en and fr setNames mixed as all entries should be of DSST.lang in the end.

Do you clear the set list if the user changes the language of DSST.lang? If not, you should do so please. Mayeb that was the reason why it was shown mixed somehow?
I found this at the tooltip of your settings language dropdown:
Code:
tooltip = "To update the set list below you will need to reload ui after changing this setting",
You can force a reloadui by adding
Code:
requireReload = true,
to the LAM widget.
It will show a "Reload UI" keybind button if you change the value and reminds you a reload is needed if you try to leave the settings menu withut a reloadUI done.


Btw, your choices of your language list contains the language "rs" -> this is not suppoted by LibSets! I think you miss-typed "es" here?
If you want that to be build dynmically from LibSets you can use the table LibSets.supportedLanguagesIndex to build your "choices" table!
Attention: Do not use LibSets.supportedLanguagesIndex directly! It may change it's index/key upon each reloadui!!! It's not sorted or something like that.

It's a table that contains all supported langages and looks like this:
Lua Code:
  1. LibSets.supportedLanguagesIndex = {
  2. [1] = "en",
  3. [2] = "de",
  4. [3] = "ru",
  5. [4] = "fr",
  6. [5] = "es",
  7. [6] = "zh",
-> The order may change on reach reloadUI so if you use that as a base and want to keep choices always the same, you need to sort choices or assure it by your own logic.

I could add a sorted table and provide an API function like LibSets.GetSupportedLanguageChoices() with my next update.
Hey,
Thanks for the in depth feedback. DSST.lang will default to the client language. My goal was for guild members who play the game in let’s say German to still be able to send in a screenshot with English set names so everyone can understand the sets collected. For the language list I will make sure to grab it out of the lib set with the next update
Report comment to moderator  
Reply With Quote
Unread 01/26/23, 06:17 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4323
File comments: 5437
Uploads: 74
Originally Posted by Sven_re
Originally Posted by XXXspartiateXXX
...
Set translation are taken out of libsets if the library there isn't complete the translations will be missing and it defaults to english. The sets are all displayed in alphabetic order in english.
The library is complete and updated on each patch with all the set names, so my guess here is: ZOs did not translate all setIds and set's itemIds properly to all languages :-(

Edit:
I've checked the data of LibSets for some of the sets shown at the screenshot
setId | setName EN | setName FR
180 | Powerfull Assault | L’Assaut puissant
452 | Hollowfang Thirst | La Soif du Croc creux
648 | Pearlescent Ward | Garde perlescente
649 | Pillager's Profit | Le Profit du pillard
650 | Perfected Pillager's Profit | Le Profit du pillard perfectionné

The translations are all there.

The question here now is Sven_re:
What APi function of LibSets do you use the read that setNames which are shown at the list in your addon (should be using with the client language of the user using the addon)?

Is it this code?
Lua Code:
  1. function DSST.saveSetTable()
  2.     if DSST.libSetsReady == true then
  3.         local setTable = LibSets.GetAllSetIds()
  4.         for set in pairs(setTable) do
  5.             if LibSets.IsCraftedSet(set) == false then
  6.                 if LibSets.GetSetName(set) then
  7.                     table.insert(DSST.fullSetTable, LibSets.GetSetName(set,DSST.lang)) 
  8.                 end
  9.             end
  10.         end
  11.     end
  12. end

Why the extra call with
if LibSets.GetSetName(set) --> It will check if the setName is available in clientLanguage of the currently logged in users
if you then add it with another language DSST.lang afterwards?
That does not make sense to me.
But it neither does explain why the output list contains en and fr setNames mixed as all entries should be of DSST.lang in the end.

Do you clear the set list if the user changes the language of DSST.lang? If not, you should do so please. Mayeb that was the reason why it was shown mixed somehow?
I found this at the tooltip of your settings language dropdown:
Code:
tooltip = "To update the set list below you will need to reload ui after changing this setting",
You can force a reloadui by adding
Code:
requireReload = true,
to the LAM widget.
It will show a "Reload UI" keybind button if you change the value and reminds you a reload is needed if you try to leave the settings menu withut a reloadUI done.


Btw, your choices of your language list contains the language "rs" -> this is not suppoted by LibSets! I think you miss-typed "es" here?
If you want that to be build dynmically from LibSets you can use the table LibSets.supportedLanguagesIndex to build your "choices" table!
Attention: Do not use LibSets.supportedLanguagesIndex directly! It may change it's index/key upon each reloadui!!! It's not sorted or something like that.

It's a table that contains all supported langages and looks like this:
Lua Code:
  1. LibSets.supportedLanguagesIndex = {
  2. [1] = "en",
  3. [2] = "de",
  4. [3] = "ru",
  5. [4] = "fr",
  6. [5] = "es",
  7. [6] = "zh",
-> The order may change on reach reloadUI so if you use that as a base and want to keep choices always the same, you need to sort choices or assure it by your own logic.

I could add a sorted table and provide an API function like LibSets.GetSupportedLanguageChoices() with my next update.
Last edited by Baertram : 01/26/23 at 07:13 AM.
Report comment to moderator  
Reply With Quote
Unread 01/26/23, 02:47 AM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Originally Posted by hellhound_omega
Once I figured out how to use this addon, it is AWESOME! Thank you!

I am confused about the addon saying I have certain gear when I don't though. For example, I had shoulder for SPC then deconned it when I was doing some inventory clean up. Now it is saying I have it even though I don't (showing the check mark). Is there something I can do to force the addon to update?
Hello hellhound,
i redid some functions in the last update and apparently killed the auto update on loading the addon. I iwll release a fix soon.
Report comment to moderator  
Reply With Quote
Unread 01/17/23, 02:31 PM  
hellhound_omega

Forum posts: 0
File comments: 4
Uploads: 0
Once I figured out how to use this addon, it is AWESOME! Thank you!

I am confused about the addon saying I have certain gear when I don't though. For example, I had shoulder for SPC then deconned it when I was doing some inventory clean up. Now it is saying I have it even though I don't (showing the check mark). Is there something I can do to force the addon to update?
Report comment to moderator  
Reply With Quote
Unread 12/30/22, 12:07 PM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Originally Posted by XXXspartiateXXX
My god, I'm ashamed I made a mistake in my images. Sorry. I gave you the correct images for the translations. On the menu is it normal not to have a default DPS set? The name of each icon is also to be translated (armor, head, accessory, ect). And last point, some sets are translated directly into French and others are not, do you know why?
I noticed that there is no sort function. In what order are they displayed by default?



Set translation are taken out of libsets if the library there isn't complete the translations will be missing and it defaults to english. The sets are all displayed in alphabetic order in english. There is no default dps load out sicne dds don't really need a huge amount of support sets so i just didn't add one.
I don't really see the need to add a multi language support to translate the settings menu and the top row tool tips.
Last edited by Sven_re : 12/31/22 at 05:43 AM.
Report comment to moderator  
Reply With Quote
Unread 12/30/22, 07:29 AM  
XXXspartiateXXX

Forum posts: 7
File comments: 47
Uploads: 0
My god, I'm ashamed I made a mistake in my images. Sorry. I gave you the correct images for the translations. On the menu is it normal not to have a default DPS set? The name of each icon is also to be translated (armor, head, accessory, ect). And last point, some sets are translated directly into French and others are not, do you know why?
I noticed that there is no sort function. In what order are they displayed by default?



Last edited by XXXspartiateXXX : 12/30/22 at 07:32 AM.
Report comment to moderator  
Reply With Quote
Unread 12/30/22, 04:50 AM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Re: possible add translations

Originally Posted by XXXspartiateXXX
could you add language support (see the 4 images). I would translate for French (Gear Manager, Edit instance name, Equip/Drag, Clear/Context menu, Shift+Drag : copy, Signle Use Slot) and all the menu in the settings.







Hey besides the settings menu all screenshots you provided are from a different addon
Report comment to moderator  
Reply With Quote
Unread 12/29/22, 10:49 AM  
XXXspartiateXXX

Forum posts: 7
File comments: 47
Uploads: 0
possible add translations

could you add language support (see the 4 images). I would translate for French (Gear Manager, Edit instance name, Equip/Drag, Clear/Context menu, Shift+Drag : copy, Signle Use Slot) and all the menu in the settings.

Last edited by XXXspartiateXXX : 12/30/22 at 08:33 AM.
Report comment to moderator  
Reply With Quote
Unread 11/21/22, 05:51 AM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Originally Posted by claudekennilol
The screenshot shows a lot of different icons on the grid. Can you add what they mean into the mod description?
Hello the icons are quickly explained:
A checkmark means you have the piece of gear reconstructed.
The color of the checkmark shows the quality of the Piece.
The Transmute stone means you have it collected and can reconstruct it.
The Empty Square means you neitehr have it nor can you reconstruct it.

Hope that helps
Report comment to moderator  
Reply With Quote
Unread 11/11/22, 09:04 AM  
claudekennilol

Forum posts: 0
File comments: 23
Uploads: 0
The screenshot shows a lot of different icons on the grid. Can you add what they mean into the mod description?
Report comment to moderator  
Reply With Quote
Unread 03/13/22, 07:44 AM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Originally Posted by Baertram
Thanks for the addon, looks handy.

Just a hint if you add DependsOn or OptionalDependsOn:
Code:
## DependsOn: LibAddonMenu-2.0
This will allow every, even very outdated, versions of libraries causng errors with your addon.
If you create new addons check the current version given by the txt file of the library/addon you add the dependency on, tag ## AddonVersion: <numberHere> and add that >=<numberHere> behind the library/addon name in your (Optional)DependsOn.

e.g.
LibAddonMenu-2.0 is given with version 32 atm.
So add:

Code:
## DependsOn: LibAddonMenu-2.0>=32
This assures the ZOs vanilla addon manager at c code already, before it even hits lua, willsort out older versions and make your addon not load and throw errors with the old versions + show it ingame at the addon manager list -> dependency error.

Thanks a lot, i'll make sure to include this in the next update
Report comment to moderator  
Reply With Quote
Unread 03/12/22, 02:36 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4323
File comments: 5437
Uploads: 74
Thanks for the addon, looks handy.

Just a hint if you add DependsOn or OptionalDependsOn:
Code:
## DependsOn: LibAddonMenu-2.0
This will allow every, even very outdated, versions of libraries causng errors with your addon.
If you create new addons check the current version given by the txt file of the library/addon you add the dependency on, tag ## AddonVersion: <numberHere> and add that >=<numberHere> behind the library/addon name in your (Optional)DependsOn.

e.g.
LibAddonMenu-2.0 is given with version 32 atm.
So add:

Code:
## DependsOn: LibAddonMenu-2.0>=32
This assures the ZOs vanilla addon manager at c code already, before it even hits lua, willsort out older versions and make your addon not load and throw errors with the old versions + show it ingame at the addon manager list -> dependency error.

Last edited by Baertram : 03/12/22 at 02:47 PM.
Report comment to moderator  
Reply With Quote
Unread 03/12/22, 02:21 PM  
Sven_re
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 3
Re: Inactive addon

Originally Posted by Splash
I don't see addon on the addon list
https://i.imgur.com/KrjgePp.png
Hey yeah that was my bad while zipping the files. New version is online that should work
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: