Thread Tools Display Modes
02/03/18, 01:28 PM   #1
tomtomhotep
 
tomtomhotep's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2015
Posts: 21
[outdated] Need for an API function GenerateItemLink()

Hello.

I believe there is a need for a function GenerateItemLink(...) that would take all of the necessary info and return an itemLink.

The parameters could be:
  1. ITEMTYPE_xxx constant
  2. (number:nilable) Required Level (nil if #1 = ITEMTYPE_xxx_TRAIT, ITEMTYPE_xxx_BOOSTER, ITEMTYPE_xxx_ASPECT, ITEMTYPE_xxx_ESSENCE)
  3. (number:nilable) Required CP Level (nil if #1 = ITEMTYPE_xxx_TRAIT, ITEMTYPE_xxx_BOOSTER, ITEMTYPE_xxx_ASPECT, ITEMTYPE_xxx_ESSENCE)
  4. ARMORTYPE_xxx constant (ARMORTYPE_NONE if #1 not ITEMTYPE_ARMOR)
  5. EQUIP_TYPE_xxx constant (or nil if not applicable)
  6. WEAPONTYPE_xxx constant (WEAPONTYPE_NONE if #1 not ITEMTYPE_WEAPON)
  7. ITEM_QUALITY_xxx constant (or nil if not applicable)
  8. ITEM_TRAIT_TYPE_xxx constant (ITEM_TRAIT_TYPE_NONE unless #1 is ITEMTYPE_ARMOR, ITEMTYPE_WEAPON, ITEMTYPE_ARMOR_TRAIT, ITEMTYPE_WEAPON_TRAIT)
  9. (number:nilable) itemStyleId
  10. (string:nilable) setName (as would be returned by GetItemLinkSetInfo())
  11. ENCHANTMENT_SEARCH_CATEGORY_xxx constant (ENCHANTMENT_SEARCH_CATEGORY_NONE unless #1 is ITEMTYPE_ENCHANTING_RUNE_xxx or ITEMTYPE_GLYPH_xxx)


This would support these ItemTypes:

ITEMTYPE_ARMOR (params 1-10)
ITEMTYPE_WEAPON (params 1-10)
ITEMTYPE_ARMOR_TRAIT (params 1 & 8)
ITEMTYPE_WEAPON_TRAIT (params 1 & 8)
ITEMTYPE_BLACKSMITHING_BOOSTER (params 1 & 7)
ITEMTYPE_BLACKSMITHING_MATERIAL (params 1-3)
ITEMTYPE_BLACKSMITHING_RAW_MATERIAL (params 1-3)
ITEMTYPE_CLOTHIER_BOOSTER (params 1 & 7)
ITEMTYPE_CLOTHIER_MATERIAL (params 1-3)
ITEMTYPE_CLOTHIER_RAW_MATERIAL (params 1-3)
ITEMTYPE_WOODWORKING_BOOSTER (params 1 & 7)
ITEMTYPE_WOODWORKING_MATERIAL (params 1-3)
ITEMTYPE_WOODWORKING_RAW_MATERIAL (params 1-3)
ITEMTYPE_ENCHANTING_RUNE_ASPECT (params 1 & 7)
ITEMTYPE_ENCHANTING_RUNE_ESSENCE (params 1 & 11)
ITEMTYPE_ENCHANTING_RUNE_POTENCY (params 1-3 & 11)
ITEMTYPE_GLYPH_ARMOR (params 1-3 & 7 & 11)
ITEMTYPE_GLYPH_JEWELRY (params 1-3 & 7 & 11)
ITEMTYPE_GLYPH_WEAPON (params 1-3 & 7 & 11)


I believe the use-cases are many and varied. As for myself, I am writing an addon to facilitate the crafting of equipment for other people, and I would like my addon to be able to mail a confirmation/"receipt" containing the actual item links of the equipment that the "customer" requested -- before the addon user actually starts crafting the requested items.

Also, I want my addon to allow for the "customer" to provide their own mats, and it would be much better if my addon could mail the "customer" the exact item links of what mats they need to provide, rather than just the text name of the mat. (Non-crafters may see "send me 65 Rubidite Ingots" and instead send 65 Rubidite Ore, because they don't know the difference.)


I know that TraitBuddy and TinyDog's Crafting Calculator could also benefit greatly from this function, because right now, they are both hard-coding ItemID's and ItemLinks, and we all know that ItemID's can change after any major patch.

I also believe Dolgubon might like this function for writ crafter and set crafter.
 
02/03/18, 01:53 PM   #2
Dolgubon
 
Dolgubon's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2016
Posts: 408
First of all, I imagine the chances of getting this are next to nil.

If we do, it would probably be multiple functions, E.g. GenerateEquipmentItemLink. Having a constant to determine different behavior of a function is generally not ideal.


For sending item links of what is required, you could chcch out my set crafter, which allows a user to put itemlinks of the required mats into the chat. (Using my LibLazyCrafting, which you might want to use for the crafting anyway) I am actually also in the process of being able to create arbitrary item set itemlinks too - thankfully without a 20kb data file.


I realize that itemids might change. Howrver, they generally do not change between patches, as far as I'm aware, and so it is reasonably safe to assume they won't.
 
02/03/18, 02:11 PM   #3
tomtomhotep
 
tomtomhotep's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2015
Posts: 21
Originally Posted by Dolgubon View Post
I realize that itemids might change. Howrver, they generally do not change between patches, as far as I'm aware, and so it is reasonably safe to assume they won't.
On May 22, 2017, ALL ItemID's in the game changed, and everyone using FCOItemsaver lost ALL of their FCO markers.

Hard-coding ItemID's is totally unacceptable.
 
02/03/18, 02:20 PM   #4
tomtomhotep
 
tomtomhotep's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2015
Posts: 21
Originally Posted by Dolgubon View Post
it would probably be multiple functions, E.g. GenerateEquipmentItemLink.
That's just as fine with me. I only rolled it into one function for the post because the sticky-topic says one wish per thread.
 
02/03/18, 02:21 PM   #5
Dolgubon
 
Dolgubon's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2016
Posts: 408
Originally Posted by tomtomhotep View Post
On May 22, 2017, ALL ItemID's in the game changed, and everyone using FCOItemsaver lost ALL of their FCO markers.

Hard-coding ItemID's is totally unacceptable.
It is acceptable though, at least as long as you maintain it, which admittedly might not happen. It isn't ideal of course, but it is usable, and unless we get a generator relink function (again, imo unlikely) itemids are the only way.
 
02/03/18, 02:54 PM   #6
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
You didn't even listed 2% of possibilities. Don't even dream of that.

Hint :

SPECIALIZED_ITEMTYPE_ADDITIVE
SPECIALIZED_ITEMTYPE_ARMOR_BOOSTER
SPECIALIZED_ITEMTYPE_ARMOR_TRAIT
SPECIALIZED_ITEMTYPE_ARMOR
SPECIALIZED_ITEMTYPE_AVA_REPAIR
SPECIALIZED_ITEMTYPE_BLACKSMITHING_BOOSTER
SPECIALIZED_ITEMTYPE_BLACKSMITHING_MATERIAL
SPECIALIZED_ITEMTYPE_BLACKSMITHING_RAW_MATERIAL
SPECIALIZED_ITEMTYPE_CLOTHIER_BOOSTER
SPECIALIZED_ITEMTYPE_CLOTHIER_MATERIAL
SPECIALIZED_ITEMTYPE_CLOTHIER_RAW_MATERIAL
SPECIALIZED_ITEMTYPE_COLLECTIBLE_MONSTER_TROPHY
SPECIALIZED_ITEMTYPE_COLLECTIBLE_RARE_FISH
SPECIALIZED_ITEMTYPE_CONTAINER_EVENT
SPECIALIZED_ITEMTYPE_CONTAINER
SPECIALIZED_ITEMTYPE_COSTUME
SPECIALIZED_ITEMTYPE_CROWN_ITEM
SPECIALIZED_ITEMTYPE_CROWN_REPAIR
SPECIALIZED_ITEMTYPE_DISGUISE
SPECIALIZED_ITEMTYPE_DRINK_ALCOHOLIC
SPECIALIZED_ITEMTYPE_DRINK_CORDIAL_TEA
SPECIALIZED_ITEMTYPE_DRINK_DISTILLATE
SPECIALIZED_ITEMTYPE_DRINK_LIQUEUR
SPECIALIZED_ITEMTYPE_DRINK_TEA
SPECIALIZED_ITEMTYPE_DRINK_TINCTURE
SPECIALIZED_ITEMTYPE_DRINK_TONIC
SPECIALIZED_ITEMTYPE_DRINK_UNIQUE
SPECIALIZED_ITEMTYPE_DYE_STAMP
SPECIALIZED_ITEMTYPE_ENCHANTING_RUNE_ASPECT
SPECIALIZED_ITEMTYPE_ENCHANTING_RUNE_ESSENCE
SPECIALIZED_ITEMTYPE_ENCHANTING_RUNE_POTENCY
SPECIALIZED_ITEMTYPE_ENCHANTMENT_BOOSTER
SPECIALIZED_ITEMTYPE_FISH
SPECIALIZED_ITEMTYPE_FLAVORING
SPECIALIZED_ITEMTYPE_FOOD_ENTREMET
SPECIALIZED_ITEMTYPE_FOOD_FRUIT
SPECIALIZED_ITEMTYPE_FOOD_GOURMET
SPECIALIZED_ITEMTYPE_FOOD_MEAT
SPECIALIZED_ITEMTYPE_FOOD_RAGOUT
SPECIALIZED_ITEMTYPE_FOOD_SAVOURY
SPECIALIZED_ITEMTYPE_FOOD_UNIQUE
SPECIALIZED_ITEMTYPE_FOOD_VEGETABLE
SPECIALIZED_ITEMTYPE_FURNISHING_CRAFTING_STATION
SPECIALIZED_ITEMTYPE_FURNISHING_LIGHT
SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_ALCHEMY
SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_BLACKSMITHING
SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_CLOTHIER
SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_ENCHANTING
SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_PROVISIONING
SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_WOODWORKING
SPECIALIZED_ITEMTYPE_FURNISHING_ORNAMENTAL
SPECIALIZED_ITEMTYPE_FURNISHING_SEATING
SPECIALIZED_ITEMTYPE_FURNISHING_TARGET_DUMMY
SPECIALIZED_ITEMTYPE_GLYPH_ARMOR
SPECIALIZED_ITEMTYPE_GLYPH_JEWELRY
SPECIALIZED_ITEMTYPE_GLYPH_WEAPON
SPECIALIZED_ITEMTYPE_INGREDIENT_ALCOHOL
SPECIALIZED_ITEMTYPE_INGREDIENT_DRINK_ADDITIVE
SPECIALIZED_ITEMTYPE_INGREDIENT_FOOD_ADDITIVE
SPECIALIZED_ITEMTYPE_INGREDIENT_FRUIT
SPECIALIZED_ITEMTYPE_INGREDIENT_MEAT
SPECIALIZED_ITEMTYPE_INGREDIENT_RARE
SPECIALIZED_ITEMTYPE_INGREDIENT_TEA
SPECIALIZED_ITEMTYPE_INGREDIENT_TONIC
SPECIALIZED_ITEMTYPE_INGREDIENT_VEGETABLE
SPECIALIZED_ITEMTYPE_ITERATION_BEGIN
SPECIALIZED_ITEMTYPE_ITERATION_END
SPECIALIZED_ITEMTYPE_LOCKPICK
SPECIALIZED_ITEMTYPE_LURE
SPECIALIZED_ITEMTYPE_MASTER_WRIT
SPECIALIZED_ITEMTYPE_MOUNT
SPECIALIZED_ITEMTYPE_NONE
SPECIALIZED_ITEMTYPE_PLUG
SPECIALIZED_ITEMTYPE_POISON_BASE
SPECIALIZED_ITEMTYPE_POISON
SPECIALIZED_ITEMTYPE_POTION_BASE
SPECIALIZED_ITEMTYPE_POTION
SPECIALIZED_ITEMTYPE_RACIAL_STYLE_MOTIF_BOOK
SPECIALIZED_ITEMTYPE_RACIAL_STYLE_MOTIF_CHAPTER
SPECIALIZED_ITEMTYPE_RAW_MATERIAL
SPECIALIZED_ITEMTYPE_REAGENT_ANIMAL_PART
SPECIALIZED_ITEMTYPE_REAGENT_FUNGUS
SPECIALIZED_ITEMTYPE_REAGENT_HERB
SPECIALIZED_ITEMTYPE_RECIPE_ALCHEMY_FORMULA_FURNISHING
SPECIALIZED_ITEMTYPE_RECIPE_BLACKSMITHING_DIAGRAM_FURNISHING
SPECIALIZED_ITEMTYPE_RECIPE_CLOTHIER_PATTERN_FURNISHING
SPECIALIZED_ITEMTYPE_RECIPE_ENCHANTING_SCHEMATIC_FURNISHING
SPECIALIZED_ITEMTYPE_RECIPE_PROVISIONING_DESIGN_FURNISHING
SPECIALIZED_ITEMTYPE_RECIPE_PROVISIONING_STANDARD_DRINK
SPECIALIZED_ITEMTYPE_RECIPE_PROVISIONING_STANDARD_FOOD
SPECIALIZED_ITEMTYPE_RECIPE_WOODWORKING_BLUEPRINT_FURNISHING
SPECIALIZED_ITEMTYPE_SIEGE_BALLISTA
SPECIALIZED_ITEMTYPE_SIEGE_BATTLE_STANDARD
SPECIALIZED_ITEMTYPE_SIEGE_CATAPULT
SPECIALIZED_ITEMTYPE_SIEGE_GRAVEYARD
SPECIALIZED_ITEMTYPE_SIEGE_MONSTER
SPECIALIZED_ITEMTYPE_SIEGE_OIL
SPECIALIZED_ITEMTYPE_SIEGE_RAM
SPECIALIZED_ITEMTYPE_SIEGE_TREBUCHET
SPECIALIZED_ITEMTYPE_SIEGE_UNIVERSAL
SPECIALIZED_ITEMTYPE_SOUL_GEM
SPECIALIZED_ITEMTYPE_SPELLCRAFTING_TABLET
SPECIALIZED_ITEMTYPE_SPICE
SPECIALIZED_ITEMTYPE_STYLE_MATERIAL
SPECIALIZED_ITEMTYPE_TABARD
SPECIALIZED_ITEMTYPE_TOOL
SPECIALIZED_ITEMTYPE_TRASH
SPECIALIZED_ITEMTYPE_TREASURE
SPECIALIZED_ITEMTYPE_TROPHY_KEY_FRAGMENT
SPECIALIZED_ITEMTYPE_TROPHY_KEY
SPECIALIZED_ITEMTYPE_TROPHY_MATERIAL_UPGRADER
SPECIALIZED_ITEMTYPE_TROPHY_MUSEUM_PIECE
SPECIALIZED_ITEMTYPE_TROPHY_RECIPE_FRAGMENT
SPECIALIZED_ITEMTYPE_TROPHY_RUNEBOX_FRAGMENT
SPECIALIZED_ITEMTYPE_TROPHY_SCROLL
SPECIALIZED_ITEMTYPE_TROPHY_SURVEY_REPORT
SPECIALIZED_ITEMTYPE_TROPHY_TREASURE_MAP
SPECIALIZED_ITEMTYPE_WEAPON_BOOSTER
SPECIALIZED_ITEMTYPE_WEAPON_TRAIT
SPECIALIZED_ITEMTYPE_WEAPON
SPECIALIZED_ITEMTYPE_WOODWORKING_BOOSTER
SPECIALIZED_ITEMTYPE_WOODWORKING_MATERIAL
SPECIALIZED_ITEMTYPE_WOODWORKING_RAW_MATERIAL





PS: Each one can have from 0 to 15 different parameters.



Don't forget one of the rules of the project manager.

" If we lived without, why adding it now ?"

Last edited by Ayantir : 02/03/18 at 02:57 PM.
 
02/04/18, 08:46 AM   #7
tomtomhotep
 
tomtomhotep's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2015
Posts: 21
Ayantir, you are not telling me anything I don't already know. There's no way for API function(s) to generate item links for ALL of those item types you listed. That's why my proposal focused on the doable ones which I listed.

Also, Ayantir, you are violating the 4th rule of this sub-forum: Be Nice and Constructive. You are being condescending and destructive.

I thought the purpose of the Wish-List sub-forum was for Chip / ZoS to evaluate the proposals and accept or reject. Why would fellow add-on authors reject a proposal right off the bat without even giving ZoS a chance to give their thoughts???
 
02/04/18, 03:58 PM   #8
ArtOfShred
 
ArtOfShred's Avatar
AddOn Author - Click to view addons
Join Date: Jun 2016
Posts: 103
You can technically do this already by creating a string table and concatenating it.

For context use:
https://wiki.esoui.com/ZO_LinkHandle...ITEM_LINK_TYPE
and with an existing itemLink: local parts = {ZO_LinkHandler_ParseLink(itemLink)} d(parts)

Code:
function MyAddon.GenerateItemLink(stringVar1, stringVar2, ...)

parts = {
[1] = stringVar1
[2] = stringVar2
-- etc for each value...
 }

parts = table.concat(parts, ":"):sub(2, -1)
itemLink = strformat("|H<<1>>|h|h", parts)

return itemLink

end
Little heavy handed compared to potentially having a function to input only necessary values but it does get the job done.

Last edited by ArtOfShred : 02/04/18 at 04:13 PM.
 
02/07/18, 04:13 AM   #9
manavortex
 
manavortex's Avatar
AddOn Author - Click to view addons
Join Date: May 2014
Posts: 138
It would be sweet to have that well-documented at one point in the code - perhaps with a lengthy comment explaining the single bits and use-cases. That way, we'd have a single point of access that we could turn to when API changes break our code or when things about the itemLinks change.
 

ESOUI » Developer Discussions » Wish List » [outdated] Need for an API function GenerateItemLink()

Thread Tools
Display Modes

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

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