ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   Alpha/Beta AddOns (https://www.esoui.com/forums/forumdisplay.php?f=171)
-   -   Aura Mastery (https://www.esoui.com/forums/showthread.php?t=6278)

Letho 05/17/16 03:15 AM

Aura Mastery
 
1 Attachment(s)
Hi guys,

I've just finished creating the first alpha version of my addon. Describing or categorizing it is very difficult imo, you could probably describe it as a "notification/aura manager".

The idea behind it:

Create your own Icons/Statusbars and display them based upon userdefined conditions. With "status conditions" (health points, ressources, unit_states), "combatLogEvent" based conditions (e.g. UNIT_SPELLCAST_SUCCEDDED [thats from WoW, i am not familiarized with ESOs combatlog, yet) and other stuff it's currently not more than a customizable aura tracker working on a whitelist basis.

It will probably be more clear if u take a look at the screenshots:




In this case I picked argent dawnbreaker's icon for the display, set it's dimensions to 64x64, border of 1px...
I let it display once the following conditions are met:

1. Deto's timeleft < 3s
2. Rapid maneuver's timeleft > 10s
(Makes no sense, it's just for demonstration purposes).

Each Icon can be configured seperatly, there are no lists or groups, so u can keep your interface clean and only display stuff once it gets interesting.



This is the configuration menu.
The left side contains all auras you created. The names are just for personal identification purposes.
On the right side there are 3 menu categories:

1. Display options
- Transparency is alpha and ranges from 0(invisible)-1(no transparency) quite self explanatory to coders
- critical: once the timeleft goes beyond this threashold display the duration in milliseconds

2. Display conditions
The conditions always compare the value specified within the value-editbox using the selected operator to an aura's remaining duration.
- Check all: In ESO every ability(-morph) has 4 ranks. Therefor the ability has 4 different spell IDs, 1 for each rank. If u set this to true the addon will not only track your specified rank, but all ranks for the provided spell. This will be useful for configuring a display based on enemies debuffs on you (their spell ranks can be from 1-4 without any chance to exactly know it) and saves the user from creating a condition for every rank.

- Invert: Invert the whole provided logic. This is useful for displaying an aura if the specified debuff is not present and hide it once it is up. This could've been achieved using a "value == 0" logic, but as I said before i will add some other conditions, such as statusconditions one day, where a numeric expression would not work that easily.




Please be aware that this addon is my first steps within the ESO-Api. Especially the menu controls and the way their functionality is implemented are most probably a mess because I had no time to familiarize myself with the original templates provided bei Zenimax, so I inherited from absolutely nothing and built most editboxes, submenus, dropdownmenus, etc. from scratch using not more than basic controls. This is gonna change in the future.

In other words: This is a very early alpha version to get everybody an idea of what I am doing/planing.



Usage:


/am menu << Open the config menu to set up your auras

/am unlock << Make all auras movable (pixel precise positioning can be done in the menu)

/am unlock << self explanatory


Any feedback, comments, bug reports or tips how to do better would be HIGHLY appreciated!

Cheers,
Letho

sirinsidiator 05/17/16 04:58 AM

Looks great! I'll have to give it a try.

If you are looking for an easy and widely accepted way to do the settings menu you could use LibAddonMenu and create custom controls for the parts that are not already defined.

Letho 05/17/16 07:40 AM

Well, i have thought about using LAM2, problem is, as far as I understood it, it defines controls in the style of ESO's main menu (thereby using fixed controls with textures, specific proportions, and so on). Looking into it and understanding it 100% is one of my future goals for AuraMastery^^

Thx for trying it, let me know if u run into any issues or have some ideas how to improve it!

P.S.: There is currently no way for tracking all Major/Minor buffs, the spell IDs have to be set up one by one. I'm gonna implement that next, once my exam phase is over :)

Scootworks 05/17/16 09:46 AM

maybe you can use this list
http://esoacademy.com/buffs-debuffs/

and look for the id's in Srendarr ?

Letho 05/17/16 01:08 PM

Hey, I'm already using that list :) It's not 100% complete, though! I'll take a deeper look into srendar's code tomorrow and ask kith for permission.

Scootworks 05/17/16 02:06 PM

good idea. maybe deltias list is more complete?

Letho 05/17/16 02:52 PM

I misunderstood. The list is complete in terms of buffs/debuffs, just not in terms of what buff/debuff is triggered by what ability^^ I need the 2nd (the spell IDs to be precise).

Scootworks 05/17/16 09:58 PM

Quote:

Originally Posted by Letho (Post 26994)
I misunderstood. The list is complete in terms of buffs/debuffs, just not in terms of what buff/debuff is triggered by what ability^^ I need the 2nd (the spell IDs to be precise).

aaah ok :)

i tried to add retreating maneuver, but it doesn't work, because i don't understand the Display conditions with their values... :(

Baertram 05/18/16 12:47 AM

Looks good so far.
Wasn't able to test it yet but on first glance I'd say there is missing a simple way to use the skills/aura icon/texture itsself without having to browse all icons from that "skill tree" :-)

You are able to get the texture from the skill/ability name as far as I know.
At least for player buffs this works by using the events for buffs you'll find in the Wiki -> Events.

Letho 05/18/16 02:19 AM

Quote:

Originally Posted by Scootworks (Post 26996)
aaah ok :)

i tried to add retreating maneuver, but it doesn't work, because i don't understand the Display conditions with their values... :(

Displaying conditions are always compared to the provided spell's duration left. Lets say u found the spellId of retreating maneuver using the spell-ID finder on the right side.

Enter it in the Spell-ID-Box (never forget to press [Enter] to save it!)
Leave "check all" and "invert" to false
Operator and value determine the condition itself: " > 3" means disaplay the icon as long as the timeLeft of the provided spellId (in your case the ability id of retreating maneuver) is longer than 3s.

In short: Just read it as

"Display as long as [ability-ID]'s duration is [operator] than [value]."


Quote:

Originally Posted by Baertram (Post 26997)
Looks good so far.
Wasn't able to test it yet but on first glance I'd say there is missing a simple way to use the skills/aura icon/texture itsself without having to browse all icons from that "skill tree" :-)

You are able to get the texture from the skill/ability name as far as I know.
At least for player buffs this works by using the events for buffs you'll find in the Wiki -> Events.

Right, problem is, on a multi-conditioned display: what automatic icon shall i choose for display? flipping icons could be quite confusing.

Baertram 05/18/16 02:32 AM

Well I forgot about the "multi conditions" :D
Maybe choose the icon of the first condition automatically and let it change manually, or let the user choose if he wants to use the icon of 2nd, 3rd, 4th, ... condition as he adds a condiiton.

I bet most of the diplayed stuff will be related to only 1 buff (or result in the view of 1 desired buff where it's "all about", like your argent downbreaker icon)

Letho 05/18/16 03:25 AM

I could make the addon preselect an icon based on the first icon condition (as 1st condition could also be a status condition). That introduces another problem though: Lets assume the user enters an ability-ID, the addon would check if there is an icon-set. The check fails and the addon would use the ability ID's icon now and put it into the svars. Now the user changes his mind and adds another ability-ID => Icon wont be updated now, because there is already an icon set. I'd have to add another variable that contains the state if an icon is user-selected. im uncertain if that's really worth the effort.

Letho 05/18/16 09:34 AM

/new build (lua error fixes)

Randactyl 05/18/16 08:12 PM

using 0.2a

okay, so I have this set up:



Firstly, the aura box is not displayed on UI load as I would expect it to be under the specified conditions (no, i was not affected by the buff at the time of UI load)

Secondly, the box appears as it is supposed to if I cast Igneous Weapons after the UI load and the time remaining reaches the specified value. When it appears or when the buff runs out (couldn't pinpoint), these errors are thrown:
Code:

user:/AddOns/AuraMastery/Functions.lua:36: attempt to index a nil value
stack traceback:
        user:/AddOns/AuraMastery/Functions.lua:36: in function 'AuraMastery.OnEffectEvent'

user:/AddOns/AuraMastery/Functions.lua:107: attempt to index a nil value
stack traceback:
        user:/AddOns/AuraMastery/Functions.lua:107: in function 'AuraMastery:CheckCondition'
        user:/AddOns/AuraMastery/Functions.lua:94: in function 'AuraMastery:TriggerAura'
        user:/AddOns/AuraMastery/Functions.lua:65: in function 'AuraMastery:UpdateAura'
        user:/AddOns/AuraMastery/Functions.lua:60: in function 'AuraMastery.updateHandler'

Edit: I forgot to say that the aura box does not update after the errors are thrown and is just stuck there.

Baertram 05/19/16 01:03 AM

Maybe I get it wrong or you think too complicated :D
Just overwrite the icon in the svars if the user manually changes it (if there already was determined or set an icon before).

Letho 05/19/16 01:23 AM

Quote:

Originally Posted by Randactyl (Post 27003)
using 0.2a

okay, so I have this set up:



Firstly, the aura box is not displayed on UI load as I would expect it to be under the specified conditions (no, i was not affected by the buff at the time of UI load)

I probably failed to describe that functionality. If there are no effects up on you, the appropriate timeLeft-variable is not 0, but not defined to prevent it from updating and costing ressources. If you want an icon to bedisplayed if a certain effect is NOT up, the conditions must be set to always display (ABILITY_ID > 0) and then the logic must be inverted (INVERT=true).
Based on your specified conditions the icon should show up at timeleft < 1 and vanish once it runs out.
Quote:

Originally Posted by Randactyl (Post 27003)
Secondly, the box appears as it is supposed to if I cast Igneous Weapons after the UI load and the time remaining reaches the specified value. When it appears or when the buff runs out (couldn't pinpoint), these errors are thrown:
Code:

user:/AddOns/AuraMastery/Functions.lua:36: attempt to index a nil value
stack traceback:
        user:/AddOns/AuraMastery/Functions.lua:36: in function 'AuraMastery.OnEffectEvent'

user:/AddOns/AuraMastery/Functions.lua:107: attempt to index a nil value
stack traceback:
        user:/AddOns/AuraMastery/Functions.lua:107: in function 'AuraMastery:CheckCondition'
        user:/AddOns/AuraMastery/Functions.lua:94: in function 'AuraMastery:TriggerAura'
        user:/AddOns/AuraMastery/Functions.lua:65: in function 'AuraMastery:UpdateAura'
        user:/AddOns/AuraMastery/Functions.lua:60: in function 'AuraMastery.updateHandler'

Edit: I forgot to say that the aura box does not update after the errors are thrown and is just stuck there.

I could reproduce the error and i am just debugging it, thx for reporting!

Letho 05/19/16 02:01 AM

Problem should be solved, now. The bug was caused by abilities, that provided buffs to not only the player, but also allies.

Quote:

Originally Posted by Baertram (Post 27004)
Maybe I get it wrong or you think too complicated :D
Just overwrite the icon in the svars if the user manually changes it (if there already was determined or set an icon before).

That's exactly the way it is currently done :)

esportman 05/19/16 08:08 AM

I will give it a try, thanks

Randactyl 05/19/16 11:30 PM

Quote:

Originally Posted by Letho (Post 27006)
Problem should be solved, now. The bug was caused by abilities, that provided buffs to not only the player, but also allies.

Thanks! Works like a charm

Edit: And thanks for the logic clarification. I was being a nard and didn't think it through when I was setting it up amidst Mantikora wipes.

Lacordeweb 04/11/17 10:01 AM

Quote:

Originally Posted by Letho (Post 26987)
Hi guys,


Usage:


/am menu << Open the config menu to set up your auras

/am unlock << Make all auras movable (pixel precise positioning can be done in the menu)

/am unlock << self explanatory


Any feedback, comments, bug reports or tips how to do better would be HIGHLY appreciated!

Cheers,
Letho

Thanks for your tuto (sorry for my english i'm a french guy).


All times are GMT -6. The time now is 08:02 PM.

vBulletin © 2020, Jelsoft Enterprises Ltd
© 2014 - 2020 MMOUI