Thread Tools Display Modes
07/02/16, 06:35 AM   #21
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
You cant communicate throught chat...
the only way to communicate is grpsocket and it's an unoficial usage of a feature not meaned for this...
  Reply With Quote
07/06/16, 11:31 AM   #22
ZOS_ChipHilseberg
ZOS Staff!
Premium Member
Yes this person is from ZeniMax!
Join Date: Oct 2014
Posts: 551
Originally Posted by sirinsidiator View Post
It will be a problem for German players if it stays like this. The live version does not have this bug, so any character save data will disappear for names that start with a lowercase letter, unless it gets fixed.
We just checked out live and it does capitalize the first letter of the character name (improperly), but it seems to have been doing this for a while. Did you see it behave differently somewhere?
  Reply With Quote
07/06/16, 09:52 PM   #23
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
I've updated http://wiki.esoui.com/Collectibles even if I still don't know if anyone use it...
  Reply With Quote
07/07/16, 03:40 AM   #24
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
Originally Posted by ZOS_ChipHilseberg View Post
We just checked out live and it does capitalize the first letter of the character name (improperly), but it seems to have been doing this for a while. Did you see it behave differently somewhere?
I tried it again and found that it works as you describe when I set the language to "de" during character creation and like I said when the selected language is "en" and I switch to "de" right after creation. Meaning it won't be a problem for players that always play in one language.
  Reply With Quote
07/07/16, 08:16 AM   #25
ZOS_ChipHilseberg
ZOS Staff!
Premium Member
Yes this person is from ZeniMax!
Join Date: Oct 2014
Posts: 551
Originally Posted by sirinsidiator View Post
I tried it again and found that it works as you describe when I set the language to "de" during character creation and like I said when the selected language is "en" and I switch to "de" right after creation. Meaning it won't be a problem for players that always play in one language.
Ah, gotcha. Thanks.
  Reply With Quote
07/11/16, 09:12 PM   #26
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
Because I looked at this, there is a typo error in new dye system in patchnotes and txt.

When referring to a DyeDefId , you should remove the "Def" from your function names, etc. It's a DyeId

ex:

GetItemLinkDyeDefIds doesn't exist : it's GetItemLinkDyeIds
GetDyeDefColorsById doesn't exist : it's GetDyeColorsById
GetDyeDefInfoById doesn't exist : it's GetDyeInfoById
  Reply With Quote
07/13/16, 05:22 PM   #27
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
And because, I needed doc on the control type TextureComposite (who knows it ? ) .. I updated the 2 years old page http://wiki.esoui.com/Controls

It was really needed because since few updates ZOS added a lot of methods on this topic and we had 0 doc uptodate except the txt and patchnotes.

And I wrote how to update the page at the bottom of 1st topic of thread :
http://www.esoui.com/forums/showthread.php?p=26365



PS: Basically this page list all methods (functions) you can do with a control type.

ex if your control is a EditControl and the control name is Foo,

you can , per exemple, do :

Lua Code:
  1. Foo:TakeFocus()

I also added few things at the top of the page, and tried to keep refs with globals page.
  Reply With Quote
07/14/16, 08:04 AM   #28
ZOS_ChipHilseberg
ZOS Staff!
Premium Member
Yes this person is from ZeniMax!
Join Date: Oct 2014
Posts: 551
Here's the updated docs for the next PTS update.
Attached Files
File Type: txt ESOUIDocumentationP11 2.txt (466.9 KB, 575 views)
  Reply With Quote
07/14/16, 11:22 AM   #29
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
Originally Posted by ZOS_ChipHilseberg View Post
Here's the updated docs for the next PTS update.
Thank you very much!
There are some nice changes:

Code:
MAX_TEXT_CHAT_INPUT_CHARACTERS

* GetLocationName(*integer* _worldId_)
** _Returns:_ *string* _worldName_

* GetCurrentCharacterId()
** _Returns:_ *string* _id_

* RequestOpenUnsafeURL(*string* _URL_)


* GetNumCharacters()
** _Returns:_ *integer* _numCharacters_

* GetCharacterInfo(*luaindex* _index_)
** _Returns:_ *string* _name_, *[Gender|#Gender]* _gender_, *integer* _level_, *integer* _championRank_, *integer* _classId_, *integer* _raceId_, *[Alliance|#Alliance]* _alliance_, *string* _id_, *integer* _locationId_

* EVENT_KEEP_ALLIANCE_OWNER_CHANGED (*integer* _keepId_, *integer* _battlegroundContext_, *integer* _owningAlliance_, *integer* _oldOwningAlliance_)
Will GetLocationName return the same worldName as GetWorldName and will there be constant values for the IDs (e.g. WORLD_EU, WORLD_NA, WORLD_PTS)?
And does RequestOpenUnsafeURL mean there has been a change of policy regarding exchanging data with external services? If it is what I think it is, it would allow addons to send data to external servers pretty easily, which would make me hope that CopyAllTextToClipboard will be made public again and we may get functions to access saveData files directly without the need for an UI reload.
  Reply With Quote
07/14/16, 12:44 PM   #30
ZOS_ChipHilseberg
ZOS Staff!
Premium Member
Yes this person is from ZeniMax!
Join Date: Oct 2014
Posts: 551
Originally Posted by sirinsidiator View Post
Thank you very much!
Will GetLocationName return the same worldName as GetWorldName and will there be constant values for the IDs (e.g. WORLD_EU, WORLD_NA, WORLD_PTS)?
And does RequestOpenUnsafeURL mean there has been a change of policy regarding exchanging data with external services? If it is what I think it is, it would allow addons to send data to external servers pretty easily, which would make me hope that CopyAllTextToClipboard will be made public again and we may get functions to access saveData files directly without the need for an UI reload.
worldName is the zone name that the character is in. It doesn't refer to the server. RequestOpenUnsafeURL requires a secure confirmation so it will not function as an automatic export mechanism. Data can already be exported through the saved variables on reload UI so we don't see it as contradicting the existing policies.
  Reply With Quote
07/19/16, 10:31 AM   #31
Weolo
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 79
Storing data

Then it looks like instead of using either of these 2 functions to store addon data against:

GetUnitName("player")
GetRawUnitName("player")

We should actually be using:

GetCurrentCharacterId()

I did a very quick test and the ID seems unique to the character and was the same after using a character name change token.

Also looking forward to making use of GetCharacterInfo(index)

Last edited by Weolo : 07/19/16 at 10:33 AM.
  Reply With Quote
07/20/16, 03:21 AM   #32
QuadroTony
Banned
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 828
right now i tried to teleport to player who in REapers march according to Guild roster

i tried few times but every time it port me to Worthgar
is new changes will fix it?
  Reply With Quote
07/23/16, 08:17 PM   #33
Weolo
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 79
Question GetCharacterInfo() bug?

I just found something a bit odd
When you create a brand new character and log in for the first time, the character does not show up in the GetCharacterInfo() function
It doesn't seem to appear in the functions data until you log out to the character selection screen and back in.

Lua Code:
  1. d("GetCurrentCharacterId: "..GetCurrentCharacterId())
  2. d("GetNumCharacters: "..GetNumCharacters())
  3. for i = 1, GetNumCharacters() do
  4.     local name, gender, level, championRank, classId, raceId, alliance, id, locationId = GetCharacterInfo(i)
  5.     d("id="..tostring(id))
  6. end
  7. local name, gender, level, championRank, classId, raceId, alliance, id, locationId = GetCharacterInfo(GetCurrentCharacterId())
  8. d("id2="..tostring(id))
In the above code example GetCurrentCharacterId() does not appear in the for loop.
And id2 prints out nothing, not even nil
  Reply With Quote
07/25/16, 02:06 PM   #34
ZOS_ChipHilseberg
ZOS Staff!
Premium Member
Yes this person is from ZeniMax!
Join Date: Oct 2014
Posts: 551
Originally Posted by Weolo View Post
I just found something a bit odd
When you create a brand new character and log in for the first time, the character does not show up in the GetCharacterInfo() function
It doesn't seem to appear in the functions data until you log out to the character selection screen and back in.

Lua Code:
  1. d("GetCurrentCharacterId: "..GetCurrentCharacterId())
  2. d("GetNumCharacters: "..GetNumCharacters())
  3. for i = 1, GetNumCharacters() do
  4.     local name, gender, level, championRank, classId, raceId, alliance, id, locationId = GetCharacterInfo(i)
  5.     d("id="..tostring(id))
  6. end
  7. local name, gender, level, championRank, classId, raceId, alliance, id, locationId = GetCharacterInfo(GetCurrentCharacterId())
  8. d("id2="..tostring(id))
In the above code example GetCurrentCharacterId() does not appear in the for loop.
And id2 prints out nothing, not even nil
Yup, that's a bug. We'll get a fix in for it.
  Reply With Quote
07/30/16, 12:36 AM   #35
Woeler
 
Woeler's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2014
Posts: 40
Originally Posted by Ayantir View Post
I've updated http://wiki.esoui.com/Collectibles even if I still don't know if anyone use it...
Is there also a page like that with all motifs? I still need the ingame ID's of the new ones for eso-database.
  Reply With Quote
07/30/16, 03:55 AM   #36
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
http://wiki.esoui.com/StyleItemIndex
  Reply With Quote
07/30/16, 01:33 PM   #37
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
I finally automatized the Events page a bit better.
Guide is here : http://www.esoui.com/forums/showthread.php?t=6141
It create the new source and warn for thing to add manually

This reduce page update to 10min from 2hours.

Ex for 2.5 :

Event found on Wiki but not in ZOS ref -> * [[EVENT_DIFFICULTY_LEVEL_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_VETERAN_POINTS_GAIN]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_VETERAN_POINTS_UPDATE]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_VETERAN_RANK_UPDATE]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_DATA_LOADED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_DESCRIPTION_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_HISTORY_CATEGORY_UPDATED]] ('''integer''' ''eventCode'', '''integer''' ''guildId'', '''[[Globals#GuildHistoryCategory|GuildHistoryCategory]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_HISTORY_RESPONSE_RECEIVED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_KEEP_CLAIM_UPDATED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_ADDED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_CHARACTER_LEVEL_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_CHARACTER_UPDATED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_CHARACTER_VETERAN_RANK_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_CHARACTER_ZONE_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_NOTE_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_PLAYER_STATUS_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_RANK_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MEMBER_REMOVED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_MOTD_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_RANK_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_RANKS_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_SELF_JOINED_GUILD]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GUILD_SELF_LEFT_GUILD]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_SAVE_GUILD_RANKS_RESPONSE]] ('''integer''' ''eventCode'', '''integer''' ''guildId'', '''[[Globals#SocialActionResult|SocialActionResult]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_GROUPING_TOOLS_STATUS_UPDATE]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_ADDED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_CHARACTER_LEVEL_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_CHARACTER_UPDATED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_CHARACTER_VETERAN_RANK_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_CHARACTER_ZONE_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_NOTE_UPDATED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_PLAYER_STATUS_CHANGED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_FRIEND_REMOVED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_IGNORE_ADDED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_IGNORE_NOTE_UPDATED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_IGNORE_REMOVED]]
Event found on Wiki but not in ZOS ref -> * [[EVENT_SOCIAL_DATA_LOADED]]
New ZOS event -> * [[EVENT_GROUP_ELECTION_REQUESTED]] ('''integer''' ''eventCode'', '''string''' ''descriptor'')
New ZOS event -> * [[EVENT_CURRENT_SUBZONE_LIST_CHANGED]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_GROUP_ELECTION_NOTIFICATION_REMOVED]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_CHAMPION_POINT_UPDATE]] ('''integer''' ''eventCode'', '''string''' ''unitTag'', '''number''' ''oldChampionPoints'', '''number''' ''currentChampionPoints'')
New ZOS event -> * [[EVENT_INVENTORY_ITEMS_AUTO_TRANSFERRED_TO_CRAFT_BAG]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_ITEM_PREVIEW_READY]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_PLAYER_QUEUED_FOR_CYCLIC_RESPAWN]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_CAMPAIGN_UNASSIGNMENT_RESULT]] ('''integer''' ''eventCode'', '''number''' ''result'')
New ZOS event -> * [[EVENT_ACTIVITY_FINDER_ACTIVITY_COMPLETE]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_CHAMPION_LEVEL_ACHIEVED]] ('''integer''' ''eventCode'', '''boolean''' ''wasChampionSystemUnlocked'')
New ZOS event -> * [[EVENT_COLLECTIBLE_NEW_STATUS_CLEARED]] ('''integer''' ''eventCode'', '''number''' ''collectibleId'')
New ZOS event -> * [[EVENT_GROUP_ELECTION_RESULT]] ('''integer''' ''eventCode'', '''number''' ''electionResult'', '''string''' ''descriptor'')
New ZOS event -> * [[EVENT_GROUP_ELECTION_FAILED]] ('''integer''' ''eventCode'', '''number''' ''failureReason'', '''string''' ''descriptor'')
New ZOS event -> * [[EVENT_HOUSING_EDITOR_MODE_CHANGED]] ('''integer''' ''eventCode'', '''number''' ''oldMode'', '''number''' ''newMode'')
New ZOS event -> * [[EVENT_VISUAL_LAYER_CHANGED]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_DYE_STAMP_USE_FAIL]] ('''integer''' ''eventCode'', '''number''' ''reason'')
New ZOS event -> * [[EVENT_COLLECTIBLE_USE_BLOCKED]] ('''integer''' ''eventCode'', '''number''' ''reason'')
New ZOS event -> * [[EVENT_WEAPON_PAIR_LOCK_CHANGED]] ('''integer''' ''eventCode'', '''boolean''' ''locked'')
New ZOS event -> * [[EVENT_CADWELL_PROGRESSION_LEVEL_CHANGED]] ('''integer''' ''eventCode'', '''number''' ''progressionLevel'')
New ZOS event -> * [[EVENT_GROUP_ELECTION_NOTIFICATION_ADDED]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_CRAFT_BAG_AUTO_TRANSFER_NOTIFICATION_CLEARED]] ('''number''' ''eventCode'')
New ZOS event -> * [[EVENT_ACTIVITY_FINDER_STATUS_UPDATE]] ('''integer''' ''eventCode'', '''number''' ''status'')
New ZOS event -> * [[EVENT_PERSONALITY_CHANGED]] ('''number''' ''eventCode'')
  Reply With Quote
07/30/16, 04:30 PM   #38
Woeler
 
Woeler's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2014
Posts: 40
Originally Posted by Ayantir View Post
Exactly what I needed. Thanks!
  Reply With Quote
07/31/16, 10:07 AM   #39
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
I've updated Keeps page & I've updated API page :

Lua Code:
  1. @@ -79,6 +79,9 @@
  2.  * GetRaceName(number [[Globals#Gender|Gender]] gender, number raceId)
  3.  ** Returns: string raceName
  4.  
  5. +* GetLocationName(number worldId)
  6. +** Returns: string worldName
  7. +
  8.  * GetGenderFromNameDescriptor(string nameDescriptor)
  9.  ** Returns: number [[Globals#Gender|Gender]] gender
  10.  
  11. @@ -123,6 +126,8 @@
  12.  * IsInternalBuild()
  13.  ** Returns: boolean isInternalBuild
  14.  
  15. +* SaveLoadDialogResult(number [[Globals#SaveLoadDialogError|SaveLoadDialogError]] errorType, number [[Globals#SaveLoadDialogAnswer|SaveLoadDialogAnswer]] result)
  16. +
  17.  * GetSecondsSinceMidnight()
  18.  ** Returns: number secondsSinceMidnight
  19.  
  20. @@ -216,6 +221,33 @@
  21.  * HashString(string text)
  22.  ** Returns: number hashValue
  23.  
  24. +* Create3DRenderSpace()
  25. +** Returns: number spaceId
  26. +
  27. +* Set3DRenderSpaceOrigin(number spaceId, number x, number y, number z)
  28. +
  29. +* Set3DRenderSpaceRight(number spaceId, number x, number y, number z)
  30. +
  31. +* Set3DRenderSpaceUp(number spaceId, number x, number y, number z)
  32. +
  33. +* Set3DRenderSpaceForward(number spaceId, number x, number y, number z)
  34. +
  35. +* Set3DRenderSpaceSystem(number spaceId, number [[Globals#GuiRender3DSpaceSystem|GuiRender3DSpaceSystem]] system)
  36. +
  37. +* Set3DRenderSpaceToCurrentCamera(number spaceId)
  38. +
  39. +* ComputeDepthAtWhichWorldWidthRendersAsUIWidth(number worldWidth, number UIWidth)
  40. +** Returns: number depth
  41. +
  42. +* GetWorldDimensionsOfViewFrustumAtDepth(number depth)
  43. +** Returns: number frustumWidth, number frustumHeight
  44. +
  45. +* GetESOVersionString()
  46. +** Returns: string versionString
  47. +
  48. +* Is64BitClient()
  49. +** Returns: boolean is64Bit
  50. +
  51.  * GetEULADetails(number [[Globals#EULAType|EULAType]] eulaType)
  52.  ** Returns: string message, string agreeText, string disagreeText, boolean hasAgreed, string dialogText
  53.  
  54. @@ -619,7 +651,7 @@
  55.  * GetNumPlayerStatuses()
  56.  ** Returns: number numStatuses
  57.  
  58. -* GetCriticalStrikeChance(number statValue, boolean useMin)
  59. +* GetCriticalStrikeChance(number statValue)
  60.  ** Returns: number chance
  61.  
  62.  * TakeScreenshot()
  63. @@ -681,6 +713,9 @@
  64.  * GetUnitChampionPoints(string unitTag)
  65.  ** Returns: number championPoints
  66.  
  67. +* GetUnitEffectiveChampionPoints(string unitTag)
  68. +** Returns: number championPoints
  69. +
  70.  * CanUnitGainChampionPoints(string unitTag)
  71.  ** Returns: boolean canGainChampionPoints
  72.  
  73. @@ -861,6 +896,9 @@
  74.  * GetUnitPower(string unitTag, number [[Globals#CombatMechanicType|CombatMechanicType]] powerType)
  75.  ** Returns: number current, number max, number effectiveMax
  76.  
  77. +* GetCurrentCharacterId()
  78. +** Returns: string id
  79. +
  80.  * GetPlayerStat(number [[Globals#DerivedStats|DerivedStats]] derivedStat, number [[Globals#StatBonusOption|StatBonusOption]] statBonusOption)
  81.  ** Returns: number value
  82.  
  83. @@ -1692,6 +1730,8 @@
  84.  * IsFeedbackGatheringEnabled()
  85.  ** Returns: boolean enabled
  86.  
  87. +* RequestOpenUnsafeURL(string URL)
  88. +
  89.  * Logout()
  90.  
  91.  * Quit()
  92. @@ -1828,6 +1868,12 @@
  93.  * GetActiveActionLayerIndex(number activeActionLayerIndex)
  94.  ** Returns: number:nilable layerIndex
  95.  
  96. +* GetNumCharacters()
  97. +** Returns: number numCharacters
  98. +
  99. +* GetCharacterInfo(number index)
  100. +** Returns: string name, number [[Globals#Gender|Gender]] gender, number level, number championRank, number classId, number raceId, number [[Globals#Alliance|Alliance]] alliance, string id, number locationId
  101. +
  102.  * GetNumAttributes()
  103.  ** Returns: number numAttributes
  104.  
  105. @@ -2351,6 +2397,11 @@
  106.  
  107.  * SetChatFontSize(number fontSize)
  108.  
  109. +* GetGamepadChatFontSize()
  110. +** Returns: number gamepadFontSize
  111. +
  112. +* SetGamepadChatFontSize(number gamepadFontSize)
  113. +
  114.  * ResetChatFontSizeToDefault()
  115.  
  116.  * GetChatCategoryColor(number [[Globals#ChatChannelCategories|ChatChannelCategories]] category)
  117. @@ -2680,6 +2731,27 @@
  118.  * CanItemBeVirtual(number bagId, number slotIndex)
  119.  ** Returns: boolean canBeVirtualItem
  120.  
  121. +* IsItemPlaceableFurniture(number bagId, number slotIndex)
  122. +** Returns: boolean isPlaceable
  123. +
  124. +* IsDisplayNameInItemBoPAccountTable(number bagId, number slotIndex, string displayName)
  125. +** Returns: boolean isInTable
  126. +
  127. +* IsItemBoPAndTradeable(number bagId, number slotIndex)
  128. +** Returns: boolean isBoPAndTradeable
  129. +
  130. +* GetItemBoPTimeRemainingSeconds(number bagId, number slotIndex)
  131. +** Returns: number timeRemainingS
  132. +
  133. +* GetItemBoPTradeableDisplayNamesString(number bagId, number slotIndex)
  134. +** Returns: string namesString
  135. +
  136. +* GetItemBoPTradeableNumEligibleNames(number bagId, number slotIndex)
  137. +** Returns: number numNames
  138. +
  139. +* GetItemBoPTradeableEligibleNameByIndex(number bagId, number slotIndex, number nameIndex)
  140. +** Returns: string name
  141. +
  142.  * HasCraftBagAccess()
  143.  ** Returns: boolean hasAccess
  144.  
  145. @@ -2728,6 +2800,9 @@
  146.  * GetItemLinkItemType(string itemLink)
  147.  ** Returns: number [[Globals#ItemType|ItemType]] itemType, number [[Globals#SpecializedItemType|SpecializedItemType]] specializedItemType
  148.  
  149. +* GetItemLinkItemUseType(string itemLink)
  150. +** Returns: number [[Globals#ItemUseType|ItemUseType]] onUseType
  151. +
  152.  * GetItemLinkArmorType(string itemLink)
  153.  ** Returns: number [[Globals#ArmorType|ArmorType]] armorType
  154.  
  155. @@ -2902,6 +2977,12 @@
  156.  * CanItemLinkBeVirtual(string itemLink)
  157.  ** Returns: boolean canBeVirtual
  158.  
  159. +* GetItemLinkDyeIds(string itemLink)
  160. +** Returns: number primaryDefId, number secondaryDefId, number accentDefId
  161. +
  162. +* GetItemLinkDyeStampId(string itemLink)
  163. +** Returns: number dyeStampId
  164. +
  165.  * ShouldHideTooltipRequiredLevel(string itemLink)
  166.  ** Returns: boolean shouldHideLevel
  167.  
  168. @@ -3812,6 +3893,15 @@
  169.  * GetTradeItemInfo(number [[Globals#TradeParticipant|TradeParticipant]] who, number tradeIndex)
  170.  ** Returns: string name, textureName icon, number stack, number quality, string creatorName, number sellPrice, boolean meetsUsageRequirement, number [[Globals#EquipType|EquipType]] equipType, number [[Globals#ItemStyle|ItemStyle]] itemStyle
  171.  
  172. +* IsTradeItemBoPAndTradeable(number [[Globals#TradeParticipant|TradeParticipant]] who, number tradeIndex)
  173. +** Returns: boolean isBoPAndTradeable
  174. +
  175. +* GetTradeItemBoPTimeRemainingSeconds(number [[Globals#TradeParticipant|TradeParticipant]] who, number tradeIndex)
  176. +** Returns: number timeRemainingS
  177. +
  178. +* GetTradeItemBoPTradeableDisplayNamesString(number [[Globals#TradeParticipant|TradeParticipant]] who, number tradeIndex)
  179. +** Returns: string namesString
  180. +
  181.  * GetTradeItemBagAndSlot(number [[Globals#TradeParticipant|TradeParticipant]] who, number tradeIndex)
  182.  ** Returns: number:nilable [[Globals#Bag|Bag]] bagId, number:nilable slotIndex
  183.  
  184. @@ -4005,10 +4095,13 @@
  185.  * IsCollectibleCategoryUsable(number [[Globals#CollectibleCategoryType|CollectibleCategoryType]] collectibleCategoryType)
  186.  ** Returns: boolean isUsable
  187.  
  188. -* IsCollectibleCategoryBlocked(number [[Globals#CollectibleCategoryType|CollectibleCategoryType]] collectibleCategoryType)
  189. +* IsCollectibleBlocked(number collectibleId)
  190.  ** Returns: boolean isBlocked
  191.  
  192. -* GetCollectibleCategoryBlockReason(number [[Globals#CollectibleCategoryType|CollectibleCategoryType]] collectibleCategoryType)
  193. +* IsCollectibleValidForPlayer(number collectibleId)
  194. +** Returns: boolean isValidForPlayer
  195. +
  196. +* GetCollectibleBlockReason(number collectibleId)
  197.  ** Returns: number [[Globals#CollectibleUsageBlockReason|CollectibleUsageBlockReason]] usageBlockReason
  198.  
  199.  * IsCollectibleSlottable(number collectibleId)
  200. @@ -4052,6 +4145,11 @@
  201.  * GetCollectibleHelpIndices(number collectibleId)
  202.  ** Returns: number:nilable helpCategoryIndex, number:nilable helpIndex
  203.  
  204. +* IsCollectibleNew(number collectibleId)
  205. +** Returns: boolean isNew
  206. +
  207. +* ClearCollectibleNewStatus(number collectibleId)
  208. +
  209.  * GetNumCollectibleNotifications()
  210.  ** Returns: number count
  211.  
  212. @@ -4083,6 +4181,17 @@
  213.  * GetCollectibleCooldownAndDuration(number collectibleId)
  214.  ** Returns: number cooldownRemaining, number cooldownDuration
  215.  
  216. +* GetCollectiblePersonalityOverridenEmoteDisplayNames(number collectibleId)
  217. +** Uses variable returns...
  218. +** Returns: string overriddenEmoteDisplayName
  219. +
  220. +* GetCollectiblePersonalityOverridenEmoteSlashCommandNames(number collectibleId)
  221. +** Uses variable returns...
  222. +** Returns: string overriddenEmoteSlashCommandName
  223. +
  224. +* GetCollectibleRestrictionsByType(number collectibleId, number [[Globals#CollectibleRestrictionType|CollectibleRestrictionType]] restrictionType)
  225. +** Returns: boolean hasRestrictions, boolean passesRestrictions, string allowedNamesString
  226. +
  227.  * GetNumAchievementCategories()
  228.  ** Returns: number numCategories
  229.  
  230. @@ -4144,6 +4253,9 @@
  231.  * GetAchievementLink(number achievementId, number [[Globals#LinkStyle|LinkStyle]] linkStyle)
  232.  ** Returns: string link
  233.  
  234. +* GetAchievementIdFromLink(string link)
  235. +** Returns: number achievementId
  236. +
  237.  * GetAchievementNameFromLink(string link)
  238.  ** Returns: string name
  239.  
  240. @@ -4161,7 +4273,7 @@
  241.  ** Returns: boolean hasRewardOfType, string titleName
  242.  
  243.  * GetAchievementRewardDye(number achievementId)
  244. -** Returns: boolean hasRewardOfType, number dyeIndex
  245. +** Returns: boolean hasRewardOfType, number dyeId
  246.  
  247.  * GetAchievementRewardCollectible(number achievementId)
  248.  ** Returns: boolean hasRewardOfType, number collectibleId
  249. @@ -4351,6 +4463,9 @@
  250.  * IsGamepadHelpOption(number [[Globals#HelpShowOptions|HelpShowOptions]] showOption)
  251.  ** Returns: boolean isGamepadOption
  252.  
  253. +* IsSubmitFeedbackSupported()
  254. +** Returns: boolean isSupported
  255. +
  256.  * GetCraftingInteractionType()
  257.  ** Returns: number [[Globals#TradeskillType|TradeskillType]] currentCraftingInteraction
  258.  
  259. @@ -4491,20 +4606,20 @@
  260.  * GetNumSmithingStyleItems()
  261.  ** Returns: number numStyleItems
  262.  
  263. -* GetSmithingStyleItemInfo(number [[StyleItemIndex|styleItemIndex]])
  264. -** Returns: string itemName, textureName icon, number sellPrice, boolean meetsUsageRequirement, number itemStyle, number quality
  265. -
  266. -* GetSmithingStyleItemLink(number [[StyleItemIndex|styleItemIndex]], number [[Globals#LinkStyle|linkStyle]])
  267. +* GetSmithingStyleItemInfo(number styleItemIndex)
  268. +** Returns: string itemName, textureName icon, number sellPrice, boolean meetsUsageRequirement, number itemStyle, number quality, boolean alwaysHideIfLocked
  269. +
  270. +* GetSmithingStyleItemLink(number styleItemIndex, number [[Globals#LinkStyle|LinkStyle]] linkStyle)
  271.  ** Returns: string link
  272.  
  273. -* GetCurrentSmithingStyleItemCount(number [[StyleItemIndex|styleItemIndex]])
  274. +* GetCurrentSmithingStyleItemCount(number styleItemIndex)
  275.  ** Returns: number count
  276.  
  277. -* IsSmithingStyleKnown(number [[StyleItemIndex|styleItemIndex]], number patternIndex)
  278. +* IsSmithingStyleKnown(number styleItemIndex, number patternIndex)
  279.  ** Returns: boolean known
  280.  
  281.  * GetFirstKnownStyleIndex(number patternIndex)
  282. -** Returns: number [[StyleItemIndex|styleItemIndex]]
  283. +** Returns: number styleItemIndex
  284.  
  285.  * CanSmithingStyleBeUsedOnPattern(number styleIndex, number patternIndex, number materialIndex, number materialQuantity)
  286.  ** Returns: boolean canBeUsed, number levelRequirement, number championPointsRequirement
  287. @@ -4749,19 +4864,30 @@
  288.  * GetNumTelvarStonesLost()
  289.  ** Returns: number telvarStonesLost
  290.  
  291. -* SetPendingEquippedItemDye(number [[Globals#EquipSlot|EquipSlot]] equipSlot, number:nilable primaryDyeIndex, number:nilable secondaryDyeIndex, number:nilable accentDyeIndex)
  292. -
  293. -* GetPendingEquippedItemDye(number [[Globals#EquipSlot|EquipSlot]] equipSlot)
  294. -** Returns: number:nilable primaryDyeIndex, number:nilable secondaryDyeIndex, number:nilable accentDyeIndex
  295. +* InitializePendingDyes(number [[Globals#DyeMode|DyeMode]] dyeMode)
  296. +
  297. +* SetPendingSlotDyes(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot, number primaryDyeId, number secondaryDyeId, number accentDyeId)
  298. +
  299. +* GetPendingSlotDyes(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  300. +** Returns: number primaryDyeId, number secondaryDyeId, number accentDyeId
  301.  
  302.  * GetNumDyes()
  303.  ** Returns: number numDyes
  304.  
  305.  * GetDyeInfo(number dyeIndex)
  306. +** Returns: string dyeName, boolean known, number [[Globals#DyeRarity|DyeRarity]] rarity, number [[Globals#DyeHueCategory|DyeHueCategory]] hueCategory, number achievementId, number r, number g, number b, number sortKey, number dyeId
  307. +
  308. +* GetDyeInfoById(number dyeId)
  309.  ** Returns: string dyeName, boolean known, number [[Globals#DyeRarity|DyeRarity]] rarity, number [[Globals#DyeHueCategory|DyeHueCategory]] hueCategory, number achievementId, number r, number g, number b, number sortKey
  310.  
  311. +* GetDyeColorsById(number dyeId)
  312. +** Returns: number r, number g, number b
  313. +
  314.  * GetCurrentItemDyes(number bagId, number slotIndex)
  315. -** Returns: number:nilable primaryDyeIndex, number:nilable secondaryDyeIndex, number:nilable accentDyeIndex
  316. +** Returns: number primaryDyeIndex, number secondaryDyeIndex, number accentDyeIndex
  317. +
  318. +* GetCurrentCollectibleDyes(number collectibleId)
  319. +** Returns: number primaryDyeIndex, number secondaryDyeIndex, number accentDyeIndex
  320.  
  321.  * ApplyPendingDyes()
  322.  
  323. @@ -4769,9 +4895,68 @@
  324.  ** Returns: number numSavedDyeSets
  325.  
  326.  * GetSavedDyeSetDyes(number dyeSetIndex)
  327. -** Returns: number:nilable primaryDyeIndex, number:nilable secondaryDyeIndex, number:nilable accentDyeIndex
  328. -
  329. -* SetSavedDyeSetDyes(number dyeSetIndex, number:nilable primaryDyeIndex, number:nilable secondaryDyeIndex, number:nilable accentDyeIndex)
  330. +** Returns: number primaryDyeId, number secondaryDyeId, number accentDyeId
  331. +
  332. +* SetSavedDyeSetDyes(number dyeSetIndex, number primaryDyeId, number secondaryDyeId, number accentDyeId)
  333. +
  334. +* CanUseCollectibleDyeing()
  335. +** Returns: boolean collectibleDyeingAllowed
  336. +
  337. +* IsDyeableSlotDyeable(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  338. +** Returns: boolean isDyeable
  339. +
  340. +* IsDyeableSlotBound(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  341. +** Returns: boolean isBound
  342. +
  343. +* AreDyeableSlotDyeChannelsDyeable(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  344. +** Returns: boolean primary, boolean secondary, boolean accent
  345. +
  346. +* GetDyeableSlotDyeData(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  347. +** Returns: number dyeData
  348. +
  349. +* GetDyeableSlotId(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  350. +** Returns: number id
  351. +
  352. +* GetDyeableSlotIcon(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  353. +** Returns: textureName icon
  354. +
  355. +* GetDyeableSlotCurrentDyes(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  356. +** Returns: number primaryDyeId, number secondaryDyeId, number accentDyeId
  357. +
  358. +* IsDyeIndexKnown(number dyeIndex)
  359. +** Returns: boolean isKnown
  360. +
  361. +* CanPlayerUseCostumeDyeStamp(number dyeStampId)
  362. +** Returns: number [[Globals#DyeStampUseResult|DyeStampUseResult]] dyeStampUseResult
  363. +
  364. +* CanPlayerUseItemDyeStamp(number dyeStampId)
  365. +** Returns: number [[Globals#DyeStampUseResult|DyeStampUseResult]] dyeStampUseResult
  366. +
  367. +* SetupDyeStampPreview(number bagId, number slotIndex)
  368. +
  369. +* GetNumDyeableEquipSlots()
  370. +** Returns: number numDyeableEquipSlots
  371. +
  372. +* GetNumDyeableCollectibleCategories()
  373. +** Returns: number numDyeableCollectibleCategories
  374. +
  375. +* GetDyeableEquipSlot(number dyeableEquipSlotIndex)
  376. +** Returns: number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot
  377. +
  378. +* GetDyeableCollectibleCategory(number dyeableCollectibleCategoryIndex)
  379. +** Returns: number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot
  380. +
  381. +* GetDyeableEquipSlotGamepadOrder(number dyeableEquipSlotIndex)
  382. +** Returns: number gamepadOrder
  383. +
  384. +* GetDyeableCollectibleCategoryGamepadOrder(number dyeableCollectibleCategoryIndex)
  385. +** Returns: number gamepadOrder
  386. +
  387. +* GetEquipSlotFromDyeableSlot(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  388. +** Returns: number [[Globals#EquipSlot|EquipSlot]] equipSlot
  389. +
  390. +* GetCollectibleCategoryFromDyeableSlot(number [[Globals#DyeableSlot|DyeableSlot]] dyeableSlot)
  391. +** Returns: number [[Globals#CollectibleCategoryType|CollectibleCategoryType]] collectibleCategory
  392.  
  393.  * IsJusticeEnabled()
  394.  ** Returns: boolean isJusticeEnabled
  395. @@ -4997,6 +5182,12 @@
  396.  * {{Private function}} IsCurrentlyPreviewing()
  397.  ** Returns: boolean isPreviewing
  398.  
  399. +* {{Private function}} IsInPreviewMode()
  400. +** Returns: boolean isInPreviewMode
  401. +
  402. +* IsCharacterPreviewingAvailable()
  403. +** Returns: boolean canPreview
  404. +
  405.  * {{Private function}} EndCurrentItemPreview()
  406.  
  407.  * {{Private function}} BeginItemPreviewSpin()
  408. @@ -5006,6 +5197,14 @@
  409.  * {{Private function}} CanSpinPreviewCharacter()
  410.  ** Returns: boolean canSpin
  411.  
  412. +* {{Private function}} PreviewCollectible (number collectibleDefId, number variation, number dyeBrushId)
  413. +
  414. +* {{Private function}} PreviewDyeStamp (number dyeStampId, number [[Globals#ItemUseType|ItemUseType]] itemType)
  415. +
  416. +* {{Private function}} PreviewCraftItem (number patternIndex, number materialIndex, number materialQuantity, number styleIndex, number traitIndex, boolean useUniversalStyleItem, number aDyeStampId)
  417. +
  418. +* {{Private function}} SetPreviewDyeMode (number [[Globals#DyeMode|DyeMode]] dyeMode)
  419. +
  420.  * GetNumDefaultQuickChats()
  421.  ** Returns: number numQuickChats
  422.  
  423. @@ -5182,4 +5381,33 @@
  424.  ** Returns: string emailAddress
  425.  
  426.  * GetCurrentZoneDungeonDifficulty()
  427. -** Returns: number [[Globals#DungeonDifficulty|DungeonDifficulty]] isVeteranDifficulty
  428. \ No newline at end of file
  429. +** Returns: number [[Globals#DungeonDifficulty|DungeonDifficulty]] isVeteranDifficulty
  430. +
  431. +* {{Private function}} HousingEditorToggleSnapMode()
  432. +
  433. +* {{Private function}} HousingEditorRequestPlacement()
  434. +
  435. +* {{Private function}} HousingEditorRotateFixture (number [[Globals#AxisTypes|AxisTypes]] axis, number magnitude)
  436. +
  437. +* {{Private function}} HousingEditorPushFixture (number magnitude)
  438. +
  439. +* {{Private function}} HousingEditorPreviewItemFurniture (number [[Globals#Bag|Bag]] bagId, number slotIndex)
  440. +** Returns: boolean success
  441. +
  442. +* {{Private function}} HousingEditorHasPendingFixture()
  443. +** Returns: boolean isPreview
  444. +
  445. +* {{Private function}} HousingEditorSelectFurniture()
  446. +
  447. +* {{Private function}} HousingEditorCanSelectFurniture()
  448. +
  449. +* {{Private function}} HousingEditorRequestModeChange (number [[Globals#HousingEditorMode|HousingEditorMode]] mode)
  450. +
  451. +* {{Private function}} GetHousingEditorMode()
  452. +** Returns: number [[Globals#HousingEditorMode|HousingEditorMode]] mode
  453. +
  454. +* {{Private function}} DebugHousingEditorPreviewTestFurniture (number index)
  455. +** Returns: boolean success
  456. +
  457. +* {{Private function}} DebugGetNumTestFurniture()
  458. +** Returns: number size
  459. \ No newline at end of file

Last edited by Ayantir : 07/31/16 at 11:10 AM.
  Reply With Quote
08/01/16, 11:55 AM   #40
Weolo
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 79
Shadow of the Hist - Storing addon data

Shadow of the Hist now comes with API functions to allow your addon data to survive a character rename, class change, race change and even figure out if the player has deleted an old character.

Old way of storing addon data
Lua Code:
  1. local settings =  ZO_SavedVars:NewAccountWide("Test Addon", 1, nil, defaults)
  2. local name = zo_strformat("<<1>>",GetRawUnitName("player"))
  3. settings[name] = {
  4.   [something] = 1,
  5.   [show] = true
  6. }
This would produce a saved variables file like this:
Lua Code:
  1. {
  2.   ["Fred Smith"] = {
  3.     ["something"] = 1,
  4.     ["show"] = false,
  5.   },
  6.   ["John Smith"] = {
  7.     ["something"] = 2,
  8.     ["show"] = true,
  9.   }
  10. }

The problem with that is if the player purchases a rename token they will not have access to their old addon data.

This can all be fixed with these few functions

GetNumCharacters()
GetCharacterInfo()
GetCurrentCharacterId()

The "CharacterId" is unique for each character you have.

Example of the new way to store addon data
Lua Code:
  1. local id = GetCurrentCharacterId()
  2. settings[id] = {
  3.   [something] = 1,
  4.   [show] = true
  5. }
This would produce a saved variables file like this:
Lua Code:
  1. {
  2.   ["11111111"] = {
  3.     ["something"] = 1,
  4.     ["show"] = false,
  5.   },
  6.   ["22222222"] = {
  7.     ["something"] = 2,
  8.     ["show"] = true,
  9.   }
  10. }

And they can also be used to convert the old format over to the new one.
Lua Code:
  1. for i = 1, GetNumCharacters() do
  2.   local name, gender, level, championRank, classId, raceId, alliance, id, locationId = GetCharacterInfo(i)
  3.   name = zo_strformat("<<1>>",name)
  4.   if settings[name] then
  5.     --Found the old data, now convert it
  6.     settings[id] = {
  7.       [something] = settings[name].something,
  8.       [show] = settings[name].show
  9.     }
  10.     --Now tidy up/remove the old data
  11.     settings[name] = nil
  12.   end
  13. end
  14.  
  15. local id = GetCurrentCharacterId()
  16. settings[id] = {
  17.   [something] = 1,
  18.   [show] = true
  19. }

This last example just tidies up old/deleted characters
Lua Code:
  1. local found = {}
  2. for i = 1, GetNumCharacters() do
  3.   local name, gender, level, championRank, classId, raceId, alliance, id, locationId = GetCharacterInfo(i)
  4.   found[id] = true
  5. end
  6.  
  7. for id,data in pairs(settings) do
  8.   if not found[id] then
  9.     settings[id] = nil
  10.   end
  11. end
  12.  
  13. local id = GetCurrentCharacterId()
  14. settings[id] = {
  15.   [something] = 1,
  16.   [show] = true
  17. }

I did find one bug with GetCharacterInfo() on PTS which is being fixed and that was if you created a brand new character they did not appear in GetCharacterInfo(). But that is easy enough to fix with a small bit of code for now. I need to test live once Shadow of the Hist is all patched up to see if the bug fix is there.
  Reply With Quote

ESOUI » Developer Discussions » Tutorials & Other Helpful Info » Update 2.5

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