ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   Tutorials & Other Helpful Info (https://www.esoui.com/forums/forumdisplay.php?f=172)
-   -   Update 2.5 (https://www.esoui.com/forums/showthread.php?t=6384)

Ayantir 07/02/16 06:35 AM

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...

ZOS_ChipHilseberg 07/06/16 11:31 AM

Quote:

Originally Posted by sirinsidiator (Post 27656)
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?

Ayantir 07/06/16 09:52 PM

I've updated http://wiki.esoui.com/Collectibles even if I still don't know if anyone use it... :rolleyes:

sirinsidiator 07/07/16 03:40 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 27683)
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.

ZOS_ChipHilseberg 07/07/16 08:16 AM

Quote:

Originally Posted by sirinsidiator (Post 27687)
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.

Ayantir 07/11/16 09:12 PM

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

Ayantir 07/13/16 05:22 PM

And because, I needed doc on the control type TextureComposite (who knows it ? :rolleyes: ) .. 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.

ZOS_ChipHilseberg 07/14/16 08:04 AM

1 Attachment(s)
Here's the updated docs for the next PTS update.

sirinsidiator 07/14/16 11:22 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 27767)
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.

ZOS_ChipHilseberg 07/14/16 12:44 PM

Quote:

Originally Posted by sirinsidiator (Post 27772)
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.

Weolo 07/19/16 10:31 AM

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) :)

QuadroTony 07/20/16 03:21 AM

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?

Weolo 07/23/16 08:17 PM

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

ZOS_ChipHilseberg 07/25/16 02:06 PM

Quote:

Originally Posted by Weolo (Post 27844)
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.

Woeler 07/30/16 12:36 AM

Quote:

Originally Posted by Ayantir (Post 27686)
I've updated http://wiki.esoui.com/Collectibles even if I still don't know if anyone use it... :rolleyes:

Is there also a page like that with all motifs? I still need the ingame ID's of the new ones for eso-database.

Ayantir 07/30/16 03:55 AM

http://wiki.esoui.com/StyleItemIndex

Ayantir 07/30/16 01:33 PM

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 :

Quote:

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'')

Woeler 07/30/16 04:30 PM

Quote:

Originally Posted by Ayantir (Post 27881)

Exactly what I needed. Thanks!

Ayantir 07/31/16 10:07 AM

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

Weolo 08/01/16 11:55 AM

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.


All times are GMT -6. The time now is 04:49 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI