ESOUI - View Single Post - A few asks for the addon community
View Single Post
10/17/21, 06:19 AM   #2
Super Moderator
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,053
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: https://github.com/esoui/esoui/blob/...ybindstrip.lua
The class used to create it is named ZO_KeybindStrip and is assigned to an object KEYBIND_STRIP here: https://github.com/esoui/esoui/blob/...dstrip.lua#L60

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: https://wiki.esoui.com/Running_LUA-C...isterForUpdate
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: https://wiki.esoui.com/Scene_Manager:_On_scene_change
Or the fragment WORLD_MAP_FRAGMENT e.g. with the same StateChange callback: https://wiki.esoui.com/Fragments_in_...t_state_change

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: https://github.com/esoui/esoui/blob/...hared.lua#L185
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.):

Last edited by Baertram : 10/17/21 at 06:42 AM.
  Reply With Quote