Download
(1 MB)
Download
Updated: 03/27/24 08:17 AM
Pictures
File Info
Compatibility:
Scions of Ithelia (9.3.0)
Endless Archive (9.2.5)
base-game patch (9.1.5)
Necrom (9.0.0)
Scribes of Fate (8.3.5)
Firesong (8.2.5)
Lost Depths (8.1.5)
High Isle (8.0.0)
Updated:03/27/24 08:17 AM
Created:01/21/19 10:18 AM
Monthly downloads:85,254
Total downloads:3,110,464
Favorites:671
MD5:
9.3.0
LibSets (All set items ingame & preview. lua API + excel sheet)  Updated less than 3 days ago!  Popular! (More than 5000 hits)
Version: 0.6.6
by: Baertram [More]
Attention please - To the addon devs:
DO NOT ACCESS THE PRELOADED TABLES DIRECTLY BUT USE THE API FUNCTIONS like LibSets.GetAll* to READ THE PRELOADED DATA!

Optional depends on:
LibAddonMenu-2.0
-> If you install this library you got a LibSets settings menu ingame to define a tooltip at your set itms, showing you where and how the set items drop.
LibSlashCommander
-> If you install this library you get a slash command helper for /libsetspreview or /lsp <setId / setName> set search which uses auto completion as you type the setname. It will show you a mathcing list of set's, including their unique setId. If you press the SPACE key after the setName was selected from the dropdown list, you can see a list of translations into all other supported langages, for this choosen set.
Pressing the return key will provide you a random itemLink of the set into the chat editbox, where you can send it to others or copy it from.
LibCustomMenu



LibSets
A library to help with item sets in the ESO game.

Total new Set search UI (Keyboard mode / Gamepad maybe in the future)
Added a complete new set search user interface which you can show/hide via slash command /lss or /libsets search
You can use /lss <setName or setId> to directly open the search with that search text.

A settings menu at the top right of the search UI can be used to change a few settings.
Moving the mouse above the results list will show a tooltip of that set.
You can right click any results list entry to save the set as a favorite, with a yellow star icon showing that to you.
Or link the set to chat, copy the set info text and drop locations (including textures of the drop info, or without) from a copy dialog box.
Open a fixed popup tooltip at the right for example, to compare that set with the next dynamic tooltip shown at the left.
-> Tooltip settings can be changed at the LibSets settings menu (LibAddonMenu-2.0)
The dropdown boxes are multiselect so each selected entry filters!
Changing the multiselect filters needs to actively press the search button to apply the filters!
Text editboxes will directly apply the search, without pressing the search button.
Right click context menus at the multiselect dropdowns or editboxes provide extra possibilities, like a search history (editboxes) or directly choose some sets (favorites, currentzone).



If enabled at the settings menu
-Shows you the set's drop locations, how to get etc. at the tooltip (including Mythic item lead drop location/info)
-Provides a small triangle button at the set collections top right to scroll to the current zone/parent zone
-Adds slash commands (install LibSlashCommander to assist you with the search results) like /lsp <setName or setId> to show you a list of sets and creae an itemlink you can send to chat


The update for this library is very time conuming at each patch so I'd be glad to get help or recompensation for my invested time.
I love bears



Slash commands
/lss <optionally: setName or setId> or /libsets search <setName or setId> Open the set search UI


Optional dependency: LibSlashCommander
-Added slash command /libsetspreview or /lsp <setId or setName> to search for set names/ids and preview a tooltip of that set (default: legendary divine chest -> if not available any other random item of the set)
-->Shows tooltip of the set item and returns the itemlink to chat input field
-Optional dependency LibSlashCommander was added for the set name search (multi language). Type /lsp to search in client language or /lsp<lang> e.g. /lspde to search for German set names.
Or just type /lsp <setId number> e.g. /lsp 633 to show that's set item

/libsetsdlcsandchapters
/dlcsandchapters
Show the data about the DLCs and chapters of the game: LibSets DLCId, release date, name, DLC type (dungeon, zone)

/libsetsdlcs
/dlcs
Show the data about the DLCs of the game: LibSets DLCId, release date, name, DLC type (dungeon, zone)

/libsetschapters
/chapters
Show the data about the chapters of the game: LibSets DLCId, release date, name, DLC type (chapter)



It provides the following "setTypes":
Code:
LIBSETS_SETTYPE_ITERATION_BEGIN = 1

LIBSETS_SETTYPE_ARENA                           = 1 --"Arena"
LIBSETS_SETTYPE_BATTLEGROUND                    = 2 --"Battleground"
LIBSETS_SETTYPE_CRAFTED                         = 3 --"Crafted"
LIBSETS_SETTYPE_CYRODIIL                        = 4 --"Cyrodiil"
LIBSETS_SETTYPE_DAILYRANDOMDUNGEONANDICREWARD   = 5 --"DailyRandomDungeonAndICReward"
LIBSETS_SETTYPE_DUNGEON                         = 6 --"Dungeon"
LIBSETS_SETTYPE_IMPERIALCITY                    = 7 --"Imperial City"
LIBSETS_SETTYPE_MONSTER                         = 8 --"Monster"
LIBSETS_SETTYPE_OVERLAND                        = 9 --"Overland"
LIBSETS_SETTYPE_SPECIAL                         = 10 --"Special"
LIBSETS_SETTYPE_TRIAL                           = 11 --"Trial"
LIBSETS_SETTYPE_MYTHIC                        = 12 --"Mythic"                           
LIBSETS_SETTYPE_IMPERIALCITY_MONSTER = 13 -- "Imperial City monster"
LIBSETS_SETTYPE_CYRODIIL_MONSTER = 14 --"Cyrodiil monster"
LIBSETS_SETTYPE_CLASS = 15 -- "Class sets -> Dropped in 'Endless Archive'"

--Only for iterations from 1 (LIBSETS_SETTYPE_ITERATION_BEGIN ) to the maximum
LIBSETS_SETTYPE_ITERATION_END                   = maximum setType (currently: LIBSETS_SETTYPE_IMPERIALCITY_MONSTER)
The library provides drop mechanics which describe how the sets drop, together with the zoneIds where the sets drop it will describe how you are able to get the setItems:
Code:
[1]  = "LIBSETS_DROP_MECHANIC_MAIL_PVP_REWARDS_FOR_THE_WORTHY", --Rewards for the worthy (Cyrodiil/Battleground mail)
    [2]  = "LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_BRUMA", --City Bruma (quartermaster)
    [3]  = "LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CROPSFORD", --City Cropsford (quartermaster)
    [4]  = "LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_VLASTARUS", --City Vlastarus (quartermaster)
    [5]  = "LIBSETS_DROP_MECHANIC_ARENA_STAGE_CHEST", --Arena stage chest
    [6]  = "LIBSETS_DROP_MECHANIC_MONSTER_NAME", --The name of a monster (e.g. a boss in a dungeon) is specified in the excel and transfered to the setInfo table entry with the attribute "dropMechanicNames" (a table containing the monster name in different languages)
    [7]  = "LIBSETS_DROP_MECHANIC_OVERLAND_BOSS_DELVE", --Overland delve bosses
    [8]  = "LIBSETS_DROP_MECHANIC_OVERLAND_WORLDBOSS", --Overland world group bosses
    [9]  = "LIBSETS_DROP_MECHANIC_OVERLAND_BOSS_PUBLIC_DUNGEON", --Overland public dungeon bosses
    [10] = "LIBSETS_DROP_MECHANIC_OVERLAND_CHEST", --Overland chests
    [11] = "LIBSETS_DROP_MECHANIC_BATTLEGROUND_REWARD", --Battleground rewards
    [12] = "LIBSETS_DROP_MECHANIC_MAIL_DAILY_RANDOM_DUNGEON_REWARD", --Daily random dungeon mail rewards
    [13] = "LIBSETS_DROP_MECHANIC_IMPERIAL_CITY_VAULTS", --Imperial city vaults
    [14] = "LIBSETS_DROP_MECHANIC_LEVEL_UP_REWARD", --Level up reward
    [15] = "LIBSETS_DROP_MECHANIC_ANTIQUITIES", --Antiquities (Mythic set items)
    [16] = "LIBSETS_DROP_MECHANIC_BATTLEGROUND_VENDOR", --Battleground vendor
    [17] = "LIBSETS_DROP_MECHANIC_TELVAR_EQUIPMENT_LOCKBOX_MERCHANT", --Tel Var equipment lockbox merchant
    [18] = "LIBSETS_DROP_MECHANIC_AP_ELITE_GEAR_LOCKBOX_MERCHANT", --Alliance points Elite gear merchant
    [19] = "LIBSETS_DROP_MECHANIC_REWARD_BY_NPC", --A named NPC rewards this item
    [20] = "LIBSETS_DROP_MECHANIC_OVERLAND_OBLIVION_PORTAL_FINAL_CHEST", --Oblivion portal final boss chest
    [21] = "LIBSETS_DROP_MECHANIC_DOLMEN_HARROWSTORM_MAGICAL_ANOMALIES", --Dolmen, Harrowstorms, Magical anomalies reward
    [22] = "LIBSETS_DROP_MECHANIC_DUNGEON_CHEST", --Chests in a dungeon	Truhen in einem Verlies
    [23] = "LIBSETS_DROP_MECHANIC_DAILY_QUEST_REWARD_COFFER", --Daily quest reward coffer	Tägliche Quest Belohnungs-Kisten
    [24] = "LIBSETS_DROP_MECHANIC_FISHING_HOLE", --Fishing hole
    [25] = "LIBSETS_DROP_MECHANIC_OVERLAND_LOOT", --Loot from overland items
    [26] = "LIBSETS_DROP_MECHANIC_TRIAL_BOSS", --Trial bosses
    [27] = "LIBSETS_DROP_MECHANIC_MOB_TYPE", --A type of mob/critter
    [28] = "LIBSETS_DROP_MECHANIC_GROUP_DUNGEON_BOSS", --Bosses in group dungeons
    [29] = "LIBSETS_DROP_MECHANIC_CRAFTED", --Crafted
    [30] = "LIBSETS_DROP_MECHANIC_PUBLIC_DUNGEON_CHEST", -- Public dungeon chest
    [31] = "LIBSETS_DROP_MECHANIC_HARVEST_NODE", -- Harvest crafting nodes
    [32] = "LIBSETS_DROP_MECHANIC_IMPERIAL_CITY_TREASURE_TROVE_SCAMP", --Imperial city treasure scamps / Kaiserstadt Schatzgoblin
    [33] = "LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CHEYDINHAL", -- Cyrodiil Cheydinhal city
    [34] = "LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CHORROL_WEYNON_PRIORY", -- Cyrodiil Weyon Priory, Chorrol
    [35] = "LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CHEYDINHAL_CHORROL_WEYNON_PRIORY",  -- Cyrodiil Cheydinhal city / Weyon Priory, Chorrol
    [36] = "LIBSETS_DROP_MECHANIC_CYRODIIL_BOARD_MISSIONS", -- Cyrodiil board missions
    [37] = "LIBSETS_DROP_MECHANIC_ENDLESS_ARCHIVE", -- Endless Archive dungeon
Provides the following DLC types:
Code:
DLC_TYPE_BASE_GAME = 0
DLC_TYPE_CHAPTER = 1
DLC_TYPE_DUNGEONS = 2
DLC_TYPE_ZONE = 3
DLC_TYPE_NORMAL_PATCH = 4
-> See file LibSets_Constants_All.lua, table possibleDlcTypes for the DLC type constants
DLC_TYPE_ITERATION_BEGIN = DLC_TYPE_BASE_GAME
DLC_TYPE_ITERATION_END = maximum DLC type


Also provides DLC Ids for each released DLC and/or chapter:
Code:
DLC_BASE_GAME 0
...
-> See file LibSets_Constants_All.lua, table possibleDlcIds for the DLC constants
--Iterators
DLC_ITERATION_BEGIN = DLC_BASE_GAME
DLC_ITERATION_END = maximum DLC id
And several API functions to read set's drop zone, drop boss, and other info.

Global variable of the library to access it in your code:
LibSets

Please do NOT use LibStub with this library as it will not work!
Simply include the following tag into your addon's manifest txt file:
Code:
##DependsOn: LibSets>=000602
This library uses SavedVariables and thus needs it's own LibSets.txt manifest file!
You must not include this library into subfolders of your addon and you must not include it manually into your addon's manifest txt file like
Code:
--This is wrong! Do not include this in your addon's txt file
/libs/LibSets/LibSets_Constants.Lua
/libs/LibSets/LibSets.Lua
...

Supported languages are:
German
English
French
Russian
Spanish
Chinese (missing some translations, if you can provide them please contact me or use the ESOUI translation forums to provide them, thank you).
-> If you want your language supported as well contact me via private message here on www.esoui.com please.

It contains:
-SetId of the set
-Set's itemIds for all set items (to build an itemlink use function LibSets.buildItemLink)
-Name of a set for the supported languages
-Tables which contain the setIds and setData for each setType
-Tables which contain a mapping between the wayshrines and their zoneIds
-Counters to check how many sets of a type exist
-Functions to get & check the set data, get set languages, teleport to craftable set's near wayshrines, open set drop zone on map, open and show wayshrine of set on map, etc.

@developers
Be sure to check if LibSets finished loading the sets properly before accessing it.
Lua Code:
  1. If not LibSets or not LibSets.checkIfSetsAreLoadedProperly() then
  2.      --LibSets is currentls scanning and/or not ready! Abort here
  3.      myAddon.libSetsReady = false
  4.    else
  5.      myAddon.libSetsReady = true
  6.    end
  7.  
  8.     --Wherever you use LibSets check:
  9.    if myAddon.libSetsReady then
  10.       ---do whatever you want with LibSets
  11.    end


Custom tooltip controls of your addon - Add LibSets info
If you want to add the LibSets tooltips info to your own created tooltips (at the bottom), you can use the API function here:
Lua Code:
  1. --Register a custom tooltip control of type CT_TOOLTIP that inherits from ZO_ItemIconTooltip for the LibSets added tooltip data
  2. --(added to the bottom, during function OnAddGameData is called)
  3. -->Important: The tooltipCtrl of tooltipCtrlName !must! have a subtable dataEntry.data or .data which contains an entry .itemLink with the itemLink of the item,
  4. -->           or the tooltipCtrl of tooltipCtrlName !must! have the entries .bagIndex and .slotIndex where the itemLink can be build from!
  5. --tooltipCtrlName String
  6. --addonName String
  7. -->Returns true if LibSets tooltip hook was added to the internal tables (will be hooked at EVENT_PLAYER_ACTIVATED once, or if a new hook is added later via this function)
  8. -->Returns false if it was already added
  9. -->Returns nil if any error happens
  10. function LibSets.RegisterCustomTooltipHook(tooltipCtrlName, addonName)

XML defined tooltip control for that: param "tooltipCtrlName" in API function LibSets.RegisterCustomTooltipHook -> use "YourAddonNameSetTooltip"
Code:
<TopLevelControl name="YourAddonNameSetTooltipTopLevel" inherits="TooltipTopLevel">
			<Controls>
				<Tooltip name="YourAddonNameSetTooltip" inherits="ZO_ItemIconTooltip"/>
			</Controls>
		</TopLevelControl>
At your row control's OnMouseEnter handler show the tooltip then and load the itemlink of the set via YourAddonNameSetTooltip:SetLink(itemLink) to it, and at the OnMouseExit hide it again.
Here an example from addon WishList: YourAddonNameSetTooltip -> WishListTooltip in this example

Lua Code:
  1. function WL.showItemLinkTooltip(control, parent, anchor1, offsetX, offsetY, anchor2)
  2.     if control == nil or control.data == nil or control.data.itemLink == nil then ClearTooltip(WishListTooltip) return nil end
  3.     if not WL.checkIfItemLinkItemIdIsValid(control.data.itemLink, nil) then return end
  4.     --d("itemLink: " .. control.data.itemLink)
  5.     anchor1 = anchor1 or TOPRIGHT
  6.     anchor2 = anchor2 or TOPLEFT
  7.     offsetX = offsetX or -100
  8.     offsetY = offsetY or 0
  9.     InitializeTooltip(WishListTooltip, parent, anchor1, offsetX, offsetY, anchor2)
  10.     WishListTooltip:SetLink(control.data.itemLink)
  11.     if (control.data.style) then
  12.         WishListTooltip:AddLine(LocalizeString("\n|c<<1>><<Z:2>>|r", ZO_NORMAL_TEXT:ToHex(), control.data.style), "ZoFontGameSmall")
  13.     end
  14. end


Custom context submenu (using LibCustomMenu) at the set search UI results list
Use the API functin
Code:
lib.RegisterCustomSetSearchResultsListContextMenu(addonName string, headerName string:optional, submenuName string:optional, submenuEntries table, visibleFunc function:optional)
Example:
Lua Code:
  1. local submenuEntries = {}
  2.         local subMenuEntry = {
  3.             label           = "Test entry name",
  4.             callback        = function() d("Test entry name") end
  5.         }
  6.         table.insert(submenuEntries, subMenuEntry)
  7.  
  8.         local visibleFunc = function(rowControl, setId)
  9.             if rowControl == nil then return false end
  10.             return true
  11.         end
  12.         lib.RegisterCustomSetSearchResultsListContextMenu("MyAddonTest", "Header test", "Submenu test", submenuEntries, visibleFunc)

Unique setId
The API provides an unique setId for items which belong to a set.
You need an itemLink of the item you would like to check and are able to use the following API function to get the setId and some other parameters as well.
Code:
* GetItemLinkSetInfo(*string* _itemLink_, *bool* _equipped_)
** _Returns:_ *bool* _hasSet_, *string* _setName_, *integer* _numBonuses_, *integer* _numEquipped_, *integer* _maxEquipped_, *integer* _setId_

Important: The data this API function GetItemLinkSetInfo(itemLink) provides is NOT stored redundantly inside the library LibSets!
So please be sure to get the parameters "numBonuses", "numEquipped", "maxEquipped" by help of this ESO API function.

If you need e.g. the "_numEquipped_" parameter info you need to build an itemLink of a set's itemId, like this:
You can use the function LibSets.BuildItemLink(LibSets.GetSetItemId(setId, equipType)) to build the itemLink and then use the API function GetItemLinkSetInfo(itemLink, false) to get this information.

What constants can be used?
The non-API version dependent constants are available within this library's files LibSets_ConstantsLibraryInternal.lua and LibSets_Constants_All.lua.
-> Please check these file for the possible constants for:
-LibSet tableKeys
-LibSet setTypes & names
-DLC Ids (see above)
-LibSet Undaunted Chest Data & names
-LibSets Dropmechanics (dungeon, overland, cyrodiil, etc.)


Where is the data?
The setsData is stored inside the included excel document LibSets_SetData.xlsx. From this file the lua contents for the following files is created:
The setsData is stored in the file LibSets_Data_All.lua
Inside this file there is a table LibSets.setInfo which provides the set information from the included excel.
And there are many pre-loaded (scanned ingame multilingual, shrinked and stored in this lua file) tables for the set itemIds, set names /multi language)m wayshrineNodeIndices mapping to their zoneId, and others.
-The file itsself got comments to describe how to get the data needed and what format is needed.

DO NOT ACCESS THESE TABLES DIRECTLY BUT USE THE API FUNCTIONS like LibSets.GetAll* to READ THE PRELOADED DATA!
Else you will get error messages as the data is sotmetimes compressed and needs to be decompressed first!

API functions of the library:

Global variable of the library to access it:
Code:
LibSets
PLEASE CHECK THE FILE LibSets.lua for the API functions (starting at "-- Global helper functions")

Below are only some important ones:
Lua Code:
  1. ------------------------------------------------------------------------
  2. --  Global library check functions
  3. ------------------------------------------------------------------------
  4. --Returns a boolean value, true if the sets of the game were already loaded/ false if not
  5. --> Returns:    boolean areSetsLoaded
  6. function lib.AreSetsLoaded()
  7.  
  8. --Returns a boolean value, true if the sets of the game are currently scanned and added/updated/ false if not
  9. --> Returns:    boolean isCurrentlySetsScanning
  10. function lib.IsSetsScanning()
  11.  
  12. --Returns a boolean value, true if the sets database is properly loaded yet and is not currently scanning
  13. --or false if not.
  14. --This functions combines the result values of the functions LibSets.AreSetsLoaded() and LibSets.IsSetsScanning()
  15. function lib.checkIfSetsAreLoadedProperly()


Updating the library with new PTS data:
If you want to know what is to do as the library needs an update with new PTS data, check files "LibSets.lua" AND "LibSets_Debug.lua" at the top and read + understand the steps needed please!
Basically it's using LibSets.DebugGetAllData() once, then wait until all itemIds are scanned for sets, and after a few reloaduis (where all languages are scanned) it will switch back to your client language where you've started.
After that you need to backup the /PTS/SavedVariables/LibSets.lua file and check the SV debug table for the scanned compressedItemIds, wayshrine names, DLC&chapter collectibleIds (maybe you need to use other debug functions to find the correct ones. Chapters often work, DLCs need another collectible ID...), weapon types, armor types, equipment types, jewelry types, dungeons, set names (Attention: You need to transfer the scanned compressedItemIds to file LibSets_Data.lua FIRST before you are able to get the other languages setNames! Else only the client language where you've started the LibSets.DebugGetAllData() is correct and all others show "n/a" only! After having transfered the compressedItemIds to the data file you need to run LibSets.DebugGetAllData(true, false, true) again so that no new itemIds are scanned but ONLY the names will be updated to the SavedVariables.).
All data of the SV files need to be cleaned from the leading [<number>] = " table indices & " and the taling ", and then split at the | chars into the LibSets_Data.xlsx spreadsheet. Each SV data relates to 1 Excel map! You can use the map "Dumped data" to split the SV data.
Make sure to NOT overwrite ANY excel formula if you copy&paste data! Only past in data to fields without formula and then pull down the formulas from above lines to your new added lines.

You can use the slash command /libsets to get a list of supported debug function calls.
/libsets getall will scan the itemIds for sets, detect the names, wayshrines, zones, dungeons etc. and write it to the SavedVariables.
If it was already done for the current APIversion and you want to re-start it, use /libsets getall true

GitHub - If you want to contribute
LibSets on GitHub
LibSets for PTS on GitHub

Most up 2 date excel document for the LibSets data, like sets, zones, maps, wayshrines, ...
Download excel from github "Baertram/LibSets"
0.6.6 - 2024-03-27
-Fixed current zone button at set collecitons UI to repsect settings for it (show/hide)
-Fixed UI error at reconstruction UI if current zone button was disabled
-Fixed set search UI bugs
-Updated mythic item drop locations "Torc of the Last Ayleid King"


0.6.5 - 2024-03-12
-Updated API
-Updated sets data and added new sets of "Scions of Ithelia"
-Fixed some bugs
-Made set search UI (slach command /lss) tooltips stay on top
-Changed set search UI favorites to provide more than jst a star (pve stam/mag dd, stam/mag heal tank, hybrid, pvp stam/mag dd, stam/mag heal, tank, hybrid, sneak, farm, bow, 2hd, dual wield, frost staff, fire staff, lighning staff)
Old star icons are kept at the category "star" now.
You can apply multiple favorite categories to 1 set item via right click context menu but the set search UI list will always show only the first icon! But the search will find all relevant marked ones properly.
->See addon images for the favories and context menus.

Removing all favorite categories saved at all sets can be done via the set search UI settings menu "gear" button top right at the set search UI. Attention: Removing tehm will be directly and non-restorable, there is no security question or "Are you sure?" dialog!

0.6.3 - 2023-11-05
-Fixed dungeon/trial zoneIds
-Removed non necessary files
-Added more context menu entries at the set search UI filter dropdowns:
--Select all
--Invert selection
-Added more context menu entries to the set search UI results list:
--Drop zones
--Wayshrines
-Added support for custom addon context menu entries at the set seatch UI via API call to:
function lib.RegisterCustomSetSearchResultsListContextMenu(addonName, headerName, submenuName, submenuEntries, visibleFunc)
-> 1st addon to use it is: WishList

0.6.2 - 2023-10-30
-Restructured the library files and folders (excel and oher data is in the Data subfolder now)
--> Make sure to delete the COMPLETE LibSets folder if you update this library so all old files and folders are gone!!!
-Reworked about all sets's data in the excel
-Fixed many translaion bugs
-Fixed many other bugs
-Fixed many tooltip bugs, like internal library data got damaged (e.g. multilanguage set names were removed) if a tooltip showed
-Tooltips drop locations by zone are more compact now: Same zone drop locations sum with a ; now (after each other)
-Updated APIversion and data for Update 40 API101040
-Added new API functions to get zoneIds of public dungeons, dungeons/trials
-Added new API functions to get setIds of a zoneId, current zone's ID/name/Sets
-Updated the /libsets and /ls* slash command help shown in chat
-Added a complete new set search user interface which you can show/hide via slash command /lss or /libsets search
A settings menu at the top right of the search UI can be used to change a few settings.
Moving the mouse above the results list will show a tooltip of that set.
You can right click any results list entry to save the set as a favorite, with a yellow star icon showing that to you.
Or link the set to chat, copy the set info text and drop locations (including textures of the drop info, or without) from a copy dialog box.
Open a fixed popup tooltip at the right for example, to compare that set with the next dynamic tooltip shown at the left.
-> Tooltip settings can be changed at the LibSets settings menu (LibAddonMenu-2.0)
The dropdown boxes are multiselect so each selected entry filters!
Changing the multiselect filters needs to actively press the search button to apply the filters!
Text editboxes will directly apply the search, without pressing the search button.
Right click context menus at the multiselect dropdowns or editboxes provide extra possibilities, like a search history (editboxes) or directly choose some sets (favorites, currentzone).

0.6.1 - 2023-09-04
Fixed missing Apocrypha/TelVanni Peninsula set collections to zoneId mapping

0.6.0 - 2023-08-25
-Updated sets for API101039
-Updated new drop location types
-Updated translations (zh Chinese is still missing for LibSets texts)
-Updated other PvP sets for imperial city & sewers with new loot possibility LIBSETS_DROP_MECHANIC_IMPERIAL_CITY_TREASURE_TROVE_SCAMP
-Updated some Cyrodiil and IC sets info in excel (
New drop location possibilities are ( / means OR ):
Cyrodiil Sets:
LIBSETS_DROP_MECHANIC_MAIL_PVP_REWARDS_FOR_THE_WORTHY,
LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_BRUMA / LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CROPSFORD / LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_VLASTARUS,
LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CHEYDINHAL / LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CHORROL_WEYNON_PRIORY / LIBSETS_DROP_MECHANIC_CITY_CYRODIIL_CHEYDINHAL_CHORROL_WEYNON_PRIORY,
LIBSETS_DROP_MECHANIC_AP_ELITE_GEAR_LOCKBOX_MERCHANT,
LIBSETS_DROP_MECHANIC_CYRODIIL_BOARD_MISSIONS,
LIBSETS_DROP_MECHANIC_OVERLAND_BOSS_DELVE,
LIBSETS_DROP_MECHANIC_DOLMEN_HARROWSTORM_MAGICAL_ANOMALIES
-Fixed Lost Depths DLC translation text achievementCategoryId

0.5.9 - 2023-05-18
-Updated API and versions
-Added Necrom sets data

0.5.8 - 2023-04-15
Fixed Sets current zone button tooltip error if LibCustomMenu was disabled

0.5.7 - 2023-04-10
Fixed starter zones scrolling to, from triangle button at set collecti
ons

0.5.6 - 2023-04-10
Added setting to show small triangle button at the set collections.
If LibCustoMenu is enabled: The button opens a context menu with 2 entries:
-Scroll to parent zone sets (e.g. if you are inside a delve the aprent zone is the zone where the delve is located in)
-Scroll to zone sets
If LibCustomMenu is disabled the button's tooltip will change and the button will croll to the curent zone's sets (if available) or the parent zone's sets

0.5.5 - 2023-04-10
Fixed High Isle zone recognition (for collected set items)

0.5.4 - 2023-03-18
-Fixed wrong zoneId for Darkshade Caverns dungeon
-Updated API and versions

0.5.3 - 2023-02-01
LibSets v0.53
-Added new constant DLC_SCRIBES_OF_FATE
-Added new sets of DLC Scribes of Fate
-Updated set names of all sets
-Updated set drop locations
-Updated wayshrine data
-Updated set to zone lookup table
-Updated sets data of all sets (weapon, armor, jewelry, equipType, itemIds)
-Added Mythic drop locations of latest mythic sets
-Added new drop mechnanic LIBSETS_DROP_MECHANIC_HARVEST_NODES and changed the ones of LIBSETS_DROP_MECHANIC_OVERLAND_LOOT which were harvest nodes to this new drop mechanic

-Added API function LibSets.RegisterCustomTooltipHook(tooltipCtrlName, addonName) to register a custom tooltipControl of any addon to show the LibSets added tooltip texts (at the bottom) too

--Register a custom tooltip control of type CT_TOOLTIP that inherits from ZO_ItemIconTooltip for the LibSets added tooltip data
--(added to the bottom, during function OnAddGameData is called)
-->Important: The tooltipCtrl of tooltipCtrlName !must! have a subtable dataEntry.data or .data which contains an entry .itemLink with the itemLink of the item,
--> or the tooltipCtrl of tooltipCtrlName !must! have the entries .bagIndex and .slotIndex where the itemLink can be build from!
--tooltipCtrlName String
--addonName String
-->Returns true if LibSets tooltip hook was added to the internal tables (will be hooked at EVENT_PLAYER_ACTIVATED once, or if a new hook is added later via this function)
-->Returns false if it was already added
-->Returns nil if any error happens
function LibSets.RegisterCustomTooltipHook(tooltipCtrlName, addonName)

0.5.2 - 2023-01-26
-Changed GetSetName and GetSetNames functions to benefit from cached setNames (generated by API function GetAllSetNames) data too

-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" }

0.5.1 - 2023-01-05
-Added ZH (Chinese) language set names
-Removed some obsolete code and changed some to more dynamic

0.5.0 - 2022-09-25
-Updated API: Ready for live "High Isle" and PTS "Firesong"
-Added Firesong sets data
-Added constants for DLC_TYPE_*
-Added API functions:

--Returns the dlcType as number for the setId
--> Parameters: setId number: The set's setId
--> Returns: dlcType number, or NIL if set's DLCType is unknown
function lib.GetDLCType(setId)

--Returns the name of the DLC type by help of the DLC type id
--> Parameters: dlcId number: The DLC id given in a set's info
--> Returns: name dlcTypeName
function lib.GetDLCTypeName(dlcTypeId)

--Returns the table of DLC types of LibSets (the constants in LibSets.allowedDLCTypes, see file LibSets_ConstantsLibraryInternal.lua)
function lib.GetAllDLCTypes()


-Added slash commands to show the DLCs, chapters or both in order of appearance
/libsetsdlcsandchapters
/dlcsandchapters
/libsetsdlcs
/dlcs
/libsetschapters
/chapters


0.4.9 - 2022-09-20
-Updated API
-Removed old setIds and code
-Added slash command /libsetspreview or /lsp <setId/setName> to search for set names/ids and preview a tooltip of that set (default: legendary divine chest -> if not available any other random item of the set)
-->Shows tooltip of the set item and returns the itemlink to chat input field
-Optional dependency LibSlashCommander was added for the set name search (multi language). Type /lsp to search in client language or /lsp<lang> e.g. /lspde to search for German set names.
Or just type /lsp <setId number> e.g. /lsp 633 to show that's set item

0.4.8 - 2022-07-17
Added new PTS API101035 "Lost Depths" sets
-Updated excel with setIds, wayshrines, setCollection2zoneId mapping, maps, zones, wayshrine names
-Updated lua with setIds, setData, wayhrine Ids, new set ids, compressed itemIds, set type data (armor, weapon, jewelry, equip type), DLC data, dungeon data, etc.
-Fixed debug function to show the group scene + dungeon finder (until ZOs fixed their own code to show them properly...)
-Fixed settings menu to show version
-Added 3rd boolean parameter "onlyNames" to debug API function LibSets.DebugGetAllData(resetAPI, noSetItemIds, onlyNames) which will only reset the name depending data in the debug SavedVariables if set to true. This way previously scanned itemIds, set equip types, weapon types etc. will be kept and only the localization dependent names will be reset

0.4.7 - 2022-06-25
-Updated data files
-Updated dependencies
-Added missing new DLC region High Isle to itemSetCollection lookup tables
-Removed PTS data and transferred them to live data

0.4.6 - 2022-05-15
-Fixed zoneId of Dreadsail Reef
-Fixed error in lib.GetNumItemSetCollectionZoneUnlockedPieces(zoneId)
-> Thanks to DeadSoon

0.4.5 - 2022-04-21
-Updated API for 101034
-Updated Excel
-Added High Isle sets and data
-Removed non-used set proc code

0.4.4 - 2022-03-29
Fixed new reconstruction costs tooltip to throw no error if the costs could not be determined. The text will be just missing then.

0.4.3 - 2022-03270
-Added tooltip setting for "Reconstruction costs in transmute crystals":
Attention: This settings is shared with "Needed traits" as both cannot apply at the same time. Craftable sets got traits researched needed, non-craftable provide the reconstruction possibility
-Fixed API functions using setCollectionCategory to zoneIds
-Some set collection item to zoneId fixes
-Several other setdata fixes


0.4.2 - 2022-03-20
-Fixed tooltips at some controls
-Fixed drop zoneIds of The Deadlands (was taking Deadlands zoneId from Balckwood "Deadlands" portal by accident -> "name find")
-Fixed data of set item collections dlc zones and dungeons

0.4.1 - 2022-03-15
Fixed mixed-up EN and ES drop mechanic names


0.4.0 - 2022-03-12
Fixed API function for set collection item counts

0.3.9 - 2022-03-12
Fixed typo in line 1893

0.3.8 - 2022-03-12
Updated for Ascending Tide API101033, and working on current live Deadlands
-Updated sets for Ascending Tide
-Fixed many other sets data (drop zoneId, drop mechanics, dropMechanicBossOrDroppedByName, undaunted chest id, ...)
-Added optional LibAddonMenu-2.0 dependency for a settings menu
-Added tooltips to set items, configurable in the optional settings menu (disabled by default)

For devs:
-Added new setType: LIBSETS_SETTYPE_IMPERIALCITY_MONSTER
-Added new drop mechanics:
[16] = "LIBSETS_DROP_MECHANIC_BATTLEGROUND_VENDOR", --Battleground vendor
[17] = "LIBSETS_DROP_MECHANIC_TELVAR_EQUIPMENT_LOCKBOX_MERCHANT", --Tel Var equipment lockbox merchant
[18] = "LIBSETS_DROP_MECHANIC_AP_ELITE_GEAR_LOCKBOX_MERCHANT", --Alliance points Elite gear merchant
[19] = "LIBSETS_DROP_MECHANIC_REWARD_BY_NPC", --A named NPC rewards this item
[20] = "LIBSETS_DROP_MECHANIC_OVERLAND_OBLIVION_PORTAL_FINAL_CHEST", --Oblivion portal final boss chest
[21] = "LIBSETS_DROP_MECHANIC_DOLMEN_HARROWSTORM_MAGICAL_ANOMALIES", --Dolmen, Harrowstorms, Magical anomalies reward
[22] = "LIBSETS_DROP_MECHANIC_DUNGEON_CHEST", --Chests in a dungeon Truhen in einem Verlies
[23] = "LIBSETS_DROP_MECHANIC_DAILY_QUEST_REWARD_COFFER", --Daily quest reward coffer Tägliche Quest Belohnungs-Kisten
[24] = "LIBSETS_DROP_MECHANIC_FISHING_HOLE", --Fishing hole
[25] = "LIBSETS_DROP_MECHANIC_OVERLAND_LOOT", --Loot from overland items
[26] = "LIBSETS_DROP_MECHANIC_TRIAL_BOSS", --Trial bosses
[27] = "LIBSETS_DROP_MECHANIC_MOB_TYPE", --A type of mob/critter
[28] = "LIBSETS_DROP_MECHANIC_GROUP_DUNGEON_BOSS", --Bosses in group dungeons
[29] = "LIBSETS_DROP_MECHANIC_CRAFTED", --Crafted


-Added new API functions:

--Returns string itemSetCollectionKey "setId:itemSetCollectionSlotId" of the itemLink
--identifying a set item by setId and the equipment slot (e.g. hands, chest, ...) which potentially could have different
--itemIds
function lib.GetItemSetCollectionsSlotKey(itemLink)

--Returns the complete mapping table between set item collections parentCategory, category and zoneIds
--> See file LibSets_Data_All.lua, table lib.setDataPreloaded[LIBSETS_TABLEKEY_SET_ITEM_COLLECTIONS_ZONE_MAPPING]
function lib.GetItemSetCollectionToZoneIds()

--Get the number of unlocked and total itemSetCollection pieces in a categoryId (categoryId needs to be the categoryId of
--the Item Set Collections UI, see mapping table at file LibSets_Data_All.lua ->
--number categoryId The zone's categoryId
--returns number sumNumUnlocked, number sumNumTotal
function lib.GetNumItemSetCollectionCategoryUnlockedPieces(categoryId)

--Get the number of unlocked and total itemSetCollection pieces in a zoneId
--number zoneId The zone's ID
--returns number sumNumUnlocked, number sumNumTotal
function lib.GetNumItemSetCollectionZoneUnlockedPieces(zoneId)

--Open the item set collections book of the zoneId. If more than 1 categoryId was found for the zoneId,
--the 1st will be opened!
function lib.OpenItemSetCollectionBookOfZone(zoneId)



0.3.7 - 2022-01-23
-Updated API and dependencies versions
-Fixed function lib.IsSetByItemLink(itemLink) for non-ESO sets
-Added API function:

--Returns the id number of the set nameprovided
--> Parameters: setName String: The set's name
--> lang String: The language to check for. Can be left empty and the client language will be used then
--> Returns: NILABLE number setId, NILABLE table setNames
function lib.GetSetByName(setName, lang)


0.3.6 - 2021-10-30
-Fixed wrong variable name "dlcAndChapterAchievementIds" which lead to a lua error on PTS

0.3.5 - 2021-10-29
-Updated API
-Added sets of Deadlands DLC
-Fixed veteran dungeon zoneIds in sets data (thanks remosito for the hint)

0.3.4 - 2021-09-16
Updated "Caustic Arrow" sets to be non-proc sets in PvP

0.3.3 - 2021-08-24
-Updated API data to be live for "Waking Flame" sets data
-Fixed LibSets.DebugGetAllCollectibleDLCNames
-Fixed missing/wrong DLC names (some hardcoded as the game does not provide any API Ids for the dungeon only DLCs)
-Fixed some set entries
-Added new column to excel "Sets with proc allowed in PvP/AvA"
-Added new API functions for the sets with proc allowed in PvP/AvA:
Code:
--Returns true if the setId provided got a set proc which is currently allowed within PvP/AvA campaigns
--> Parameters: setId number: The set's setId
--> Returns:    boolean isSetWithProcAllowedInPvP
function lib.IsSetWithProcAllowedInPvP(setId)

--Returns the setsData of all the setIds which are allowed proc sets in PvP/AvA campaigns
--> Parameters: none
--> Returns:    nilable:LibSetsAllSetProcDataAllowedInPvP table
function lib.GetAllSetDataWihtProcAllowedInPvP()
0.3.2 (included 0.3.1) - 2021-08-05
-Updated sets for Waking Flame, API101031
-Updated zones, wayshrines etc.
-Changed debug funcitons to automatically open the dungeon/map of wayshrines
-Worked on Debug functions
-Added slash command /libsets (enter to show help/list of available slash commands)
-Fixed setNames and setData DLCs etc.

0.3.0
-Updated API to Blackwood
-Added Blackwood sets
-Fixed some other sets
-Added item set collection zoneIds for the new dungeons
-Added constant DLC_BLACKWOOD


0.2.9
-Fixed wayshrine IDs for monster sets (Thanks to iFedix!)
-Updated APIversion
-Moved PTS to live sets

-Added API functions:
--Returns a table of setIds where the set got items with a given armorType
--> Parameters: armorType number: The armorType to check for
--> Returns: armorTypeSetIds table
function lib.GetAllArmorTypeSets(armorType)


--Returns a table of setIds where the set got items with an armorType
--> Returns: armorSet table
function lib.GetAllArmorSets()


--Returns a table of setIds where the set got items with a jewelryType
--> Returns: jewelrySets table
function lib.GetAllJewelrySets()


--Returns a table of setIds where the set got items with a weaponType
--> Returns: weaponSets table
function lib.GetAllWeaponSets()


--Returns a table of setIds where the set got items with a given weaponType
--> Parameters: weaponType number: The weaponType to check for
--> Returns: weaponTypeSetIds table
function lib.GetAllWeaponTypeSets(weaponType)


--Returns a table of setIds where the set got items with a given equipType
--> Parameters: equipType number: The equipType to check for
--> Returns: equipTypeSetIds table
function lib.GetAllEquipTypeSets(equipType)


0.2.8
Fixed WEAPONTYPE_NONE and ARMORTYPE_NONE checks for new API functions

0.2.7
-Fixed Is*Set functons to return properly true/false (thanks to Keldor for the info about IsMythicSet)
-Added preloaded data for the set's weapontypes, armortypes, sets with jewelry items
-Added local library check tables isArmorSet, isWeaponSet and isJewelrySet
-Changed debugging functions to provide the new tables in the SavedVariables, upon usage of function DebugScanAllSetData:
LIBSETS_TABLEKEY_SETS_EQUIP_TYPES = "setsEquipTypes"
LIBSETS_TABLEKEY_SETS_ARMOR = "setsWithArmor"
LIBSETS_TABLEKEY_SETS_ARMOR_TYPES = "setsArmorTypes"
LIBSETS_TABLEKEY_SETS_JEWELRY = "setsWithJewelry"
LIBSETS_TABLEKEY_SETS_WEAPONS = "setsWithWeapons"
LIBSETS_TABLEKEY_SETS_WEAPONS_TYPES = "setsWeaponTypes"

-Added parameters traitType and enchantSearchCategoryType to the function lib.GetSetItemId. Specifying the traitType and/or enchantSearchCategoryType will filter the itemId returned to these parameters (just like the existing parameter equipType already does)
--If the setId only got 1 itemId this function returns this itemId of the setId provided.
--If the setId got several itemIds this function returns one random itemId of the setId provided (depending on the 2nd parameter equipType)
--If the 2nd parameter equipType is not specified: The first random itemId found will be returned
--If the 2nd parameter equipType is specified: Each itemId of the setId will be turned into an itemLink where the given equipType is checked against.
--If the 3rd to ... parameter *Type is specified: Each itemId of the setId will be turned into an itemLink where the given *type is cheched against.
--Only the itemId where the parameters fits will be returned. Else the return value will be nil
--> Parameters: setId number: The set's setId
--> equipType optional number: The equipType to check the itemId against
--> traitType optional number: The traitType to check the itemId against
--> enchantSearchCategoryType optional EnchantmentSearchCategoryType: The enchanting search category to check the itemId against
--> Returns: number setItemId
function lib.GetSetItemId(setId, equipType, traitType, enchantSearchCategoryType)


--Added new API functions:

--Returns the possible armor types's of a set
--> Parameters: setId number: The set's id
--> Returns: table armorTypesOfSet: Contains all armor types possible as key and the Boolean value
--> true/false if this setId got items of this armorType
function lib.GetSetArmorTypes(setId)

--Returns the possible weapon types's of a set
--> Parameters: setId number: The set's id
--> Returns: table weaponTypesOfSet: Contains all weapon types possible as key and the Boolean value
--> true/false if this setId got items of this weaponType
function lib.GetSetWeaponTypes(setId)

--Returns the possible equip types's of a set
--> Parameters: setId number: The set's id
--> Returns: table equipTypesOfSet: Contains all equip types possible as key and the Boolean value
--> true/false if this setId got items of this equipType
function lib.GetSetEquipTypes(setId)

--Check if any item of the itemId specified is currently equipped and return the setId, the number of the equipped, and
--the maximum equipped number of items of this set.
--> Parameters: itemId number: The itemId of any set's item
--> Returns:
--> equippedItems number Number of currently equipped items of this setId
--> maxEquipped number Number of maximum equipped items of this setId
--> setId number The setId of the itemId specified
function lib.GetNumEquippedItemsByItemId(itemId)

--Check if any item of the setId specified is currently equipped and return the number of the equipped, and the maximum
--equipped number of items of this set.
--> Parameters: setId number: The setId
--> Returns:
--> equippedItems number Number of currently equipped items of this setId
--> maxEquipped number Number of maximum equipped items of this setId
--> itemId number The itemId of an example item of the setId
function lib.GetNumEquippedItemsBySetId(setId)

--Returns true/false if the set got items with a given armorType
--> Parameters: setId number: The set's setId
--> armorType number: The armorType to check for
--> Returns: isArmorTypeSet boolean
function lib.IsArmorTypeSet(setId, armorType)

--Returns true/false if the set got items with light armor
--> Parameters: setId number: The set's setId
--> Returns: isLightArmorSet boolean
function lib.IsLightArmorSet(setId)

--Returns true/false if the set got items with medium armor
--> Parameters: setId number: The set's setId
--> Returns: isMediumArmorSet boolean
function lib.IsMediumArmorSet(setId)

--Returns true/false if the set got items with heavy armor
--> Parameters: setId number: The set's setId
--> Returns: isHeavyArmorSet boolean
function lib.IsHeavyArmorSet(setId)

--Returns true/false if the set got items with armor
--> Parameters: setId number: The set's setId
--> Returns: isArmorSet boolean
function lib.IsArmorSet(setId)

--Returns true/false if the set got items with jewelry
--> Parameters: setId number: The set's setId
--> Returns: isJewelrySet boolean
function lib.IsJewelrySet(setId)

--Returns true/false if the set got items with weapons
--> Parameters: setId number: The set's setId
--> Returns: isWeaponSet boolean
function lib.IsWeaponSet(setId)

--Returns true/false if the set got items with a given weaponType
--> Parameters: setId number: The set's setId
--> weaponType number: The weaponType to check for
--> Returns: isWeaponTypeSet boolean
function lib.IsWeaponTypeSet(setId, weaponType)

--Returns true/false if the set got items with a given equipType
--> Parameters: setId number: The set's setId
--> equipType number: The equipType to check for
--> Returns: isEquipTypeSet boolean
function lib.IsEquipTypeSet(setId, equipType)


0.2.6
--Check if any item of the itemId specified is currently equipped and return the setId, the number of the equipped, and
--the maximum equipped number of items of this set.
--> Parameters: itemId number: The itemId of any set's item
--> Returns:
--> equippedItems number Number of currently equipped items of this setId
--> maxEquipped number Number of maximum equipped items of this setId
--> setId number The setId of the itemId specified
function lib.GetNumEquippedItemsByItemId(itemId)

--Check if any item of the setId specified is currently equipped and return the number of the equipped, and the maximum
--equipped number of items of this set.
--> Parameters: setId number: The setId
--> Returns:
--> equippedItems number Number of currently equipped items of this setId
--> maxEquipped number Number of maximum equipped items of this setId
--> itemId number The itemId of an example item of the setId
function lib.GetNumEquippedItemsBySetId(setId)

0.2.6
-Added sets data of next patch "Flames of Ambition" API 100034
Compatible with current live version "Markarth" and PTS "Flames of Ambition"
-Updated excel

0.2.4
-Moved Markarth sets and constants to the normal table as Markarth is live
-Fixed excel comments
-Updated set proc data. Many thanks again to ExoYs!
-Added weapon types of set items in library table
-Added API function
Code:
LibSets.GetSetWeaponTypes(setId)
-Added new API functions for the item set collections book UI, e.g. get the current zoe or parent zone and show the item set collections book UI for this zone. Get the zoneId of a item set collection book's parent and subcategory, get the categoryData for a zoneId, etc.
Code:
--Returns the zoneIds (table) which are linked to a item set collection's categoryId
--Not all categories are connected to a zone though! The result will be nil in these cases.
--Example return table: {148}
function LibSets.GetItemSetCollectionZoneIds(categoryId)

--Returns the categoryIds (table) which are linked to a item set collection's zoneId
--Not all zoneIds are connected to a category though! The result will be nil in these cases.
--Example return table: {39}
function LibSets.GetItemSetCollectionCategoryIds(zoneId)

--Returns the parent category data (table) containing the zoneIds, and possible boolean parameters
--isDungeon, isArena, isTrial of ALL categoryIds below this parent -> See file LibSets_data_all.lua ->
--table lib.setDataPreloaded -> table key LIBSETS_TABLEKEY_SET_ITEM_COLLECTIONS_ZONE_MAPPING
--Example return table: { parentCategory=5, category=39, zoneIds={148}, isDungeon=true},--Arx Corinium
function LibSets.GetItemSetCollectionParentCategoryData(parentCategoryId)

--Returns the category data (table) containing the zoneIds, and possible boolean parameters
--isDungeon, isArena, isTrial -> See file LibSets_data_alllua -> table lib.setDataPreloaded ->
--table key LIBSETS_TABLEKEY_SET_ITEM_COLLECTIONS_ZONE_MAPPING
--Example return table: { parentCategory=5, category=39, zoneIds={148}, isDungeon=true},--Arx Corinium
function LibSets.GetItemSetCollectionCategoryData(categoryId)

--Get the current map's zoneIndex and via the index get the zoneId, the parent zoneId, and return them
--+ the current zone's index and parent zone index
--> Returns: number currentZoneId, number currentZoneParentId, number currentZoneIndex, number currentZoneParentIndex
function LibSets.GetCurrentZoneIds()

--Open the item set collections book of the current parentZoneId. If more than 1 categoryId was found for the parentZoneId,
--the 1st will be opened! Returns true if UI has shown a category node successfully
function LibSets.OpenItemSetCollectionBookOfCurrentParentZone()

--Open the item set collections book of the current zoneId. If more than 1 categoryId was found for the zoneId,
--the 1st will be opened! Returns true if UI has shown a category node successfully
function LibSets.OpenItemSetCollectionBookOfCurrentZone()

0.2.3
-Updated API for Markarth
-Added Markarth sets to excel and lua code
-Fixed some debug functions and description texts
-Added new data about Set Procs, like abilityIds, timer info, etc. (thanks to ExoY!) into the excel and the lua code
-Added new set proc API functions to check if an set got a proc and return data about it (check the file LibSets.lua and search for "Set PROC functions" ~line 1509 for more information and comments about the functions. Attention: The functions RegisterSetProcEventCallbackForAbilityIds and unregisterSetProcEvent* are NOT TESTED YET and only in there as examples. DO NOT USE THEM or if you use them please share your info if they work as intended. Thank you)

0.2.2
-Fixed non-EN missing names of sets (e.g. of "Talfyg's Treachery") causing errors within WishList e.g.
-Moved Stonethorn sets and zoneIds to current API tables
-Fixed empty old-API table checks to run without reason (if no entries are given)

0.2.1
LibSets API 100032 Stonethorn PTS
-Added setIds
-Added itemIds of new setIds
-Added wayshrineIds of new dungeons
-Added zoneIds of new dungeons
-Added set names de, en, fr, ru
-Updated API functions for debugging to show new found setIds
-Added SavedVariables key "NewSetIds" which can be filled via setItemid scanning and or function "LibSets.DebugShowNewSetIds()".
Will be filling the SV table "NewSetIds" -> "Subtable GetWorldName() -> ServerName" -> Subtable "GetAPIVersion()" -> API version with the [number index] = value setid|setNameClean

0.2.0
Fixed function LibSets.GetSetItemId -> returns first found itemId again now

0.1.9
Updated Russian translations -> Thanks to adjutantt

0.1.8
Fixed: AddOnVersion tag in txt file
Fixed: DLCid DLC_BASE_GAME did not return a string for LibSets.GetDLCName -> returns "Elder Scrolls Online" now
Changed: Split up dropMechanic long names into shorter dropMechanic names and tooltips.
Functions like LibSets.GetDropMechanicName and LibSets.GetDropMechanic will return an additional parameter dropMechanicTooltip now

0.1.7
Fixed: SetType translations
Changed: Function to get all setTypes renamed from GetSetTypes to GetAllSetTypes properly
Added: Function GetAllDLCIds() -> Returns the DLCIds

0.1.6
-Updated API for Greymoor
-Added Greymoor sets including the mythic set items
-Added craftable sets wayshrine ids of Greymoor
-Added mythic setType (LIBSETS_TYPE
-Using set's itemIds compressing method by Dolgubon (thanks!) to reduce the filesize of the preloaded data a lot.
-The functions of the LibSets API, using the itemIds, will decompress the itemIds automatically and cache them until a reloadui happens.
Everything should work the same like before.
But only if you were using the API functions to the the itemIds! If you were accessing the itemIds or any other preloaded data directly by accessing LibSets.setInfo or LibSets.setDataPreloaded this will most likely fail now and throw error messages!
So change your addons tro properly use the API functions like LibSets.getAllSetIds(), LibSets.GetAllSetItemIds() and the other LibSets.GetAll* functions!

-Fixed setIds 237 and 238: Exchanged the needed trait count to craft them (thanks to ziggr!)
-Added functions:
--Returns true if the setId provided is a mythic set
--> Parameters: setId number: The set's setId
--> Returns: boolean isMythicSet
function lib.IsMythicSet(setId)


0.1.5
-Fixed Cyordiil setIds 480, 481,482: Settype corrected, traitsNeeeded=3 added. Thanks to snow for the info!

0.1.4
-Added constants: DLC_ITERATION_START (0) and DLC_ITERATION_END (pointing to the currently maximum DLC ID)
-Added API function LibSets.IsCurrentDLC(setId): Returns Boolean if the setId was added with the most current DLCId, or nil if the set got no DLCId assigned
-Function LibSets.GetSetInfo(setId) will return a new table entry "isCurrentDLC" (Boolean) in it's returned table, containing the value true/or false if the set was added with the most current DLCid

0.1.3
-Updated API
-Fixed description texts in files
-Fixed wrong set data
-Added new Harrowstorm set data
-Added preloaded itemIds, zone and wayshrine data multilanguage de, en, fr

0.1.2
-Updated API
-Simplified code of function IsVeteranSet and fixed return value to only be booean (not nilable), thanks to Scootworks!

0.1.1
Updated for PTS APIversion 100029 Dragonhold:
-Added new zones, wayhsrines, collectibleName, sets and constants for the library
-Renamed file with base constants to LibSets_ConstantsLibraryInternal.lua
-Changed loading of old data (no LibSets_data_$(APIVersion).lua needed anymore as one can update the current PTS version in file LibSets_Constants_All.lua in variable "APIVersions["PTS"]" and all data which is only meant to be loaded for this PTS version can be stored between a check function call:
if checkIfPTSAPIVersionIsLive() then ... end
-Moved packages and total a number of loop scans for the setItemIds to file LibSets_ConstantsLibraryInternal.lua, variables:
lib.debugNumItemIdPackages = 55 -- Increase this to find new added set itemIds after and update (last updated APIVersion 100029 Dragonhold)
lib.debugNumItemIdPackageSize = 5000 -- do not increase this or the client may crash!
-Fixed "miliseconds" typo in fileLibSets_Debug.lua, function scanAllSetData(). All setItemIds should be scanned properly now.
-Added "howto" information for an update of this library to file LibSets.lua (At the top)
-Added internal function checkIfSetExists(setId) which will check if a setId given in the preloaded setData tables really exists and will automatically skip the data fopr this set if it does not exist on the current game client (e.g. PTS setData on the live server)

0.1.0
-Removed API100027 files
-Changed data and constants files to use the ALL entry first and then try to find another API dependent filename
-Fixed LibZone debug functions

0.0.9
-Added a mapping table "wayshrineNodeIndex" to "zoneId" to be able to show the wayshrine of a set on the worldmap
-Added new API functions for the wayshrines
Code:
--Open the worldmap and show the map of the zoneId
--> Parameters: zoneId number: The zone's zoneId
function lib.openMapOfZoneId(zoneId)

--Open the worldmap, get the zoneId of the wayshrine wayshrineNodeId and show the wayshrine wayshrineNodeId on the map
--> Parameters: wayshrineNodeId number: The wayshrine's nodeIndex
function lib.showWayshrineNodeIdOnMap(wayshrineNodeId)

--Returns the wayshrineNodeIds's related zoneId, where this wayshrine is located
--> Parameters: wayshrineNodeId number
--> Returns:    zoneId number
function lib.GetWayshrinesZoneId(wayshrineNodeId)
-Changed parameters of the following API function. New 2nd parameter: withRelatedZoneIds boolean
Code:
--Returns the wayshrines as table for the setId. The table contains up to 3 wayshrines for wayshrine nodes in the different factions,
--e.g. wayshrines={382,382,382}. All entries can be the same, or even a negative value which means: No weayshrine is known
--Else the order of the entries is 1=Admeri Dominion, 2=Daggerfall Covenant, 3=Ebonheart Pact
--> Parameters: setId number: The set's setId
-->             withRelatedZoneIds boolean: Also provide a mappingTable as 2nd return value which contains the wayshrine's zoneId
-->             in this format: wayshrineNodsId2ZoneId = { [wayshrineNodeId1]= zoneId1, [wayshrineNodeId2]= zoneId2,... }
--> Returns:    wayshrineNodeIds table
function lib.GetWayshrineIds(setId, withRelatedZoneIds)
0.0.8
-Fixed wrong constants for 2 crafted sets (needed traits to craft), thanks Snow for the info.
-Changed Excel document to use the LibSets DLC_ID instead of plain numbers, for the generated setsData lua tables
-Moved redundant constants to a new file LibSets_Constants.lua, which will always be loaded.
All other API dependent constants remain in the LibSets_Constants_<APIVersion>.lua files

0.0.7
Fixed wrong constants in Scalebreaker set data.

0.0.6
-With version 0.0.6 the library got reworked totally.
Included you'll find an excel file LibSets_SetData.xlsx which contains the actual set data for the library.
The lua code neede dis created from this excel file.
-The SavedVariables ar enot needed anymore for this library (only if you the included debug functions).
All setsData is included, preloaded in the file LibSets_SetData_(APIVersion).lua (where APIVersion is the current game client's APIVersion e.g. 100027 for live's patch "Elsweyr" or 100028 for PTS's patch "Scalebraker").
-The library provides several API functions to get the set data, names, types, itemIds, etc.
-All itemIds of all setIds are included now, and not only 1 itemId (like in the past)
-SetNames for the supported languages come included
-Supported languages so far are: DE, EN, FR
If you want your language to be addded you can contact me via the private message system here on www.esoui.com.
You need to havbe the game client running on this new language and you need to run some debug functions and provide me some data from your SavedVariables afterwards.
-COmpatible with sets of API 100027 Elsweyr and 100028 Scalebreaker

---------------------------------------------------------------------------------
0.0.5
-Updated API to Elsweyr
-Added ##IsLibrary: true tag in manifest txt
-Fixed GetSetInfo function code
-Updated set itemIds with a preloaded table to speed up the scanning at new languages/APIVersions
-> Thanks to silvereyes for both changes!


0.0.4
Fixed "is scanning" and "is loaded" variables to prevent double scans at teh same time.
Added parameter "addonName" to function LibSets.LoadSets(override, addonName).
If you call the function you should specify the parameter "addonName" and pass your addon's name (String) in there so the chat output is able to show which addon called the LibSets.LoadSets function

0.0.3
Fixed lua error messages after sets were loaded.

0.0.2
Fixed:
-Loading of sets will show the updated counter for existing sets, where the localized name got updated, properly now.
-Loaded sets will be automatically scanned and added + saved to the SavedvAriables for each APIVersion + client language now
-After the sets were loaded (watch the chat for update messages during the set scan process) a dialog will ask you to do a reloadui now. If you click "no" the dialog will re-appear every 10 minutes until you click "Yes" or do a manual reloadui

Added:
API functions to check if sets are currently scanning or if the sets data was scanned and is provided (for other addons:
Check if the library is given and the sets were loaded like this
Code:
if LibSets and LibSets.AreSetsLoaded and LibSets.AreSetsLoaded() then --Sets are provided end
Code:
--Returns a boolean value, true if the sets of the game were already loaded/ false if not
--> Returns:    boolean areSetsLoaded
function LibSets.AreSetsLoaded()

--Returns a boolean value, true if the sets of the game are currently scanned and added/updated/ false if not
--> Returns:    boolean isCurrentlySetsScanning
function LibSets.IsSetsScanning()
Archived Files (60)
File Name
Version
Size
Uploader
Date
0.6.5
1MB
Baertram
03/12/24 03:12 PM
0.6.3
1MB
Baertram
11/04/23 05:35 PM
0.6.2
1MB
Baertram
10/30/23 11:56 AM
0.6.1
1MB
Baertram
09/04/23 07:47 AM
0.6.0
1MB
Baertram
08/25/23 12:05 PM
0.5.9
999kB
Baertram
05/18/23 08:09 AM
0.5.8
1006kB
Baertram
04/14/23 05:14 PM
0.5.7
1006kB
Baertram
04/10/23 04:06 PM
0.5.6
1006kB
Baertram
04/10/23 03:16 PM
0.5.5
1004kB
Baertram
04/10/23 09:36 AM
0.5.4
998kB
Baertram
03/17/23 05:28 PM
0.5.3
998kB
Baertram
02/01/23 05:42 PM
0.5.1
970kB
Baertram
01/05/23 12:25 PM
0.5.0
961kB
Baertram
09/25/22 10:31 AM
0.4.9
1MB
Baertram
09/19/22 06:27 PM
0.4.8
1MB
Baertram
07/17/22 08:53 AM
0.4.7
922kB
Baertram
06/25/22 08:29 AM
0.4.6
922kB
Baertram
05/15/22 03:45 PM
0.4.5
1MB
Baertram
04/20/22 05:43 PM
0.4.4
897kB
Baertram
03/29/22 12:40 PM
0.4.3
897kB
Baertram
03/27/22 11:25 AM
0.4.2
893kB
Baertram
03/20/22 02:13 PM
0.4.1
893kB
Baertram
03/15/22 03:48 AM
0.4.0
893kB
Baertram
03/12/22 04:28 PM
0.3.9
893kB
Baertram
03/12/22 10:53 AM
0.3.8
893kB
Baertram
03/12/22 05:13 AM
0.3.7
838kB
Baertram
01/23/22 09:38 AM
0.3.6
980kB
Baertram
10/30/21 12:33 PM
0.3.5
980kB
Baertram
10/29/21 05:39 AM
0.3.4
889kB
Baertram
09/16/21 12:22 PM
0.3.3
834kB
Baertram
08/23/21 05:21 PM
0.3.2
829kB
Baertram
08/05/21 08:28 AM
0.3.0
824kB
Baertram
06/01/21 06:04 AM
0.2.9
894kB
Baertram
03/14/21 02:05 PM
0.2.8
951kB
Baertram
02/10/21 06:06 PM
0.2.7
951kB
Baertram
02/10/21 02:23 PM
0.2.6
944kB
Baertram
01/30/21 09:32 AM
0.2.4
794kB
Baertram
11/21/20 06:49 PM
0.2.3
916kB
Baertram
11/02/20 07:00 AM
0.2.2
820kB
Baertram
09/19/20 08:43 AM
0.2.1
820kB
Baertram
08/07/20 08:32 AM
0.2.0
679kB
Baertram
05/16/20 06:25 PM
0.1.9
679kB
Baertram
05/16/20 04:59 AM
0.1.8
679kB
Baertram
05/10/20 02:58 PM
0.1.7
678kB
Baertram
05/10/20 01:42 PM
0.1.6
678kB
Baertram
05/07/20 04:42 PM
0.1.5
837kB
Baertram
03/31/20 03:18 AM
0.1.4
842kB
Baertram
03/27/20 01:40 PM
0.1.3
842kB
Baertram
02/24/20 05:20 AM
0.1.2
841kB
Baertram
11/28/19 02:41 PM
0.1.1
835kB
Baertram
10/12/19 10:49 AM
0.1.0
780kB
Baertram
08/23/19 10:24 AM
0.0.9
936kB
Baertram
07/28/19 09:03 AM
0.0.8
924kB
Baertram
07/27/19 08:30 AM
0.0.6
911kB
Baertram
07/14/19 11:02 AM
0.0.5
14kB
Baertram
05/19/19 06:24 PM
0.0.4
8kB
Baertram
02/03/19 08:21 AM
0.0.3
7kB
Baertram
02/01/19 10:40 AM
0.0.2
7kB
Baertram
01/30/19 04:11 PM
0.0.1
5kB
01/21/19 10:18 AM


Post A Reply Comment Options
Unread Yesterday, 10:04 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
Thanks for the feedback, hope it will work fine.

The setting just adds a button at the set collections UI (as it says: "Add a current zone/parent zone button to the set collections UI").
You can click that button to jump to the current zone (where your player is in, e.g. Grahtwood) quickly, or the parent zone (if you are in a dungeon/delve) so you do not have to find the zone yourself in the category scroll lists.

Button is shown as a small v top right at the set collections UI and shows a tooltip staring with "[LibSets]" too.


If LibCustomMenu is enabled it opens a small context menu once clicked.
If not, it will just select the current parent zone, or zone (if both are the same).

Originally Posted by sinnereso
Originally Posted by Baertram
Did not try it in a house yet, maybe that makes the diff.

Edit:
Nope, no error message at all. Tested with all languages.

But I think I found a bug where something might be wrong if you got the "Actual zone" button disabled in LibSets settings.
Do you have that disabled? 1st setting of LibSets


Try the updated version 0.6.6, it should hopefully not error anymore now
yes i do. infact i recently disabled that because i wasnt sure what it even was. the description to me was somewhat unclear.

**UPDATE** just checked it out with new update and it appears to be working fine now with "actual zone" disabled. I cant produce any errors.
Last edited by Baertram : 03/27/24 at 10:06 AM.
Report comment to moderator  
Reply With Quote
Unread Yesterday, 09:07 AM  
sinnereso
AddOn Author - Click to view AddOns

Forum posts: 244
File comments: 65
Uploads: 4
Originally Posted by Baertram
Did not try it in a house yet, maybe that makes the diff.

Edit:
Nope, no error message at all. Tested with all languages.

But I think I found a bug where something might be wrong if you got the "Actual zone" button disabled in LibSets settings.
Do you have that disabled? 1st setting of LibSets


Try the updated version 0.6.6, it should hopefully not error anymore now
yes i do. infact i recently disabled that because i wasnt sure what it even was. the description to me was somewhat unclear.

**UPDATE** just checked it out with new update and it appears to be working fine now with "actual zone" disabled. I cant produce any errors.
Last edited by sinnereso : 03/27/24 at 09:14 AM.
Report comment to moderator  
Reply With Quote
Unread Yesterday, 02:51 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
Did not try it in a house yet, maybe that makes the diff.

Edit:
Nope, no error message at all. Tested with all languages.

But I think I found a bug where something might be wrong if you got the "Actual zone" button disabled in LibSets settings.
Do you have that disabled? 1st setting of LibSets


Try the updated version 0.6.6, it should hopefully not error anymore now
Last edited by Baertram : 03/27/24 at 08:18 AM.
Report comment to moderator  
Reply With Quote
Unread 03/26/24, 05:38 PM  
sinnereso
AddOn Author - Click to view AddOns

Forum posts: 244
File comments: 65
Uploads: 4
well for me everytime i can cause the error by:

1. login/reloadui
2. access XMUTE station in my home in mournoth keep
3. swap between xmute/reconstruct tabs(eboth cause the error)

Then I have to reloadui again after cuz theres no way to exit the machine to start over.

Maybe its the player owned machines? I did test with 0 addons enabled other than libsets and it is upto date.

EN client, keyboard mode. If anything else is causing the issue id think its something ingame.
Last edited by sinnereso : 03/26/24 at 05:40 PM.
Report comment to moderator  
Reply With Quote
Unread 03/26/24, 03:30 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
Still not able to repro?!
What exactly, from login/reloadui to the error, do I need to do in single steps please.
1. Reloadui
2. Interact with transmute station in Clockwork City
3....
4....

Thanks

Originally Posted by sinnereso
confirmed.. with ALL addons disabled except for LibSets and still produces this error when switching between transmute station tabs. this is EN client on NA server PC.

Code:
user:/AddOns/LibSets/LibSets.lua:4553: attempt to index a nil value
stack traceback:
user:/AddOns/LibSets/LibSets.lua:4553: in function 'fragmentChange'
|caaaaaa<Locals> oldState = "showing", newState = "shown" </Locals>|r
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:132: in function 'ZO_CallbackObjectMixin:FireCallbacks'
|caaaaaa<Locals> self = [table:1]{state = "shown", allowShowHideTimeUpdates = F, fireCallbackDepth = 1}, eventName = "StateChange", registry = [table:2]{}, callbackInfoIndex = 2, callbackInfo = [table:3]{4 = F}, callback = user:/AddOns/LibSets/LibSets.lua:4551, deleted = F </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:144: in function 'ZO_SceneFragment:SetState'
|caaaaaa<Locals> self = [table:1], newState = "shown", oldState = "showing" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:153: in function 'ZO_SceneFragment:OnShown'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragmentTemplates.lua:16: in function 'ZO_SimpleSceneFragment:Show'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:163: in function 'ZO_SceneFragment:ShouldBeShown'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:233: in function 'ZO_SceneFragment:Refresh'
|caaaaaa<Locals> self = [table:1], oldState = "hidden" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:44: in function 'ZO_Scene:AddFragment'
|caaaaaa<Locals> self = [table:4]{name = "retrait_keyboard_root", wasShownInGamepadPreferredMode = F, disallowEvaluateTransitionCompleteCount = 0, fireCallbackDepth = 0, wasRequestedToShowInGamepadPreferredMode = F, state = "shown", restoresHUDSceneToggleGameMenu = F, restoresHUDSceneToggleUIMode = F}, fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:81: in function 'ZO_Scene:AddTemporaryFragment'
|caaaaaa<Locals> self = [table:4], fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:113: in function 'ZO_SceneManager_Base:AddFragment'
|caaaaaa<Locals> self = [table:5]{remoteSceneSequenceNumber = 9, hudSceneName = "hud", fireCallbackDepth = 0, isLoadingScreenShown = F, numRemoteTopLevelShown = 0, numTopLevelShown = 0, hudUISceneHidesAutomatically = T, initialized = F, exitUIModeOnChatFocusLost = F, hudUISceneName = "hudui"}, fragment = [table:1], state = "shown" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:142: in function 'ZO_SceneManager_Base:AddFragmentGroup'
|caaaaaa<Locals> self = [table:5], fragmentGroup = [table:6]{}, i = 2, fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:93: in function 'callback'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:287: in function 'MenuBarButton:Release'
|caaaaaa<Locals> self = [table:7]{m_highlightHidden = T, m_locked = T, m_state = 1}, upInside = T, skipAnimation = F, playerDriven = T, buttonData = [table:8]{categoryName = 10193, normal = "EsoUI/Art/Crafting/reconstruct...", disabled = "EsoUI/Art/Crafting/reconstruct...", highlight = "EsoUI/Art/Crafting/reconstruct...", descriptor = 10193, pressed = "EsoUI/Art/Crafting/reconstruct..."} </Locals>|r
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:657: in function 'ZO_MenuBarButtonTemplate_OnMouseUp'
|caaaaaa<Locals> self = ud, button = 1, upInside = T </Locals>|r
ZO_MainMenuCategoryBarButton1_MouseUp:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud, button = 1, upInside = T, ctrl = F, alt = F, shift = F, command = F </Locals>|r
Last edited by Baertram : 03/26/24 at 03:30 PM.
Report comment to moderator  
Reply With Quote
Unread 03/26/24, 01:10 PM  
sinnereso
AddOn Author - Click to view AddOns

Forum posts: 244
File comments: 65
Uploads: 4
confirmed.. with ALL addons disabled except for LibSets and still produces this error when switching between transmute station tabs. this is EN client on NA server PC.

Code:
user:/AddOns/LibSets/LibSets.lua:4553: attempt to index a nil value
stack traceback:
user:/AddOns/LibSets/LibSets.lua:4553: in function 'fragmentChange'
|caaaaaa<Locals> oldState = "showing", newState = "shown" </Locals>|r
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:132: in function 'ZO_CallbackObjectMixin:FireCallbacks'
|caaaaaa<Locals> self = [table:1]{state = "shown", allowShowHideTimeUpdates = F, fireCallbackDepth = 1}, eventName = "StateChange", registry = [table:2]{}, callbackInfoIndex = 2, callbackInfo = [table:3]{4 = F}, callback = user:/AddOns/LibSets/LibSets.lua:4551, deleted = F </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:144: in function 'ZO_SceneFragment:SetState'
|caaaaaa<Locals> self = [table:1], newState = "shown", oldState = "showing" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:153: in function 'ZO_SceneFragment:OnShown'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragmentTemplates.lua:16: in function 'ZO_SimpleSceneFragment:Show'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:163: in function 'ZO_SceneFragment:ShouldBeShown'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:233: in function 'ZO_SceneFragment:Refresh'
|caaaaaa<Locals> self = [table:1], oldState = "hidden" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:44: in function 'ZO_Scene:AddFragment'
|caaaaaa<Locals> self = [table:4]{name = "retrait_keyboard_root", wasShownInGamepadPreferredMode = F, disallowEvaluateTransitionCompleteCount = 0, fireCallbackDepth = 0, wasRequestedToShowInGamepadPreferredMode = F, state = "shown", restoresHUDSceneToggleGameMenu = F, restoresHUDSceneToggleUIMode = F}, fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:81: in function 'ZO_Scene:AddTemporaryFragment'
|caaaaaa<Locals> self = [table:4], fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:113: in function 'ZO_SceneManager_Base:AddFragment'
|caaaaaa<Locals> self = [table:5]{remoteSceneSequenceNumber = 9, hudSceneName = "hud", fireCallbackDepth = 0, isLoadingScreenShown = F, numRemoteTopLevelShown = 0, numTopLevelShown = 0, hudUISceneHidesAutomatically = T, initialized = F, exitUIModeOnChatFocusLost = F, hudUISceneName = "hudui"}, fragment = [table:1], state = "shown" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:142: in function 'ZO_SceneManager_Base:AddFragmentGroup'
|caaaaaa<Locals> self = [table:5], fragmentGroup = [table:6]{}, i = 2, fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:93: in function 'callback'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:287: in function 'MenuBarButton:Release'
|caaaaaa<Locals> self = [table:7]{m_highlightHidden = T, m_locked = T, m_state = 1}, upInside = T, skipAnimation = F, playerDriven = T, buttonData = [table:8]{categoryName = 10193, normal = "EsoUI/Art/Crafting/reconstruct...", disabled = "EsoUI/Art/Crafting/reconstruct...", highlight = "EsoUI/Art/Crafting/reconstruct...", descriptor = 10193, pressed = "EsoUI/Art/Crafting/reconstruct..."} </Locals>|r
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:657: in function 'ZO_MenuBarButtonTemplate_OnMouseUp'
|caaaaaa<Locals> self = ud, button = 1, upInside = T </Locals>|r
ZO_MainMenuCategoryBarButton1_MouseUp:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud, button = 1, upInside = T, ctrl = F, alt = F, shift = F, command = F </Locals>|r
Report comment to moderator  
Reply With Quote
Unread 03/26/24, 07:17 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
Already tried that, and tried again. There is no error for me.
All variables are not nil, especially the button mentioned in your error messages. It exists and can be hidden as expected.

I'm not sure why that happens for you guys but it must be any addon related to set collections (as button will be created therefor and just hidden at the reconstruction UI where the same UI elemtns are used as in set collections) or reconstruction.

I can add a ~= nil check there but I'd rather know which addon causes that and how to reproduce it instead of hiding the error only.

Originally Posted by sinnereso
Originally Posted by Baertram
I do not get that error at all, sorry. Neither at the transmute station's transmute nor at the reconstruction tab.

Disable all other addons:
I can also see that you got PerfectPixel enabled vjazz, as the error happend.
But even with PP enabled I do not get that error.


To both:
-Does it occur without any oher addon enabled?
-Are you both using en client language?
-What do I need to do to get it, from login/reloadUI to the error message? Simple steps please!

I've added some debug messages and the controls are all there, all is okay. Not sure why it errors for you, and that code was also not changedby LibSets not ZOs. So I bet it's some of your enabled addons in combination causing this?
-> Search your addons for RETRAIT_STATION_RECONSTRUCT_FRAGMENT or something that got to do with retrait/reconstruct or set collections scene.
Try swapping between transmute and reconstruct tabs. Thats when it happens. Forgot to mention that sorry. Ill try to iron out if anything else is related.
Report comment to moderator  
Reply With Quote
Unread 03/24/24, 07:47 PM  
sinnereso
AddOn Author - Click to view AddOns

Forum posts: 244
File comments: 65
Uploads: 4
Originally Posted by Baertram
I do not get that error at all, sorry. Neither at the transmute station's transmute nor at the reconstruction tab.

Disable all other addons:
I can also see that you got PerfectPixel enabled vjazz, as the error happend.
But even with PP enabled I do not get that error.


To both:
-Does it occur without any oher addon enabled?
-Are you both using en client language?
-What do I need to do to get it, from login/reloadUI to the error message? Simple steps please!

I've added some debug messages and the controls are all there, all is okay. Not sure why it errors for you, and that code was also not changedby LibSets not ZOs. So I bet it's some of your enabled addons in combination causing this?
-> Search your addons for RETRAIT_STATION_RECONSTRUCT_FRAGMENT or something that got to do with retrait/reconstruct or set collections scene.
Try swapping between transmute and reconstruct tabs. Thats when it happens. Forgot to mention that sorry. Ill try to iron out if anything else is related.
Last edited by sinnereso : 03/24/24 at 07:48 PM.
Report comment to moderator  
Reply With Quote
Unread 03/24/24, 12:02 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
I do not get that error at all, sorry. Neither at the transmute station's transmute nor at the reconstruction tab.

Disable all other addons:
I can also see that you got PerfectPixel enabled vjazz, as the error happend.
But even with PP enabled I do not get that error.


To both:
-Does it occur without any oher addon enabled?
-Are you both using en client language?
-What do I need to do to get it, from login/reloadUI to the error message? Simple steps please!

I've added some debug messages and the controls are all there, all is okay. Not sure why it errors for you, and that code was also not changedby LibSets not ZOs. So I bet it's some of your enabled addons in combination causing this?
-> Search your addons for RETRAIT_STATION_RECONSTRUCT_FRAGMENT or something that got to do with retrait/reconstruct or set collections scene.
Last edited by Baertram : 03/24/24 at 12:13 PM.
Report comment to moderator  
Reply With Quote
Unread 03/23/24, 05:39 PM  
vjazz

Forum posts: 0
File comments: 1
Uploads: 0
receiving error when in transmutation station

user:/AddOns/LibSets/LibSets.lua:4553: attempt to index a nil value
stack traceback:
user:/AddOns/LibSets/LibSets.lua:4553: in function 'fragmentChange'
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:132: in function 'ZO_CallbackObjectMixin:FireCallbacks'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:144: in function 'ZO_SceneFragment:SetState'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:153: in function 'ZO_SceneFragment:OnShown'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragmentTemplates.lua:16: in function 'ZO_SimpleSceneFragment:Show'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:163: in function 'ZO_SceneFragment:ShouldBeShown'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:233: in function 'ZO_SceneFragment:Refresh'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:44: in function 'ZO_Scene:AddFragment'
user:/AddOns/PerfectPixel/functions.lua:217: in function 'scene:AddFragment'
user:/AddOns/PerfectPixel/functions.lua:217: in function 'scene:AddFragment'
user:/AddOns/PerfectPixel/functions.lua:217: in function 'scene:AddFragment'
user:/AddOns/PerfectPixel/functions.lua:217: in function 'scene:AddFragment'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:81: in function 'ZO_Scene:AddTemporaryFragment'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:113: in function 'ZO_SceneManager_Base:AddFragment'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:142: in function 'ZO_SceneManager_Base:AddFragmentGroup'
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:93: in function 'callback'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:287: in function 'MenuBarButton:Release'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:657: in function 'ZO_MenuBarButtonTemplate_OnMouseUp'
ZO_MainMenuCategoryBarButton1_MouseUp:3: in function '(main chunk)'
Report comment to moderator  
Reply With Quote
Unread 03/23/24, 12:42 PM  
sinnereso
AddOn Author - Click to view AddOns

Forum posts: 244
File comments: 65
Uploads: 4
transmute station errors

receiving errors accessing transmute station as follows...

Code:
user:/AddOns/LibSets/LibSets.lua:4553: attempt to index a nil value
stack traceback:
user:/AddOns/LibSets/LibSets.lua:4553: in function 'fragmentChange'
|caaaaaa<Locals> oldState = "showing", newState = "shown" </Locals>|r
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:132: in function 'ZO_CallbackObjectMixin:FireCallbacks'
|caaaaaa<Locals> self = [table:1]{fireCallbackDepth = 3, allowShowHideTimeUpdates = F, state = "shown"}, eventName = "StateChange", registry = [table:2]{}, callbackInfoIndex = 2, callbackInfo = [table:3]{4 = F}, callback = user:/AddOns/LibSets/LibSets.lua:4551, deleted = F </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:144: in function 'ZO_SceneFragment:SetState'
|caaaaaa<Locals> self = [table:1], newState = "shown", oldState = "showing" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:153: in function 'ZO_SceneFragment:OnShown'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragmentTemplates.lua:16: in function 'ZO_SimpleSceneFragment:Show'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:163: in function 'ZO_SceneFragment:ShouldBeShown'
|caaaaaa<Locals> self = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:233: in function 'ZO_SceneFragment:Refresh'
|caaaaaa<Locals> self = [table:1], oldState = "hiding" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:44: in function 'ZO_Scene:AddFragment'
|caaaaaa<Locals> self = [table:4]{name = "retrait_keyboard_root", disallowEvaluateTransitionCompleteCount = 0, restoresHUDSceneToggleUIMode = F, restoresHUDSceneToggleGameMenu = F, wasShownInGamepadPreferredMode = F, fireCallbackDepth = 0, wasRequestedToShowInGamepadPreferredMode = F, state = "shown"}, fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:81: in function 'ZO_Scene:AddTemporaryFragment'
|caaaaaa<Locals> self = [table:4], fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:113: in function 'ZO_SceneManager_Base:AddFragment'
|caaaaaa<Locals> self = [table:5]{hudSceneName = "hud", initialized = F, numTopLevelShown = 0, remoteSceneSequenceNumber = 105, isLoadingScreenShown = F, fireCallbackDepth = 0, numRemoteTopLevelShown = 0, hudUISceneName = "hudui", hudUISceneHidesAutomatically = T, exitUIModeOnChatFocusLost = F}, fragment = [table:1], state = "shown" </Locals>|r
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:142: in function 'ZO_SceneManager_Base:AddFragmentGroup'
|caaaaaa<Locals> self = [table:5], fragmentGroup = [table:6]{}, i = 2, fragment = [table:1] </Locals>|r
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:93: in function 'callback'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:287: in function 'MenuBarButton:Release'
|caaaaaa<Locals> self = [table:7]{m_highlightHidden = F, m_locked = T, m_state = 1}, upInside = T, skipAnimation = F, playerDriven = T, buttonData = [table:8]{categoryName = 10193, normal = "EsoUI/Art/Crafting/reconstruct...", disabled = "EsoUI/Art/Crafting/reconstruct...", descriptor = 10193, highlight = "EsoUI/Art/Crafting/reconstruct...", pressed = "EsoUI/Art/Crafting/reconstruct..."} </Locals>|r
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:657: in function 'ZO_MenuBarButtonTemplate_OnMouseUp'
|caaaaaa<Locals> self = ud, button = 1, upInside = T </Locals>|r
ZO_MainMenuCategoryBarButton1_MouseUp:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud, button = 1, upInside = T, ctrl = F, alt = F, shift = F, command = F </Locals>|r
Report comment to moderator  
Reply With Quote
Unread 03/17/23, 06:29 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
Yes, this seems to be a good find, thanks :-)
Report comment to moderator  
Reply With Quote
Unread 03/17/23, 05:43 AM  
bike9876

Forum posts: 0
File comments: 1
Uploads: 0
possible tiny error in LIBSETS_TABLEKEY_SET_ITEM_COLLECTIONS_ZONE_MAPPING

Hello

Should the line

Code:
{ parentCategory=5, category=45, zoneIds={63,93}, isDungeon=true},--Darkshade Caverns I
be

Code:
{ parentCategory=5, category=45, zoneIds={63,930}, isDungeon=true},--Darkshade Caverns I
in LIBSETS_TABLEKEY_SET_ITEM_COLLECTIONS_ZONE_MAPPING in LibSets_Data_All.lua?

(As zone 93 does not exist, zone 930=Darkshade Caverns II)

Thanks.
David
Report comment to moderator  
Reply With Quote
Unread 01/30/23, 04:49 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
LibSets v0.53 for the new PTS DLC_SCRIBES_OF_FATE is available at the GitHub PTS branch
Code:
LibSets v0.53
-Added new constant DLC_SCRIBES_OF_FATE
-Added new sets of DLC Scribes of Fate
-Updated set names of all sets
-Updated set drop locations
-Updated wayshrine data
-Updated set to zone lookup table
-Updated sets data of all sets (weapon, armor, jewelry, equipType, itemIds)
Todo:
-Fix start date timestamp of the enw DLC
-Update Mythic set drop locations of the last 3 mythic items (anyhelp is welcome...)
Last edited by Baertram : 01/30/23 at 04:49 PM.
Report comment to moderator  
Reply With Quote
Unread 01/05/23, 04:07 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5988
Uploads: 78
Hi, I understand you.
But as no other addon nor vanilla game Slash commands use these so far, and the info was added to be easily accessible to all, and easy to find, I think I'll keep them.
I could add additional ones starting with /LibSets though, if this helps.

Or do you know of any other addon using these Slash commands already?

Originally Posted by Rothry
Thanks for continuing your great work for this community.
now my actual reason for this post :P
just want to share my opinion and hear your thoughts about this.
as a non mandatory addon, following slah commands are a bit odd (in my opinion):

/dlcsandchapters
/dlcs
/chapters


These, on the other hand, can be easily assigned (to your addon):
/libsetsdlcsandchapters
/libsetsdlcs
/libsetschapters


What do you think?

PS:
But i know feedback has to be constructive, so:
Just keep the green highlighted ones?
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.