-   Lua/XML Help (
-   -   A few asks for the addon community (

HSBS_User 10/16/21 09:12 PM

A few asks for the addon community
I have three specific changes I'd like to find a way to implement:

1.) No keybind text/move keybind text.
Just what it says, looking for a way to hide the bindings and scoot the ability bars down flush with the bottom of the screen. I know fancy action bar has this functionality but from what I gather it *always* displays both bars, I like the option of hiding the second bar.
2.) Translucent map upon char movement.
In Cyrodiil for example, I often check the map while riding, after countless deaths by falling/ incurring the wrath of goblins/ bouldering incidents- I'd kill for a way to make the map 50-80% opacity *while* moving. Still totally new to lua and eso's triggers etc... so I'm unsure if there is even such a function like: ischaractermoving or similar
3.) Color self differently in guild roster.
Having removed myself from guild(s) by attempting to teleport to another player in the same zone- said player being *me* and the resultant dropdown menu providing the option "leave guild" I need a way to change the color of my own name in the guild roster. This would resolve any unintended guild departures.

Lastly I have a more general question about better font clarity in eso. From what I've been told there are pretty slim options when it comes to modifying ingame font aesthetics. That being said, has anyone met with success getting crisp outlines on their fonts? Problematically, when looting any number of items with a bright white(ish) icon such as cotton the relevant item count text is nearly lost against the white backdrop of the icon for example. In other addons I've opted for an outline or thick shadow. However, in eso the native outline seems to add quite a bit of spread to the length of text. So- the goal would be to have a fixed width outline, even a monochrome like effect. To what degree is this possible in eso? Are there any resources that explain how fonts work in eso?

Baertram 10/17/21 06:19 AM

As your questions are related to lua coding, and not addons that fullfill your requests, I have moved the thread to the lua/XML forum.

The controls showing the bottom keybinds are called the keybind strip:
The class used to create it is named ZO_KeybindStrip and is assigned to an object KEYBIND_STRIP here:

If fancy action bars provides this you should learn the code used there and chaneg it/adopt it to not always show both bars, leave it just like vanilla code does and only change they keybind strip at the bottom. You would need to find out which code relates to the keybind strip. So search in the code if you are able to see/find it KEYBIND_STRIP or ZO_KeybindStrip changes and try to understand what it does, and how it does it. Come back with more detailed questions if you get stuck there, and we will try to help.

The given API functions you could search for "does this IsCharMoving exist" can be found here:
Check the linked API documentation txt files and download the one of the current APIVersion at the live server (or PTS if you code there).
btw: most functions are not char or account related but "unit" related. A unit is either you, a group member or an enemy NPC etc.
So DoesUni* or IsUnit* functions often apply, where "player" is the unitTag for your own character and groupN (where N is a nuber) is either you or a group member e.g.
And there also exists the function
* IsPlayerMoving()
** _Returns:_ *bool* _moving_

But I think there is no event given which fires as you start to move. You'd have to register an update function checking every n seconds if you are moving, once you have opened the map, and unregister again once the map is closed.
You can use EVENT_MANAGER:RegisterForUpdate for this e.g. See the wiki:
If you want to know if the map is shown you could either use the map's scene "worldMap" (you can get the scene's pointer via SCENE_MANAGER:GetScene("worldMap") ) (see function ZO_WorldMap_ShowWorldMap as reference in esoui/ingame/map/worldmap.lua) and register a callback to the StateChanged like described here:
Or the fragment WORLD_MAP_FRAGMENT e.g. with the same StateChange callback:

Maybe LibGuildRoster can help here, not sure. Have a look over there.
Or check the guild roster esoui lua code at github:
Search for something like "isLocalPlayer" or "player" or "own" or similar, maybe it is described where the own row is build.
I think it was in the data table of each guild roster row, and the entry was something like "isLocalPlayer"
Edit - Found it:
So the BuodMasterList function will create the list of the object GUILD_ROSTER_MANAGER
You might be able to hook into this, or the row function creating the output visual list of that row then somehow:
ZO_KeyboardGuildRosterManager:SetupRow(control, data)
You'd need to hook into:
GUILD_ROSTER_KEYBOARD, function SetupRow(control, data)
SecurePostHook(GUILD_ROSTER_KEYBOARD, "SetupRow", function(control, data)
if data.isLocalPlayer then
--change control:SetColor or similar to your desired colord
--You can inspect the control via merTorchbug and zgoo if you make it global like myAddon = {} myAddon._rowControl= control

Fonts in ESO are explained here (but not all aspects you have asked for, I guess. I never used more than explained here, maybe someone else can answer your question about the monochrome font style etc.):

All times are GMT -6. The time now is 09:46 AM.

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