Quantcast
Download
(894 Kb)
Download
Updated: 03/14/21 02:05 PM
Compatibility:
Flames of Ambition (6.3.5)
Markarth (6.2.5)
Stonethorn (6.1.5)
Greymoor (6.0.5)
Updated:03/14/21 02:05 PM
Created:01/21/19 10:18 AM
Monthly downloads:21,185
Total downloads:991,452
Favorites:370
MD5:
6.3.5
LibSets  Popular! (More than 5000 hits)
Version: 0.2.9
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!


LibSets
A library to help with item sets for 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"                           

--Only for iterations from 1 (LIBSETS_SETTYPE_ITERATION_BEGIN ) to the maximum
LIBSETS_SETTYPE_ITERATION_END                   = maximum setType (currently: LIBSETS_SETTYPE_MYTHIC or LIBSETS_SETTYPE_TRIAL) --depending on the games APIVersion
Also provides DLC ids:
Code:
DLC_BASE_GAME 0
DLC_IMPERIAL_CITY 1
DLC_ORSINIUM 2
DLC_THIEVES_GUILD 3
DLC_DARK_BROTHERHOOD 4
DLC_SHADOWS_OF_THE_HIST 5
DLC_MORROWIND 6
DLC_HORNS_OF_THE_REACH 7
DLC_CLOCKWORK_CITY 8
DLC_DRAGON_BONES 9
DLC_SUMMERSET 10
DLC_WOLFHUNTER 11
DLC_MURKMIRE 12
DLC_WRATHSTONE 13
DLC_ELSWEYR 14
DLC_SCALEBREAKER 15
DLC_DRAGONHOLD 16
DLC_HARROWSTORM 17
DLC_GREYMOOR 18
DLC_STONETHORN 19
DLC_MARKARTH 20


--Iterators
DLC_ITERATION_BEGIN = DLC_BASE_GAME
DLC_ITERATION_END = DLC_STONETHORN or DLC_MARKARTH --depending on the game's APIVersion
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
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
-> 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

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


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!

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, ...
Click the github link above
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()
Optional Files (0)


Archived Files (26)
File Name
Version
Size
Uploader
Date
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 03/12/21, 04:02 PM  
iFedix
 
iFedix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 11
File comments: 194
Uploads: 1
Originally Posted by Baertram
Thank you.
Please use the Excel file from the github link at best:
https://github.com/Baertram/LibSets

Originally Posted by iFedix
Originally Posted by Baertram
Originally Posted by iFedix
Another little question: why some sets with type LIBSETS_SETTYPE_MONSTER don't have wayshrines info? I think they should have them like the normal sets that drop in the related dungeons...

edit: DLC_FLAMES_OF_AMBITION monster sets have that info (and I dont think the nodes are correct btw)
Because this is manual work (get wayhsrine node id ->they are in the exel file of LibSets. Check for each set where it drops -> zoneId, and update the excel with the correct wayshrine Ids of these zones. Either a capiatal city or any ws near a boss e.g., or the wayshrine near a dungeon as one cannot port into dungeons via the wayshrine functions automatically, as it seems!; and I did not find the time nor will to collect ->done AND check/update them all!)
Feel free to support me and do the work if you like to, and tell me which ones are incorrect, and which wayshrine node ids are the correct ones. Thank you very much.

Else this is anything one can or might do in the future. But I currently got way too much "life" + more than 50 other addons etc. to look after. So LibSets's wayshrines is nothing I'll work on except if anything is "wrong". and even then it's not a real problem.

If you think the nodes are incorrect try to use the given api function to port to it and see where you will get
lib.JumpToSetId(setId, factionIndex)

Remmeber: Dungeons got no wayshrine Id to port to via API func FastTravelToNode(nodeId). We can port there via the map clicks but not via API functions as it seems so it needs to be a wayshrine near a dungeon. Or this has changed in the past.
Got that! I'll help you if I can, thanks!
Created a pull request for the updated excel file with correct node ids.. thanks!
Report comment to moderator  
Reply With Quote
Unread 03/11/21, 12:34 PM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Thank you.
Please use the Excel file from the github link at best:
https://github.com/Baertram/LibSets

Originally Posted by iFedix
Originally Posted by Baertram
Originally Posted by iFedix
Another little question: why some sets with type LIBSETS_SETTYPE_MONSTER don't have wayshrines info? I think they should have them like the normal sets that drop in the related dungeons...

edit: DLC_FLAMES_OF_AMBITION monster sets have that info (and I dont think the nodes are correct btw)
Because this is manual work (get wayhsrine node id ->they are in the exel file of LibSets. Check for each set where it drops -> zoneId, and update the excel with the correct wayshrine Ids of these zones. Either a capiatal city or any ws near a boss e.g., or the wayshrine near a dungeon as one cannot port into dungeons via the wayshrine functions automatically, as it seems!; and I did not find the time nor will to collect ->done AND check/update them all!)
Feel free to support me and do the work if you like to, and tell me which ones are incorrect, and which wayshrine node ids are the correct ones. Thank you very much.

Else this is anything one can or might do in the future. But I currently got way too much "life" + more than 50 other addons etc. to look after. So LibSets's wayshrines is nothing I'll work on except if anything is "wrong". and even then it's not a real problem.

If you think the nodes are incorrect try to use the given api function to port to it and see where you will get
lib.JumpToSetId(setId, factionIndex)

Remmeber: Dungeons got no wayshrine Id to port to via API func FastTravelToNode(nodeId). We can port there via the map clicks but not via API functions as it seems so it needs to be a wayshrine near a dungeon. Or this has changed in the past.
Got that! I'll help you if I can, thanks!
Report comment to moderator  
Reply With Quote
Unread 03/11/21, 12:11 PM  
iFedix
 
iFedix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 11
File comments: 194
Uploads: 1
Originally Posted by Baertram
Originally Posted by iFedix
Another little question: why some sets with type LIBSETS_SETTYPE_MONSTER don't have wayshrines info? I think they should have them like the normal sets that drop in the related dungeons...

edit: DLC_FLAMES_OF_AMBITION monster sets have that info (and I dont think the nodes are correct btw)
Because this is manual work (get wayhsrine node id ->they are in the exel file of LibSets. Check for each set where it drops -> zoneId, and update the excel with the correct wayshrine Ids of these zones. Either a capiatal city or any ws near a boss e.g., or the wayshrine near a dungeon as one cannot port into dungeons via the wayshrine functions automatically, as it seems!; and I did not find the time nor will to collect ->done AND check/update them all!)
Feel free to support me and do the work if you like to, and tell me which ones are incorrect, and which wayshrine node ids are the correct ones. Thank you very much.

Else this is anything one can or might do in the future. But I currently got way too much "life" + more than 50 other addons etc. to look after. So LibSets's wayshrines is nothing I'll work on except if anything is "wrong". and even then it's not a real problem.

If you think the nodes are incorrect try to use the given api function to port to it and see where you will get
lib.JumpToSetId(setId, factionIndex)

Remmeber: Dungeons got no wayshrine Id to port to via API func FastTravelToNode(nodeId). We can port there via the map clicks but not via API functions as it seems so it needs to be a wayshrine near a dungeon. Or this has changed in the past.
Got that! I'll help you if I can, thanks!
Report comment to moderator  
Reply With Quote
Unread 03/11/21, 12:05 PM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Originally Posted by iFedix
Another little question: why some sets with type LIBSETS_SETTYPE_MONSTER don't have wayshrines info? I think they should have them like the normal sets that drop in the related dungeons...

edit: DLC_FLAMES_OF_AMBITION monster sets have that info (and I dont think the nodes are correct btw)
Because this is manual work (get wayhsrine node id ->they are in the exel file of LibSets. Check for each set where it drops -> zoneId, and update the excel with the correct wayshrine Ids of these zones. Either a capiatal city or any ws near a boss e.g., or the wayshrine near a dungeon as one cannot port into dungeons via the wayshrine functions automatically, as it seems!; and I did not find the time nor will to collect ->done AND check/update them all!)
Feel free to support me and do the work if you like to, and tell me which ones are incorrect, and which wayshrine node ids are the correct ones. Thank you very much.

Else this is anything one can or might do in the future. But I currently got way too much "life" + more than 50 other addons etc. to look after. So LibSets's wayshrines is nothing I'll work on except if anything is "wrong". and even then it's not a real problem.

If you think the nodes are incorrect try to use the given api function to port to it and see where you will get
lib.JumpToSetId(setId, factionIndex)

Remmeber: Dungeons got no wayshrine Id to port to via API func FastTravelToNode(nodeId). We can port there via the map clicks but not via API functions as it seems so it needs to be a wayshrine near a dungeon. Or this has changed in the past.
Last edited by Baertram : 03/11/21 at 12:09 PM.
Report comment to moderator  
Reply With Quote
Unread 03/10/21, 07:22 AM  
iFedix
 
iFedix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 11
File comments: 194
Uploads: 1
Another little question: why some sets with type LIBSETS_SETTYPE_MONSTER don't have wayshrines info? I think they should have them like the normal sets that drop in the related dungeons...

edit: DLC_FLAMES_OF_AMBITION monster sets have that info (and I dont think the nodes are correct btw)
Last edited by iFedix : 03/10/21 at 07:29 AM.
Report comment to moderator  
Reply With Quote
Unread 03/09/21, 08:00 AM  
iFedix
 
iFedix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 11
File comments: 194
Uploads: 1
Originally Posted by Baertram
Originally Posted by iFedix
Hi Baertram! Is there a way I can use your libs to find the monster helmet setIds giving only the name of the dungeon? Any function I am missing? Thank you!
Hey iFedix,

no. The dungeon names are not kept multilingual in this library.
But I save the drop zoneIds of each dungeon together with the setIds, dropping there (also for overland etc.).
So you'd need to build a list of the zoneIds of the dungeons.

lib.monsterSets contains the setIds of the monster sets once lib.checkIfSetsAreLoadedProperly() returns true (after event_Add_on_loaded, latest should be done after event_player_activated).
Loop it to get all monster setIds, and then either use lib.GetZoneIds(setId) to get the zoneIds of the drop locations of this setId,
or lib.GetSetInfo(setId) to get the total setData (will be too much if you only need the zoneIds -> use GetZoneIds(setId) table of these monster ids, and in the subtable zoneIds you got the drop zoneIds of this set then.


There is also an API function to get the zoneName in different languages (different languages ONLY if LibZone is activated,e sle it will be the current client language!):
lib.GetZoneName(zoneId, lang)

This way youa re able to dynamically get all zoneIds of all monster sets, and the names of the zones -> Which can be used for comparison then.
But: I'd rather use the unqiue zoneIds instead of names!

Ok, nice to know, thanks! I found out that internally in my addon I'm already storing the nodeId to use the FastTravelToNode function and you have a nice mapping of nodeId-zoneId stored in LIBSETS_TABLEKEY_WAYSHRINENODEID2ZONEID that you get from the excel tab ESO dumped WayshrineInfo. Can I read this data? Thanks again!

EDIT: ok, I have found the function lib.GetWayshrinesZoneId(wayshrineNodeId) that does the job correctly! Thanks
Last edited by iFedix : 03/09/21 at 12:32 PM.
Report comment to moderator  
Reply With Quote
Unread 03/09/21, 05:55 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Originally Posted by iFedix
Hi Baertram! Is there a way I can use your libs to find the monster helmet setIds giving only the name of the dungeon? Any function I am missing? Thank you!
Hey iFedix,

no. The dungeon names are not kept multilingual in this library.
But I save the drop zoneIds of each dungeon together with the setIds, dropping there (also for overland etc.).
So you'd need to build a list of the zoneIds of the dungeons.

lib.monsterSets contains the setIds of the monster sets once lib.checkIfSetsAreLoadedProperly() returns true (after event_Add_on_loaded, latest should be done after event_player_activated).
Loop it to get all monster setIds, and then either use lib.GetZoneIds(setId) to get the zoneIds of the drop locations of this setId,
or lib.GetSetInfo(setId) to get the total setData (will be too much if you only need the zoneIds -> use GetZoneIds(setId) table of these monster ids, and in the subtable zoneIds you got the drop zoneIds of this set then.


There is also an API function to get the zoneName in different languages (different languages ONLY if LibZone is activated,e sle it will be the current client language!):
lib.GetZoneName(zoneId, lang)

This way youa re able to dynamically get all zoneIds of all monster sets, and the names of the zones -> Which can be used for comparison then.
But: I'd rather use the unqiue zoneIds instead of names!
Last edited by Baertram : 03/09/21 at 06:00 AM.
Report comment to moderator  
Reply With Quote
Unread 03/09/21, 03:59 AM  
iFedix
 
iFedix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 11
File comments: 194
Uploads: 1
Hi Baertram! Is there a way I can use your libs to find the monster helmet setIds giving only the name of the dungeon? Any function I am missing? Thank you!
Report comment to moderator  
Reply With Quote
Unread 02/12/21, 04:45 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Originally Posted by ChrisK
Thanks Baertram, truly appreciate all your work for the community!
Thank you ChrisK, always glad to read positive feedback. You guys are welcome!
Report comment to moderator  
Reply With Quote
Unread 02/11/21, 06:20 PM  
ChrisK

Forum posts: 0
File comments: 86
Uploads: 0
Thanks Baertram, truly appreciate all your work for the community!
Report comment to moderator  
Reply With Quote
Unread 02/10/21, 06:05 PM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Originally Posted by TNTKokser
after update some problem with WishList?

Code:
user:/AddOns/LibSets/LibSets.lua:1615: attempt to index a nil value
stack traceback:
user:/AddOns/LibSets/LibSets.lua:1615: in function 'lib.GetSetWeaponTypes'
user:/AddOns/WishList/src/functions.lua:1887: in function 'WL.GetAllSetData'
user:/AddOns/WishList/WishList.lua:2067: in function 'WL.init'
Thanks, forgot a security check for the weapon and armortype_none entries...
Report comment to moderator  
Reply With Quote
Unread 02/10/21, 05:17 PM  
TNTKokser
 
TNTKokser's Avatar

Forum posts: 25
File comments: 149
Uploads: 0
after update some problem with WishList?

Code:
user:/AddOns/LibSets/LibSets.lua:1615: attempt to index a nil value
stack traceback:
user:/AddOns/LibSets/LibSets.lua:1615: in function 'lib.GetSetWeaponTypes'
user:/AddOns/WishList/src/functions.lua:1887: in function 'WL.GetAllSetData'
user:/AddOns/WishList/WishList.lua:2067: in function 'WL.init'
Report comment to moderator  
Reply With Quote
Unread 11/06/20, 06:47 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Originally Posted by sortajan
Ebon Armory accessory traits are limited to Healthy (rings) and Healthy/Arcane (necklaces). Is this intended?
The possible itemIds of each set were scanned from the given items ingame.
If there are more jewelry traits than healthy or arcane (which drop in the game, not any retraitet ones as this lib is about drop sets not "what you might do with it afterwards!") where do they drop and why didn't the game itemIds present them as I scanned them?
Check this link and you'll see there only exists healthy and arcane: https://eso-sets.com/set/ebon-armory

Or what do you mean is missing in detail please? If you got an itemLink of an item which is missing please copy me the complete itemlink here. You can do this by sending it into chat, mark the text [Ebon ...] in the chat's text editbox and press CTRL+C, then CTRL+p the link here.
Last edited by Baertram : 11/06/20 at 06:50 AM.
Report comment to moderator  
Reply With Quote
Unread 11/06/20, 01:24 AM  
sortajan

Forum posts: 0
File comments: 4
Uploads: 0
Ebon Armory accessory traits are limited to Healthy (rings) and Healthy/Arcane (necklaces). Is this intended?
Report comment to moderator  
Reply With Quote
Unread 06/28/20, 05:21 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3458
File comments: 4204
Uploads: 67
Re: Antiquity sets

Hi, thanks for letting me know.

I only use the setIds which the GetItemLinkSetInfo returns, never was using GetAntiquitySetId or any other set function.
So not sure what GetAntiquitySetId reutns, maybe another "duplicate antiquity setId" in another range ONLY for the antiquity sets (could be used to track if it returns nil/o or a valid number to identify them?).

So using the LibSets build in API functions to get the set items and the set info should be enough, and you could also check if it's an antiquity set by the help of the LibSets API functions like IsMythicSet, IsArenaSet, etc.

Originally Posted by remosito
Edit: Nevermind...found them in the 500+ range in your spreadsheet....

looks like the setids that GetAntiquitySetId(*integer* _antiquityId_) returns are not the real setid but some strange setids in the 8-13 range....

not sure why zos would do that... but explains why I failed so miserably early on when trying to get itemlinks for those sets....

--> nothing to see here ;-)




Howdie Baertram,

just as a FYI:

Was trying to get from setid to having the setbonus in hand so I dont have to add that to my translations.
Need the ItemLink for that, and through your wishlist addon ended up in libsets for the buildItemLink(itemid, quality) function.

But what I noticed is that libSets doesn't seem to have the antiquity one piece sets.

the new one piece antiquity sets have setids 8-13:

Here the list from my Addon.
Lua Code:
  1. RDL.SETID_BLOODLORDS_EMBRACE = 13
  2. RDL.SETID_THRASSIAN_STRANGLERS = 8
  3. RDL.SETID_SNOW_TREADERS = 9
  4. RDL.SETID_RING_OF_THE_WILD_HUNT = 10
  5. RDL.SETID_MALACATHS_BAND_OF_BRUTALITY = 11
  6. RDL.SETID_TORC_OF_TONAL_CONSTANCY = 12

not sure if it makes sense to add them....just thought you might be interested in knowing...
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: