ESOUI

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

sirinsidiator 04/16/18 02:35 PM

Update 4.0
 
The next version just hit the PTS, so here is an update thread for that.

New API Version: 100023

PTS Dev Guild
We always create a guild for all addon developers on the PTS, so we can test guild related things and more, ask for help with testing or just chat.
If you need an invite, ask here or over on our Gitter channel.

Links

I'll edit the OP with more useful information as you post it.

Rhyono 04/16/18 08:10 PM

Welkynar and Dremora are unfinished motifs. I wonder if Pyandonean is intentionally crown store only.

ZOS_ChipHilseberg 04/17/18 08:26 AM

Most of you should already have Summerset access from the Morrowind PTS, but if any active addon author needs it they can message me.

Rhyono 04/17/18 11:31 AM

I was given Morrowind access, but maybe I'm doing it wrong for Summerset? When clicking the wayshrine it tells me to upgrade.

ZOS_ChipHilseberg 04/18/18 09:07 AM

Quote:

Originally Posted by Rhyono (Post 34424)
I was given Morrowind access, but maybe I'm doing it wrong for Summerset? When clicking the wayshrine it tells me to upgrade.

There were some issues with access flags initially. Can you get in today?

ZOS_ChipHilseberg 04/18/18 12:39 PM

1 Attachment(s)
Here's the UI documentation.

Weolo 04/18/18 02:27 PM

Thanks for the file

Uesp 04/19/18 09:01 AM

What's going on with the skills/ability data? Previously when you used the function GetSpecificSkillAbilityInfo() for an active/ultimate ability you would get 12 different ability IDs for all the morph/rank choices. Now, however, it seems it only returns 3 different ability IDs (one for each morph) and the same abilities for all 4 ranks of each morph. Further, it seems the previous rank 2-4 abilities no longer exist and some rank 1 abilities have new IDs.

I was hoping to find some new skill related functions in the API but I can't seem to find any. Is this an on-purpose change in the skill API or is there something buggy going on the current PTS?


This seems to affect a bunch of skill API functions (only checked a few):
  • GetSpecificSkillAbilityInfo() -- Only returns the same ability for all ranks of a morph.
  • GetAbilityProgressionAbilityId() -- Returns the same ability ID regardless of rank.
  • GetAbilityProgressionXPInfoFromAbilityId() -- Doesn't return the correct morph.
  • GetSpecificSkillAbilityKeysByAbilityId() -- Returns the correct morph but the incorrect rank (always 2).

Weolo 04/19/18 10:18 AM

I am confused Uesp GetSpecificSkillAbilityInfo() only returns 2 values, not 12.
It seems to be defined the same was it is right now

OLD
Lua Code:
  1. GetSpecificSkillAbilityInfo(skillType, skillIndex, abilityIndex, morphChoice, rankIndex)
  2. Returns: abilityId, rankNeeded

NEW
Lua Code:
  1. GetSpecificSkillAbilityInfo(skillType, skillIndex, abilityIndex, morphChoice, rankIndex)
  2. Returns: abilityId, skillLineRankNeeded

Uesp 04/19/18 10:56 AM

Quote:

Originally Posted by Weolo (Post 34443)
I am confused Uesp GetSpecificSkillAbilityInfo() only returns 2 values, not 12.
It seems to be defined the same was it is right now

OLD
Lua Code:
  1. GetSpecificSkillAbilityInfo(skillType, skillIndex, abilityIndex, morphChoice, rankIndex)
  2. Returns: abilityId, rankNeeded

NEW
Lua Code:
  1. GetSpecificSkillAbilityInfo(skillType, skillIndex, abilityIndex, morphChoice, rankIndex)
  2. Returns: abilityId, skillLineRankNeeded

Sorry for the confusion...here's an explicit example comparing Live/PTS:

Live:
Code:

GetSpecificSkillAbilityInfo(1, 13, 2, 0, 0) = 26114, 1
GetSpecificSkillAbilityInfo(1, 13, 2, 0, 1) = 27179, 2
GetSpecificSkillAbilityInfo(1, 13, 2, 0, 2) = 27182, 3
GetSpecificSkillAbilityInfo(1, 13, 2, 0, 3) = 27186, 4

PTS:
Code:

GetSpecificSkillAbilityInfo(1, 13, 2, 0, 0) = 26114, 1
GetSpecificSkillAbilityInfo(1, 13, 2, 0, 1) = 26114, 2
GetSpecificSkillAbilityInfo(1, 13, 2, 0, 2) = 26114, 3
GetSpecificSkillAbilityInfo(1, 13, 2, 0, 3) = 26114, 4

On PTS abilities 27179, 27182, and 27186 do not exist. So either somethings buggy or they changed how the abilities level up from Rank 1-4.

calia1120 04/19/18 12:22 PM

Quote:

Originally Posted by Weolo (Post 34443)
I am confused Uesp GetSpecificSkillAbilityInfo() only returns 2 values, not 12.
It seems to be defined the same was it is right now

OLD
Lua Code:
  1. GetSpecificSkillAbilityInfo(skillType, skillIndex, abilityIndex, morphChoice, rankIndex)
  2. Returns: abilityId, rankNeeded

NEW
Lua Code:
  1. GetSpecificSkillAbilityInfo(skillType, skillIndex, abilityIndex, morphChoice, rankIndex)
  2. Returns: abilityId, skillLineRankNeeded

Here's a comparision of 3.3 (left) to PTS (right) - couple things changed.

calia1120 04/19/18 12:30 PM

One more here: the 2nd reference to *luaindex:nilable* is now *integer*, some function and several params have changed. Orange text highlights the differences. Should have my comparision notes up shortly.


Uesp 04/19/18 02:29 PM

Thanks for the API info although the changes seem minor and not related to the issue/confusion I'm having. I believe it just due to how different skill ranks work behind the scenes so it would only be relevant to a few mod authors that rely on specific ability IDs existing or abilities of different ranks having different IDs.

This is relevant to data mining for our skill browser which was messed up this update as it expected ability data in the same format/organization as previous updates.

Previously we could just do:

Code:

id01 = GetAbilityProgressionAbilityId(progressionIndex, 0, 1)
id02 = GetAbilityProgressionAbilityId(progressionIndex, 0, 2)
id03 = GetAbilityProgressionAbilityId(progressionIndex, 0, 3)
id04 = GetAbilityProgressionAbilityId(progressionIndex, 0, 4)
id11 = GetAbilityProgressionAbilityId(progressionIndex, 1, 1)
id12 = GetAbilityProgressionAbilityId(progressionIndex, 1, 2)
id13 = GetAbilityProgressionAbilityId(progressionIndex, 1, 3)
id14 = GetAbilityProgressionAbilityId(progressionIndex, 1, 4)
id21 = GetAbilityProgressionAbilityId(progressionIndex, 2, 1)
id22 = GetAbilityProgressionAbilityId(progressionIndex, 2, 2)
id23 = GetAbilityProgressionAbilityId(progressionIndex, 2, 3)
id24 = GetAbilityProgressionAbilityId(progressionIndex, 2, 4)

and then the various GetAbility...() functions to get all the ability data for all 12 morph+rank combinations along with morph/rank data. However, now the ability rank seems to be a hidden factor so its not possible to get the ability data (description, tooltip, skill coefficients, etc...) for anything except the characters current rank for all skills. Further meaning I can't mine live data as I would need all active/ultimate skills leveled to rank 4 in order to get the correct tooltip data. Can use PTS templates to get all rank 4 data at least and hope there's no difference between PTS and Live on release day.

I'll keep looking at the API and trying to figure out a better/easier way of getting the data for all ability ranks and will take any suggestions people have. Would also love a ZOS dev to chip in (wink-wink) on this change and whether I'm missing anything obvious.

Rhyono 04/19/18 03:38 PM

I'm pretty sure I don't have any addons messing with the inventory active, yet I get the tainted stack issue on all containers. Is anyone else having this issue and is this going to be taintgate 2?

calia1120 04/19/18 03:55 PM

1 Attachment(s)
Changenotes to 3.3 attached.

sirinsidiator 04/19/18 04:42 PM

Quote:

Originally Posted by Rhyono (Post 34453)
I'm pretty sure I don't have any addons messing with the inventory active, yet I get the tainted stack issue on all containers. Is anyone else having this issue and is this going to be taintgate 2?

It's caused by the change to ZO_PreHook which will be reverted in the next pts cycle. Until then you can use the LibCustomMenu that votan posted on gitter yesterday.

Rhyono 04/19/18 05:03 PM

Good, thanks.

I'm hoping someone goofed and the Jewelry line doesn't intentionally use Woodworking images...

ZOS_ChipHilseberg 04/20/18 08:00 AM

Quote:

Originally Posted by Uesp (Post 34442)
What's going on with the skills/ability data? Previously when you used the function GetSpecificSkillAbilityInfo() for an active/ultimate ability you would get 12 different ability IDs for all the morph/rank choices. Now, however, it seems it only returns 3 different ability IDs (one for each morph) and the same abilities for all 4 ranks of each morph. Further, it seems the previous rank 2-4 abilities no longer exist and some rank 1 abilities have new IDs.

I was hoping to find some new skill related functions in the API but I can't seem to find any. Is this an on-purpose change in the skill API or is there something buggy going on the current PTS?


This seems to affect a bunch of skill API functions (only checked a few):
  • GetSpecificSkillAbilityInfo() -- Only returns the same ability for all ranks of a morph.
  • GetAbilityProgressionAbilityId() -- Returns the same ability ID regardless of rank.
  • GetAbilityProgressionXPInfoFromAbilityId() -- Doesn't return the correct morph.
  • GetSpecificSkillAbilityKeysByAbilityId() -- Returns the correct morph but the incorrect rank (always 2).

The active skills were changed into single abilities with scaling behavior based on rank. This was to help with updating and maintaining these skills. I'll need to think about what it would mean to target specific ranks of these through APIs. I think it might mean adding rank parameters to a lot of the ability APIs. Which APIs are you using?

Uesp 04/20/18 11:06 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 34465)
The active skills were changed into single abilities with scaling behavior based on rank. This was to help with updating and maintaining these skills. I'll need to think about what it would mean to target specific ranks of these through APIs. I think it might mean adding rank parameters to a lot of the ability APIs. Which APIs are you using?

Yah, that's what I assumed was going on. It makes sense as it reduces the number of active skills you have to maintain by a factor x4.

As for adding the skill rank to API functions, it would be any of the GetAbility....() where the value might change between ranks. A few ones I can think of would include:
  • GetAbilityDescription()
  • GetAbilityCost()
  • GetAbilityDuration()
  • GetAbilityCastInfo()
  • GetAbilityRange()
  • GetAbilityRadius()

Unsure if those last few ever change for different ranks. At the very least the description which would let us mine the skill coefficients for all 4 ranks.

I would assume you were thinking of changing the API to something like:
Code:

GetAbilityDescription( *integer* abilityId, *integer:nilable* _rankIndex_)
Returns: *string* _description_

or you could do:
Code:

GetAbilityDescription( *integer* abilityId)
Returns: *string* _desc1_, *string:nilable* _desc2_, *string:nilable* _desc3_, *string:nilable* _desc4_

I assume that at the moment the GetAbilityDescription(abilityId) and similar functions return values for the current rank of the character correct?

ArtOfShred 04/20/18 07:43 PM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 34465)
The active skills were changed into single abilities with scaling behavior based on rank. This was to help with updating and maintaining these skills. I'll need to think about what it would mean to target specific ranks of these through APIs. I think it might mean adding rank parameters to a lot of the ability APIs. Which APIs are you using?

This is actually super helpful for me. Makes it way less difficult to do things like custom auras for ground abilities. Although - a method to pull the duration differences between ranks when relevant might be helpful in certain cases.

Also, Chip, would you be able to pass a suggestion along to the development team? Currently there's an inconsistency between ability names for "Off Balance" and "Off-Balance." Might be a good idea to do a pass on it and normalize it in all ability's as well as tooltips (I think tooltips might all say "Off Balance" now but I haven't check every single one). Thanks!

Letho 04/21/18 05:23 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 34465)
The active skills were changed into single abilities with scaling behavior based on rank. This was to help with updating and maintaining these skills. I'll need to think about what it would mean to target specific ranks of these through APIs. I think it might mean adding rank parameters to a lot of the ability APIs. Which APIs are you using?

This is the best change that has ever been made since I was coding addons, awesome! It will make addon development so much easier for me. There is just one little grain of salt left: Can you add a field or a function that contains info wether the ability is a 'player owned' ability and additonally the base morph, morph a, morph b relations (e.g. 30244 being morph b, it should contain some info on which ability id is morph a and the base morph).

ArtOfShred 04/21/18 06:07 AM

Quote:

Originally Posted by Letho (Post 34486)
This is the best change that has ever been made since I was coding addons, awesome! It will make addon development so much easier for me. There is just one little grain of salt left: Can you add a field or a function that contains info wether the ability is a 'player owned' ability and additonally the base morph, morph a, morph b relations (e.g. 30244 being morph b, it should contain some info on which ability id is morph a and the base morph).

Morphs still have a different ID I believe. Just rank 1-4 for each were compressed into single id's.

Letho 04/21/18 07:01 AM

Quote:

Originally Posted by ArtOfShred (Post 34487)
Morphs still have a different ID I believe. Just rank 1-4 for each were compressed into single id's.

Yep, I understood that, makes sense since there are boss abilities, that do not have morphs ^^

What I meant is, that I'd like to have a field that allows me to link a specific abilityId to it's (base)-morph(s) IF it is morphable (= player owned?).

g4rr3t 04/23/18 04:03 AM

The unification of ability IDs is certainly useful for my application. Makes things much more streamlined only having to register callbacks or monitoring for a quarter of the number of IDs, but I can see how it may introduce a little more work for those who use the unique ranks in more meaningful ways. I'm a fan.

Can confirm that stack IDs (à la Grim Focus) also maintain the Rank I IDs. Haven't tested all ranks for any "gotchas" but at least all the ones I've tested have stacked against the Rank I ID.

Cheers.
G

ZOS_ChipHilseberg 04/23/18 08:16 AM

You can use GetSpecificSkillAbilityInfo to link up the morphs.

Gandalf 04/24/18 10:31 AM

On PTS the handling of buffs(effects) has changed.
The effent EVENT_EFFECT_CHANGED and ESO client BUFF&DEBUFF option don't show:

- RAPID_MANEUVER_ABILITY
- RETREATING_MANEUVER_ABILITY
- CHARGING_MANEUVER_ABILITY

anymore, instead the resulting buffs

- MAJOR_GALLOP
- MAJOR_EVASION

will be shown.

Is the this change on purpose and permanent?

Gandalf 04/24/18 11:04 AM

ESOUIDocumentationP18 2.txt
 
In ESOUIDocumentationP18 2.txt:
Code:

EVENT_ALLIANCE_POINT_UPDATE (*integer* _alliancePoints_, *bool* _playSound_, *integer* _difference_, *[CurrencyChangeReason|#CurrencyChangeReason]* _reason_)
has not changed for update 18.

But with Update 18 the alliance point gain (tick) will be advised when the player may already has moved to another zone.

Therefore:
Can this event be extended with an additional parameter for keep Id of tick?
This would allow to track the source (credit list) of the tick.


.

ZOS_ChipHilseberg 04/25/18 03:55 PM

Quote:

Originally Posted by Gandalf (Post 34525)
On PTS the handling of buffs(effects) has changed.
The effent EVENT_EFFECT_CHANGED and ESO client BUFF&DEBUFF option don't show:

- RAPID_MANEUVER_ABILITY
- RETREATING_MANEUVER_ABILITY
- CHARGING_MANEUVER_ABILITY

anymore, instead the resulting buffs

- MAJOR_GALLOP
- MAJOR_EVASION

will be shown.

Is the this change on purpose and permanent?

Yes, these were unified into specific buff types.

ZOS_ChipHilseberg 04/25/18 04:32 PM

Quote:

Originally Posted by Gandalf (Post 34527)
In ESOUIDocumentationP18 2.txt:
Code:

EVENT_ALLIANCE_POINT_UPDATE (*integer* _alliancePoints_, *bool* _playSound_, *integer* _difference_, *[CurrencyChangeReason|#CurrencyChangeReason]* _reason_)
has not changed for update 18.

But with Update 18 the alliance point gain (tick) will be advised when the player may already has moved to another zone.

Therefore:
Can this event be extended with an additional parameter for keep Id of tick?
This would allow to track the source (credit list) of the tick.


.

Yeah we can do something like that.

Letho 04/26/18 12:55 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 34506)
You can use GetSpecificSkillAbilityInfo to link up the morphs.

I see, thanks! As you said, all player ability ranks have been merged. How about boss abilities? There were some encounters (especially light guy and shadow dude [don't remember their names right now] in vMoL) where some buffs of the same type and name are given to different players using different abilityIDs. Have those use cases' ability ids been merged, too?

Gandalf 04/26/18 08:44 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 34532)
Yeah we can do something like that.

Thanks for the fast response and the clearification, I'm looking forward to see that extension!

Cheers,
Gandalf

sirinsidiator 04/30/18 01:17 PM

I tried to update Circonian's LibNotifications and noticed that NOTIFICATION_TYPE_GIFT is not defined, but is used in notifications_gamepad.lua and notifications_keyboard.lua. Not sure why it doesn't throw a lua error there, but when I copy the table into LibNotifications, it does exactly that:
Code:

user:/AddOns/LibNotification/LibNotification/LibNotification.lua:25: table index is nil
stack traceback:
    user:/AddOns/LibNotification/LibNotification/LibNotification.lua:25: in function '(main chunk)'

@Chip is this entry unused and should be removed, or is the constant just missing? And could you please make these tables global? The lib breaks on almost every update because it relies on the data in these two files. :(

ZOS_ChipHilseberg 04/30/18 01:56 PM

Quote:

Originally Posted by sirinsidiator (Post 34568)
I tried to update Circonian's LibNotifications and noticed that NOTIFICATION_TYPE_GIFT is not defined, but is used in notifications_gamepad.lua and notifications_keyboard.lua. Not sure why it doesn't throw a lua error there, but when I copy the table into LibNotifications, it does exactly that:
Code:

user:/AddOns/LibNotification/LibNotification/LibNotification.lua:25: table index is nil
stack traceback:
    user:/AddOns/LibNotification/LibNotification/LibNotification.lua:25: in function '(main chunk)'

@Chip is this entry unused and should be removed, or is the constant just missing? And could you please make these tables global? The lib breaks on almost every update because it relies on the data in these two files. :(

I'm looking at the latest code and I don't see any references to NOTIFICATION_TYPE_GIFT anywhere. They've all been split into RECEIVED, CLAIMED, and RETURNED variants.

We can make the table globals.

sirinsidiator 04/30/18 02:30 PM

Ok. That explains why I didn't see any errors. I don't have the latest code extracted yet. :o

Gandalf 05/09/18 07:35 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 34532)
Yeah we can do something like that.


Works like a charm, Thank you!


Just one additional question:

Pre Update 18, attack/defense tick have been granted for keep types:
- KEEPTYPE_ARTIFACT_KEEP
- KEEPTYPE_KEEP
- KEEPTYPE_OUTPOST
- KEEPTYPE_RESOURCE
- KEEPTYPE_TOWN

In update 18:
A keep and its resources will been treated as a super structure with a total of 4 credit(reward) list and
the lists will be cleared when the player is defending/attacking in another super structure. Probably when the player earns CURRENCY_CHANGE_REASON_KILL for kills/healing.

What is the handling for the other keep types (without super structure)? Will these credit list cleared as well when the player is active on another keep of the same type? E.g. Moving from one scroll temple to another?

Thanks,
Gandalf

ZOS_ChipHilseberg 05/09/18 11:10 AM

Quote:

Originally Posted by Gandalf (Post 34642)
Works like a charm, Thank you!


Just one additional question:

Pre Update 18, attack/defense tick have been granted for keep types:
- KEEPTYPE_ARTIFACT_KEEP
- KEEPTYPE_KEEP
- KEEPTYPE_OUTPOST
- KEEPTYPE_RESOURCE
- KEEPTYPE_TOWN

In update 18:
A keep and its resources will been treated as a super structure with a total of 4 credit(reward) list and
the lists will be cleared when the player is defending/attacking in another super structure. Probably when the player earns CURRENCY_CHANGE_REASON_KILL for kills/healing.

What is the handling for the other keep types (without super structure)? Will these credit list cleared as well when the player is active on another keep of the same type? E.g. Moving from one scroll temple to another?

Thanks,
Gandalf

Per the programmer responsible, you can have credit on one of each keep type, with the exception of resource keeps where you can have credit on 3 as long as they have the same parent keep.

Baertram 05/10/18 02:38 PM

Just a note about crafting functions which were global and removed now.
Old and removed:
Lua Code:
  1. function ZO_CraftingUtils_IsTraitAppliedToWeapons(traitType)
  2.     local traitCategory = GetItemTraitTypeCategory(traitType)
  3.     return traitCategory == ITEM_TRAIT_TYPE_CATEGORY_WEAPON
  4. end
  5.  
  6. function ZO_CraftingUtils_IsTraitAppliedToArmor(traitType)
  7.     local traitCategory = GetItemTraitTypeCategory(traitType)
  8.     return traitCategory == ITEM_TRAIT_TYPE_CATEGORY_ARMOR
  9. end

Replaced by:
ZO_CraftingUtils_GetSmithingFilterFromTrait(smithingResearchLineTraitInfo)

-> See file
/esoui/ingame/crafting/smithingresearch_shared.lua
-> function ZO_SharedSmithingResearch:Refresh()

e.g. used like this:
local expectedTypeFilter = ZO_CraftingUtils_GetSmithingFilterFromTrait(GetSmithingResearchLineTraitInfo(craftingType, researchLineIndex, 1))

Shinni 05/11/18 04:02 PM

Hey, I just wanted to ask if turning AddOutfitSlotPreviewElementToPreviewCollection private is a permanent change or if it is something temporary as in a past PTS with PreviewCraftItem?


All times are GMT -6. The time now is 11:36 PM.

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