Download
(248 Kb)
Download
Updated: 06/23/23 05:22 PM
Pictures
File Info
Compatibility:
Necrom (9.0.0)
Updated:06/23/23 05:22 PM
Created:11/09/20 03:08 AM
Monthly downloads:5,664
Total downloads:248,187
Favorites:169
MD5:
Categories:Group, Guild & Friends, Raid Mods
OdySupportIcons - Group Role Icons & More  Popular! (More than 5000 hits)
Version: 1.10.0
by: Odylon, ExoY
With Version 1.10 an Workaround for old instances of LibAddonMenu-2.0 (LAM) was removed from OSI, as it conflicted with future development of LAM.
If you experience problems since the last update, e.g. screen gets blurry or lua errors mentioning ZO_Screen manager, it means that one or more of your addons have old versions of LAM embedded.

You can find information on how to fix it in the esoui forum or in the comment section here.



@AddonDevelopers: Some functionalities of this addon will be moved to a library within the next month. Check out LibFloatingIcons for more information.


Originally developed as private addon back when hiding group members with the Crown Crate trick became a thing and having some visual indicators for support players in the group helped me a lot to identify their position - hence the name SupportIcons. Since then I've added options to assign custom icons to individual players and unique icons for friends and members of my raidgroups.

Use the /osi command to open the addon settings, settings are saved account-wide. Don't forget to assign a keybinding in your controls settings to quickly toggle icon visibility.



DEPENDENCIES

LibAddonMenu-2.0

Odylon is currently not actively playing ESO. I, ExoY, will continue to maintain and develop the addon.

LATEST CHANGES

Version 1.7.0 (2022/06/16)
  • API bump to High Isle Chapter
  • added new companions ember and isolde (thanks @Anceane and @Kyzeragon )
  • added armory and deconstructor (thanks @Kyzeragon )



GENERAL SETTINGS
  • Update Interval: milliseconds, lower numbers lead to higher accuracy but require more performance
  • Icon Size: width/height in pixels, if scaling is turned on, chosen size will apply around 10m in front of the camera
  • Scaling: turn off if you want icons to have a fixed size
  • Vertical Offset: distance from ground to icon bottom in meters
  • Opacity: regulate the transparency of the icons
  • Fade out close to Camera: use this setting to avoid icons close to the camera blocking your view
  • Distance to start fading: distance from camera to icon in meters at which fading out starts


GROUP ICONS

Choose the default icons applied to group leader, tanks, healers, damage dealers, battleground team members and dead players.
  • Show 3D Icon: toggle if 3d icons for a certain support role should be visible
  • Prioritize over custom Icons: toggle if icons for a certain support role should always be visible
  • Icon Color: adjust the color of the icon
  • Texture: choose from a variety of icons provided by the game



ALLY ICONS

Choose the default icons applied to your companion, banker, merchant and fence. Options for allies of group members will be implemented in a future update.
  • Show 3D Icon: toggle if 3d icons for a certain ally should be visible
  • Icon Color: adjust the color of the icon
  • Texture: choose from a variety of icons provided by the game



CUSTOM ICONS

To assign custom icons to individual players, right-click on that person in your group window, friends list or guild roster and select Assign Custom Icon. Right-click again to Change Custom Icon or Remove Custom Icon.
  • Show custom 3D Icons: toggle if custom 3d icons should be visible
  • Remember assigned Icons: toggle if assigned icons for indiviual players should be saved
  • Clear Group: removes all assigned icons for your current group members
  • Empty Cache: removes all previously cached icons for individual players





UNIQUE ICONS

Unique icons are automatically assigned to the respective player and can not be removed. If you don't want to see them, simply turn off the option to show them.

Requires Hodor Reflexes to be active if you want to show the icons and animations provided by this addon.
  • Show unique 3D Icons: toggle if unique 3d icons should be visible
  • Use Hodor Reflexes Icons: allows the use of icons provided by Hodor Reflexes
  • Use Hodor Reflexes Animations: allows the use of animations provided by Hodor Reflexes
  • Prioritize Hodor Reflexes over unique Icons: toggle if icons and animations provided by Hodor Reflexes should be used instead of unique icons


Screenshot by @RHOEncador showing off the unique icons he created for his raidgroup based on their discord avatars.
He reduced the icon size and vertical offset and added some transparency in the addon settings.




RAID ICONS BETA

Experimental feature allowing group leaders to force raid specific icons on group members. Hodor Reflexes is required to share the icon information amongst the group.

Make sure that your group is ready and everbody is online since icon information is only shared when an icon gets assigned. Once a group member disconnects or reloads the UI, raid icons are lost for this person. Group leaders can share already assigned icons again by clicking on Change Raid Icon and pressing the Save button.
  • Show Raid Icons assigned by Group Lead: toggle if icons assigned by group leader should be accepted or ignored
  • Activate Context Menu for Group Lead: activate this option to show the respective context menu for group leaders



WORLD MAP

Shows your group members icons on the World Map as well as on Votan's Minimap and Minimap by Fyrakin.
  • Show custom Icons: toggle if custom icons for group members should be visible
  • Show unique Icons: toggle if unique icons for group members should be visible
  • Show Icons for dead Players: activate this option to show icons for dead players
  • Show Role Icons: activate this option to show group role icons
  • Icon Size: icons size in pixels



GROUP WINDOW
  • Show custom Icons: toggle if custom icons for group members should be visible
  • Show unique Icons: toggle if unique icons for group members should be visible
  • Show Icons for dead Players: activate this option to show icons for dead players
  • Show Role Icons: activate this option to show group role icons
  • Show Crown Overlay: show a crown overlay for the group leader



CHAT WINDOW

Modifies incoming Chat Messages and adds icons to Display Names. Also shows icons for Character Names but the respective player needs to be on your Friends List, in your Group or one of your Guilds. Any changes to settings will only apply to upcoming Chat Messages.
  • Show custom Icons: toggle if custom icons should be visible
  • Show unique Icons: toggle if unique icons should be visible
  • Icon Size: icons size in pixels, prints test message after changing the value



FRIENDS LIST & GUILD ROSTER
  • Show custom Icons: toggle if custom icons should be visible
  • Show unique Icons: toggle if unique icons should be visible
  • Show Player Status Overlay: show player online status as overlay



MECHANIC ICONS DEVELOPER INFO

The addon provides a couple of exposed functions to allow other addon developers to assign their own specific icons on players to alert about certain raid mechanics. These icons are only visible while the player is in combat and will reset automatically once combat ends. You can check out Qcell's Rockgrove Helper, ExoYs Support Icon Extension or CrutchAlerts which make use of this feature.

Lua Code:
  1. function OSI.SetMechanicIconForUnit(
  2.     displayName,    -- display name of the affected player
  3.     texture,        -- icon texture path
  4.     size,           -- optional icon size
  5.     color,          -- optional icon color {r,g,b}
  6.     offset,         -- optional icon offset in meters
  7.     callback        -- optional callback function
  8. )
  9. function OSI.RemoveMechanicIconForUnit(
  10.     displayName     -- display name of the affected player
  11. )

Simple addon example:
Lua Code:
  1. local ADDON_NAME  = "MyAddonName"
  2. local MY_TEXTURE  = "myaddonname/myiconpath/myicontexture.dds"
  3. local MECHANIC_ID = 12345
  4. EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName )
  5.     if addonName ~= ADDON_NAME then return end
  6.     EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED )
  7.     EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_EFFECT_CHANGED, function( _, changeType, _, _, unitTag )
  8.         -- check if OdySupportIcons is active and the affected unit is a player
  9.         if OSI and OSI.SetMechanicIconForUnit and IsUnitPlayer( unitTag ) then
  10.             -- retrieve the displayname of the affected player
  11.             local displayName = GetUnitDisplayName( unitTag )
  12.             -- if the player gained the mechanic effect...
  13.             if changeType == EFFECT_RESULT_GAINED then
  14.                 -- assign your icon to the affected player and make it bigger than other icons
  15.                 OSI.SetMechanicIconForUnit(
  16.                     displayName,             -- display name of the affected player
  17.                     MY_TEXTURE,              -- icon texture path
  18.                     OSI.GetIconSize() * 1.5, -- optional icon size
  19.                     { 1, 1, 1 },             -- optional icon color {r,g,b}
  20.                     0,                       -- optional icon offset in meters
  21.                     function( data )         -- optional callback function
  22.                         -- simple bounce animation along the y-axis
  23.                         data.offset = 0.5 + 0.5 * math.sin( GetGameTimeMilliseconds() / 1000 * 2 )
  24.                         -- the data object passed to the callback function contains:
  25.                         -- displayName, unitTag, texture, size, color, offset
  26.                     end
  27.                 )
  28.             -- if the player lost the mechanic effect...
  29.             elseif changeType == EFFECT_RESULT_FADED then
  30.                 -- remove your icon from the formerly affected player
  31.                 OSI.RemoveMechanicIconForUnit( displayName )
  32.             end
  33.         end
  34.     end )
  35.     EVENT_MANAGER:AddFilterForEvent( ADDON_NAME, EVENT_EFFECT_CHANGED, REGISTER_FILTER_ABILITY_ID, MECHANIC_ID )
  36.     EVENT_MANAGER:AddFilterForEvent( ADDON_NAME, EVENT_EFFECT_CHANGED, REGISTER_FILTER_UNIT_TAG_PREFIX, "group" )
  37. end )



WORLD POSITION ICONS DEVELOPER INFO

The addon provides a couple of exposed functions to allow other addon developers to place icons in the world. You can check out CrutchAlerts which makes use of this feature.

Lua Code:
  1. function OSI.CreatePositionIcon(
  2.     x, y, z,    -- world coordinates
  3.     texture,    -- icon texture path
  4.     size,       -- optional icon size
  5.     color,      -- optional icon color {r,g,b}
  6.     offset,     -- optional icon offset in meters
  7.     callback    -- optional callback function
  8. )
  9. function OSI.DiscardPositionIcon(
  10.     icon        -- position icon object
  11. )

You can use this chat command to print your current world position:
Lua Code:
  1. /script OSI.PrintMyPosition()

Simple addon example:
Lua Code:
  1. local ADDON_NAME = "MyAddonName"
  2. local MY_TEXTURE = "myaddonname/myiconpath/myicontexture.dds"
  3. local MY_ICON    = nil
  4. EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName )
  5.     if addonName ~= ADDON_NAME then return end
  6.     EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED )
  7.     EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_BOSSES_CHANGED, function()
  8.         -- check is OdySupportIcons is active and supports world position icons
  9.         if OSI and OSI.CreatePositionIcon then
  10.             -- retrieve name of boss
  11.             local boss = GetUnitName( "boss1" )
  12.             -- if we are in Sharpfangs (Deshaan) lair and...
  13.             if boss and boss == "Sharpfang" then
  14.                 -- if no icon has been created yet...
  15.                 if not MY_ICON then
  16.                     -- create an icon 2.5m above the stone formation and make it bigger than other icons
  17.                     MY_ICON = OSI.CreatePositionIcon(
  18.                         274367, 11022, 213871,   -- world coordinates
  19.                         MY_TEXTURE,              -- icon texture path
  20.                         OSI.GetIconSize() * 1.5, -- optional icon size
  21.                         { 1, 1, 1 },             -- optional icon color {r,g,b}
  22.                         2.5,                     -- optional icon offset in meters
  23.                         function( data )         -- optional callback function
  24.                             -- simple bounce animation along the y-axis
  25.                             data.offset = 2.5 + math.sin( GetGameTimeMilliseconds() / 1000 * 2 )
  26.                             -- the data object passed to the callback function contains:
  27.                             -- texture, size, color, offset
  28.                         end
  29.                     )
  30.                 end
  31.             -- if we are somewhere else or Sharpfang is not around and...
  32.             else
  33.                 -- if an icon has been created before...
  34.                 if MY_ICON then
  35.                     -- discard the icon
  36.                     OSI.DiscardPositionIcon( MY_ICON )
  37.                     MY_ICON = nil
  38.                 end
  39.             end
  40.         end
  41.     end )
  42. end )



CUSTOM ICON PACKS DEVELOPER INFO

The addon provides an exposed function to allow other addon developers to provide custom icon packs.

Lua Code:
  1. function OSI.AddCustomIconPack( icons )

Simple addon example:
Lua Code:
  1. local ADDON_NAME  = "MyAddonName"
  2. local MY_TEXTURES = {
  3.     "myaddonname/myiconpath/myicontexture-1.dds",
  4.     "myaddonname/myiconpath/myicontexture-2.dds",
  5.     "myaddonname/myiconpath/myicontexture-3.dds",
  6. }
  7. EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName )
  8.     if addonName ~= ADDON_NAME then return end
  9.     EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED )
  10.     -- check if OdySupportIcons is active and supports custom icon packs
  11.     if OSI and OSI.AddCustomIconPack then
  12.         -- add your list of icons
  13.         OSI.AddCustomIconPack( MY_TEXTURES )
  14.     end
  15. end )



UNIQUE ICON PACKS DEVELOPER INFO

The addon provides an exposed function to allow other addon developers to provide unique icon packs.

Lua Code:
  1. function OSI.AddUniqueIconPack( icons )

Simple addon example:
Lua Code:
  1. local ADDON_NAME  = "MyAddonName"
  2. local MY_TEXTURES = {
  3.     ["@SomePlayer"]    = "myaddonname/myiconpath/myiconforsomeplayer.dds",
  4.     ["@AnotherPlayer"] = "myaddonname/myiconpath/myiconforanotherplayer.dds",
  5. }
  6. EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName )
  7.     if addonName ~= ADDON_NAME then return end
  8.     EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED )
  9.     -- check if OdySupportIcons is active and supports unique icon packs
  10.     if OSI and OSI.AddUniqueIconPack then
  11.         -- add your list of icons
  12.         OSI.AddUniqueIconPack( MY_TEXTURES )
  13.     end
  14. end )



CREDITS

Code for adding context menus is based on Drummerx04's and code65536's LGM - Lilith's Group Manager.

Halloween and superhero themed custom icons were created by hopstarter and are free for personal and non-commercial use.

Special thanks to DmExtra for creating the raid icons and to RaZor78 for donating gold.

Thanks to all my friends and raidbuddies who helped with testing this addon.

Version 1.10.0 (2023/06/24)
  • API bump to U38 (Necrom)
  • Added Necrom Companions
  • Removed SevenSin's Icon (his own request)
  • Removed LAM workaround
  • Changing handling of Gilandil to support more languages (at least german and english)
[\SIZE]


Version 1.9.0 (2023/04/07)
  • API bump to U37
  • added Zuqoth, Armory Advisor and Aderene, Fargrave Dregs Dealer


Version 1.8.0 (2023/02/05)
  • API bump to Firesong DLC
  • added option to display your own unique icon above your head (you need to be grouped and unique icons need to be activated for it to work)
  • rearranged ally's in addon menu (helper first, then companion in order of release)
  • fixed name mix up of companion names in addon menu
Version 1.7.0 (2022/06/16)
  • API bump to High Isle Chapter
  • added new companions ember and isolde (thanks @Anceane and @Kyzeragon )
  • added armory and deconstructor (thanks @Kyzeragon )
Version 1.6.5 (2021/07/13)
  • Fixed custom assigned icons not beeing saved
Version 1.6.4 (2021/07/05)
  • Fixed rare bug with companion id's
  • Added support for new crow assitents
  • Added color to icon preview in options menu
  • Added callbacks for world position icons
  • Added callbacks for mechanic icons
Version 1.6.3 (2021/06/29)
  • Added options to use different icons for Bastian and Mirri
  • Added options to use different colors for players beeing resurrected
  • Added exposed function to retrieve icon size defined by player
  • Added exposed function to create unique icon packs
  • Added exposed function to place icons in the world
Version 1.6.2 (2021/06/05)
  • Added options to show icons for your allies
  • Added exposed function to create custom icon packs
Version 1.6.1 (2021/05/22)
  • Fixed a problem with iconpicker component
  • Adjusted API version for the upcoming Blackwood DLC
  • Added options to allow disabling 3d and 2d icons separately
  • Added exposed functions to adjust/reset mechanic icon size
Version 1.6.0 (2021/05/13)
  • Fixed icons in battlegrounds not showing sometimes
  • Adjusted icon positioning to use bottom anchor
  • Added option to show Hodor Reflexes icons and animations
  • Added option to show icons for dead players, damage dealers and battleground team mates
  • Added option to fade out icons close to the camera
  • Added option to prioritize role icons over custom icons
  • Added option to customize size for leader icon
  • Added option to show icons in chat window
  • Added option to show icons on world map
  • Added options for icons in group window, friends list and guild roster
  • Added more custom icons
  • Added more unique icons
  • Removed color option for custom icons
  • Removed custom icons from role options
Version 1.5.6 (2021/04/10)
  • Fixed icon-window staying visible after closing friends-list or guild-roster
  • Possibly fixed LUA errors when using addons which include old versions of LibAddonMenu
  • Added more unique icons
Version 1.5.5 (2021/03/18)
  • Adjusted API version for Flames of Ambition DLC
  • Changed priorization and layering of different icon types
  • Unique and custom icons are now also shown in friends list and guild roster
  • Added experimental feature allowing raidlead to force icons on groupmembers
  • Added more unique icons
Version 1.5.4 (2021/01/03)
  • Changed dependency to require at least r31 of LibAddonMenu
  • Added more unique icons
Version 1.5.3 (2020/11/12)
  • Removed /fixcam slash command
  • Switched to raw unit positions to fix incorrectly placed icons in areas like Imperial City, Kyne's Aegis and Tempest Island
Version 1.5.2 (2020/11/09)
  • Adjusted API version for Markarth DLC
Version 1.5.1 (2020/11/09)
  • Fixed issue with multiple context menu entries
  • Removed LibCustomMenu dependency
Version 1.5.0 (2020/11/09)
  • Added more unique icons
  • Added more custom icons
  • Improved drawing order
  • Public release
Archived Files (15)
File Name
Version
Size
Uploader
Date
1.8.0
247kB
ExoY
02/05/23 03:48 AM
1.7.0
247kB
ExoY
06/15/22 05:34 PM
1.6.5
248kB
ExoY
07/13/21 12:45 PM
1.6.4
248kB
Odylon
07/05/21 12:33 PM
1.6.3
247kB
Odylon
06/29/21 12:19 PM
1.6.2
246kB
Odylon
06/05/21 11:09 AM
1.6.1
245kB
Odylon
05/22/21 09:51 AM
1.6.0
244kB
Odylon
05/13/21 10:20 AM
1.5.6
336kB
Odylon
04/10/21 01:02 AM
1.5.5
312kB
Odylon
03/18/21 03:36 AM
1.5.4
262kB
Odylon
01/03/21 04:06 AM
1.5.3
245kB
Odylon
11/12/20 01:45 PM
1.5.2
245kB
Odylon
11/09/20 11:34 AM
1.5.1
245kB
Odylon
11/09/20 10:55 AM
1.5.0
245kB
11/09/20 03:08 AM


Post A Reply Comment Options
Unread 11/09/20, 08:06 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4964
File comments: 6032
Uploads: 78
In combination with certain addons (eg. Lilith's Group Manager) which add options to the context menus in the group window, the context menu entries might appear several times - functionality is not compromised by it though.
Sounds like there is missing a "ClearMenu()" command somewhere in your's or the other addon's code.
ClearMenu() will clear all entries in the menus/contextmenus and should be called at the primary call t o the contextemnu invoker function (e.g. a OnMouseUp hook etc.).

If these other addons do not use LibCustomMenu it makes it harder to be compatible and they should maybe change to this lib as well and use AddCustomMenuItem instead of AddMenuItem.
Last edited by Baertram : 11/09/20 at 08:07 AM.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 11:02 AM  
Odylon
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 17
Uploads: 5
Originally Posted by Baertram
Sounds like there is missing a "ClearMenu()" command somewhere in your's or the other addon's code.
Thanks for the tip Baertram, I've tried it with ClearMenu/ShowMenu and while my context menu entries wouldn't show up multiple times, other entries were not showing up at all.

Instead I've changed the code similar to what is done in LGM overwriting the OnMouseUp function for the GROUP_LIST. This way it works fine in combination with LGM and hopefully any other addon which uses context menu entries.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 06:44 PM  
Anceane
 
Anceane's Avatar
AddOn Author - Click to view AddOns

Forum posts: 306
File comments: 1018
Uploads: 1
would you mind i change some icons for my personal use ?
Report comment to moderator  
Reply With Quote
Unread 11/10/20, 08:44 AM  
Odylon
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 17
Uploads: 5
Originally Posted by Anceane
would you mind i change some icons for my personal use ?
Sure, go for it. Since the addon saves/restores assigned icons by their filename, the easiest way would be to use some of the existing filenames for your own icons. This way, everytime the addon updates, you only have to copy your icons back into the icon folder.
Report comment to moderator  
Reply With Quote
Unread 11/12/20, 03:37 PM  
Anceane
 
Anceane's Avatar
AddOn Author - Click to view AddOns

Forum posts: 306
File comments: 1018
Uploads: 1
Originally Posted by Odylon
Originally Posted by Anceane
would you mind i change some icons for my personal use ?
Sure, go for it. Since the addon saves/restores assigned icons by their filename, the easiest way would be to use some of the existing filenames for your own icons. This way, everytime the addon updates, you only have to copy your icons back into the icon folder.
Thank you!
Report comment to moderator  
Reply With Quote
Unread 05/14/21, 04:40 AM  
Kelsier

Forum posts: 0
File comments: 15
Uploads: 0
Hiya,

just discovered this great addon but seem to have some trouble getting it to work properly.
On startup it already throws me the following LUA error, I've installed the newest version of the LibAddonMenu-2.0 dependency.

Lua Code:
  1. user:/AddOns/OdySupportIcons/FixLibAddonMenu.lua:32: function expected instead of nil
  2. stack traceback:
  3. user:/AddOns/OdySupportIcons/FixLibAddonMenu.lua:32: in function 'OSI.FixLibAddonMenu'
  4. |caaaaaa<Locals> LAM = [table:1]{panelId = 101}, fixOnMouseEnter = T </Locals>|r
  5. user:/AddOns/OdySupportIcons/OdySupportIcons.lua:597: in function 'OSI.OnAddonLoaded'
  6. |caaaaaa<Locals> event = 65536, addonName = "OdySupportIcons" </Locals>|r

After dismissing the error the game resumes normally, however, once opening the friends list, or any other menu where custom icons are used, another LUA error appears:

Lua Code:
  1. user:/AddOns/OdySupportIcons/OdySupportIcons.lua:266: function expected instead of nil
  2. stack traceback:
  3. user:/AddOns/OdySupportIcons/OdySupportIcons.lua:266: in function 'sceneCheck'
  4. EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
  5. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:276: in function 'ZO_Scene:SetState'
  6. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:213: in function 'ZO_SceneManager_Base:ShowScene'
  7. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:291: in function 'ZO_SceneManager_Leader:ShowScene'
  8. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:374: in function 'ZO_SceneManager_Leader:OnSceneStateHidden'
  9. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:287: in function 'ZO_SceneManager_Base:OnSceneStateChange'
  10. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:321: in function 'ZO_SceneManager_Leader:OnSceneStateChange'
  11. EsoUI/Ingame/Scenes/IngameSceneManager.lua:372: in function 'ZO_IngameSceneManager:OnSceneStateChange'
  12. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:277: in function 'ZO_Scene:SetState'
  13. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:426: in function 'ZO_Scene:OnTransitionComplete'
  14. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:421: in function 'ZO_Scene:DetermineIfTransitionIsComplete'
  15. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:333: in function 'ZO_Scene:RefreshFragments'
  16. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:286: in function 'ZO_Scene:SetState'
  17. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:221: in function 'ZO_SceneManager_Base:HideScene'
  18. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:295: in function 'ZO_SceneManager_Leader:HideScene'
  19. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:259: in function 'ZO_SceneManager_Leader:Show'
  20. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:758: in function 'MainMenu_Keyboard:Update'
  21. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:766: in function 'MainMenu_Keyboard:ShowScene'
  22. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:775: in function 'MainMenu_Keyboard:ToggleScene'
  23. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:881: in function 'ZO_MainMenuManager_ToggleCategoryInternal'
  24. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:902: in function 'MainMenu_Keyboard:ToggleCategory'
  25. :1: in function '(main chunk)'

Here's the advanced version in case it's of any help:


Lua Code:
  1. user:/AddOns/OdySupportIcons/OdySupportIcons.lua:266: function expected instead of nil
  2. stack traceback:
  3. user:/AddOns/OdySupportIcons/OdySupportIcons.lua:266: in function 'sceneCheck'
  4. |caaaaaa<Locals> showing = "hidden" </Locals>|r
  5. EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
  6. |caaaaaa<Locals> self = [table:1]{state = "showing", name = "groupMenuKeyboard", fireCallbackDepth = 1, disallowEvaluateTransitionCompleteCount = 1, restoresHUDSceneToggleUIMode = F, wasRequestedToShowInGamepadPreferredMode = F, wasShownInGamepadPreferredMode = F, restoresHUDSceneToggleGameMenu = F}, eventName = "StateChange", registry = [table:2]{}, callbackInfoIndex = 7, callbackInfo = [table:3]{3 = F}, callback = user:/AddOns/OdySupportIcons/OdySupportIcons.lua:264, deleted = F </Locals>|r
  7. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:276: in function 'ZO_Scene:SetState'
  8. |caaaaaa<Locals> self = [table:1], newState = "showing", oldState = "hidden", name = "groupMenuKeyboard" </Locals>|r
  9. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:213: in function 'ZO_SceneManager_Base:ShowScene'
  10. |caaaaaa<Locals> self = [table:4]{fireCallbackDepth = 0, hudUISceneName = "hudui", remoteSceneSequenceNumber = 15, numRemoteTopLevelShown = 0, initialized = F, hudUISceneHidesAutomatically = T, hudSceneName = "hud", exitUIModeOnChatFocusLost = F, numTopLevelShown = 0}, scene = [table:1], sequenceNumber = 15 </Locals>|r
  11. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:291: in function 'ZO_SceneManager_Leader:ShowScene'
  12. |caaaaaa<Locals> self = [table:4], scene = [table:1] </Locals>|r
  13. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:374: in function 'ZO_SceneManager_Leader:OnSceneStateHidden'
  14. |caaaaaa<Locals> self = [table:4], scene = [table:5]{state = "hidden", name = "hud", fireCallbackDepth = 0, disallowEvaluateTransitionCompleteCount = 1, restoresHUDSceneToggleUIMode = F, wasRequestedToShowInGamepadPreferredMode = F, wasShownInGamepadPreferredMode = F, restoresHUDSceneToggleGameMenu = F}, currentNextScene = [table:1] </Locals>|r
  15. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:287: in function 'ZO_SceneManager_Base:OnSceneStateChange'
  16. |caaaaaa<Locals> self = [table:4], scene = [table:5], oldState = "hiding", newState = "hidden" </Locals>|r
  17. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:321: in function 'ZO_SceneManager_Leader:OnSceneStateChange'
  18. |caaaaaa<Locals> self = [table:4], scene = [table:5], oldState = "hiding", newState = "hidden" </Locals>|r
  19. EsoUI/Ingame/Scenes/IngameSceneManager.lua:372: in function 'ZO_IngameSceneManager:OnSceneStateChange'
  20. |caaaaaa<Locals> self = [table:4], scene = [table:5], oldState = "hiding", newState = "hidden" </Locals>|r
  21. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:277: in function 'ZO_Scene:SetState'
  22. |caaaaaa<Locals> self = [table:5], newState = "hidden", oldState = "hiding", name = "hud" </Locals>|r
  23. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:426: in function 'ZO_Scene:OnTransitionComplete'
  24. |caaaaaa<Locals> self = [table:5], nextState = "hidden" </Locals>|r
  25. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:421: in function 'ZO_Scene:DetermineIfTransitionIsComplete'
  26. |caaaaaa<Locals> self = [table:5], nextState = "hidden" </Locals>|r
  27. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:333: in function 'ZO_Scene:RefreshFragments'
  28. |caaaaaa<Locals> self = [table:5], asAResultOfSceneStateChange = T </Locals>|r
  29. EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:286: in function 'ZO_Scene:SetState'
  30. |caaaaaa<Locals> self = [table:5], newState = "hiding", oldState = "shown", name = "hud", AS_A_RESULT_OF_SCENE_STATE_CHANGE = T </Locals>|r
  31. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:221: in function 'ZO_SceneManager_Base:HideScene'
  32. |caaaaaa<Locals> self = [table:4], scene = [table:5], sequenceNumber = 14 </Locals>|r
  33. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:295: in function 'ZO_SceneManager_Leader:HideScene'
  34. |caaaaaa<Locals> self = [table:4], scene = [table:5] </Locals>|r
  35. EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:259: in function 'ZO_SceneManager_Leader:Show'
  36. |caaaaaa<Locals> self = [table:4], sceneName = "groupMenuKeyboard", nextSceneClearsSceneStack = T, numScenesNextScenePops = 0, currentScene = [table:5], nextScene = [table:1] </Locals>|r
  37. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:758: in function 'MainMenu_Keyboard:Update'
  38. |caaaaaa<Locals> self = [table:6]{lastCategory = 10, ignoreCallbacks = F}, category = 10, sceneName = "groupMenuKeyboard" </Locals>|r
  39. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:766: in function 'MainMenu_Keyboard:ShowScene'
  40. |caaaaaa<Locals> self = [table:6], sceneName = "groupMenuKeyboard", sceneInfo = [table:7]{sceneName = "groupMenuKeyboard", category = 10} </Locals>|r
  41. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:775: in function 'MainMenu_Keyboard:ToggleScene'
  42. |caaaaaa<Locals> self = [table:6], sceneName = "groupMenuKeyboard" </Locals>|r
  43. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:881: in function 'ZO_MainMenuManager_ToggleCategoryInternal'
  44. |caaaaaa<Locals> self = [table:6], category = 10, categoryLayoutInfo = [table:8]{normal = "EsoUI/Art/MainMenu/menuBar_gro...", descriptor = 10, categoryName = 6659, disabled = "EsoUI/Art/MainMenu/menuBar_gro...", pressed = "EsoUI/Art/MainMenu/menuBar_gro...", binding = "TOGGLE_GROUP", highlight = "EsoUI/Art/MainMenu/menuBar_gro..."}, categoryState = 0, categoryInfo = [table:9]{lastSceneName = "groupMenuKeyboard"} </Locals>|r
  45. EsoUI/Ingame/MainMenu/Keyboard/ZO_MainMenu_Keyboard.lua:902: in function 'MainMenu_Keyboard:ToggleCategory'
  46. |caaaaaa<Locals> self = [table:6], category = 10, categoryLayoutInfo = [table:8] </Locals>|r
  47. :1: in function '(main chunk)'
  48. |caaaaaa<Locals> keybind = "TOGGLE_GROUP" </Locals>|r


After this error the game is basically dead, nothing can be interacted with, the whole UI is gone, menus can't be opened and the only way to close the game is by using Alt+F4.

Any idea what might be causing this?
Report comment to moderator  
Reply With Quote
Unread 05/14/21, 05:58 AM  
Odylon
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 17
Uploads: 5
Originally Posted by Kelsier
On startup it already throws me the following LUA error, I've installed the newest version of the LibAddonMenu-2.0 dependency. Any idea what might be causing this?
Hey, i'm sorry to hear you get these errors, it sounds like you are using some other addon which has a very old LibAddonMenu included in which case the library can get loaded two times.

Please send me a list or a screenshot of the addons you have active when the error appears so i can try to reproduce and fix it.

I've sent you a private message with a link to a file to test a possible hotfix...
Report comment to moderator  
Reply With Quote
Unread 05/14/21, 06:36 AM  
Kelsier

Forum posts: 0
File comments: 15
Uploads: 0
Thanks, yeah there are a couple of those and unfortunately they hardcoded the libs and don't use proper dependency handling I think.

Never really looked into ESO modding on the dev side, is there any way to force a loadorder or make sure those old libs don't get loaded that I could try on my side?

I'll defo give the hotfix a try and report back, thanks for caring and doing this so quickly

Edit: Hotfix works perfectly fine
Last edited by Kelsier : 05/14/21 at 06:42 AM.
Report comment to moderator  
Reply With Quote
Unread 05/14/21, 06:54 AM  
Odylon
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 17
Uploads: 5
Originally Posted by Kelsier
Thanks, yeah there are a couple of those and unfortunately they hardcoded the libs and don't use proper dependency handling I think.

Never really looked into ESO modding on the dev side, is there any way to force a loadorder or make sure those old libs don't get loaded that I could try on my side?

I'll defo give the hotfix a try and report back, thanks for caring and doing this so quickly
I researched the problem a little bit more and it has to be an addon which uses LibAddonMenu with a version lower than r18 since before then (early 2015) it did not include the IconPicker control which causes the problem here. So the hotfix I sent you should work as intended.

The only way to avoid addons loading hardcoded old libraries is to manually install LibStub and activating it even if none of your addons require it as dependency. Since the game loads all libraries before it starts to load individual addons, LibAddonMenu will already be registered with LibStub and those addons with hardcoded old libraries won't be able to overwrite the new versions. But requesting LibStub as dependency is kind of a bad practice nowadays so that's why this workaround is not really an acceptable solution
Report comment to moderator  
Reply With Quote
Unread 05/14/21, 07:43 AM  
Anceane
 
Anceane's Avatar
AddOn Author - Click to view AddOns

Forum posts: 306
File comments: 1018
Uploads: 1
may be also you could simply put the latest library of Libaddonmenu directly into the addon folder, and remove all the others version of this library embedded into addons. You could do a save of your AddOns folder before doing that, so if that does not work you just have to put the save again and delete the other.

Originally Posted by Odylon
Originally Posted by Kelsier
Thanks, yeah there are a couple of those and unfortunately they hardcoded the libs and don't use proper dependency handling I think.

Never really looked into ESO modding on the dev side, is there any way to force a loadorder or make sure those old libs don't get loaded that I could try on my side?

I'll defo give the hotfix a try and report back, thanks for caring and doing this so quickly
I researched the problem a little bit more and it has to be an addon which uses LibAddonMenu with a version lower than r18 since before then (early 2015) it did not include the IconPicker control which causes the problem here. So the hotfix I sent you should work as intended.

The only way to avoid addons loading hardcoded old libraries is to manually install LibStub and activating it even if none of your addons require it as dependency. Since the game loads all libraries before it starts to load individual addons, LibAddonMenu will already be registered with LibStub and those addons with hardcoded old libraries won't be able to overwrite the new versions. But requesting LibStub as dependency is kind of a bad practice nowadays so that's why this workaround is not really an acceptable solution
Report comment to moderator  
Reply With Quote
Unread 05/20/21, 10:40 AM  
SIDMAY

Forum posts: 0
File comments: 29
Uploads: 0
Good afternoon, thank you for the addon, it helps a lot!

Tell me, can I add a feature so that the character's death icon appears only over those players over which I have enabled the display of icons.

Thank you in advance, and would really appreciate adding this feature.
Report comment to moderator  
Reply With Quote
Unread 05/21/21, 06:16 AM  
Odylon
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 17
Uploads: 5
Originally Posted by SIDMAY
Good afternoon, thank you for the addon, it helps a lot!

Tell me, can I add a feature so that the character's death icon appears only over those players over which I have enabled the display of icons.

Thank you in advance, and would really appreciate adding this feature.
There is a feature planned which will give you a similar result by displaying overlays for custom/unique icons. When icons for dead players are turned off but overlays are turned on, you will see the dead player icon overlay on dead players only when they have a custom or unique icon assigned. This feature won't be included in the next update though...
Last edited by Odylon : 05/21/21 at 06:19 AM.
Report comment to moderator  
Reply With Quote
Unread 05/21/21, 07:11 AM  
SIDMAY

Forum posts: 0
File comments: 29
Uploads: 0
Originally Posted by Odylon
Originally Posted by SIDMAY
Good afternoon, thank you for the addon, it helps a lot!

Tell me, can I add a feature so that the character's death icon appears only over those players over which I have enabled the display of icons.

Thank you in advance, and would really appreciate adding this feature.
There is a feature planned which will give you a similar result by displaying overlays for custom/unique icons. When icons for dead players are turned off but overlays are turned on, you will see the dead player icon overlay on dead players only when they have a custom or unique icon assigned. This feature won't be included in the next update though...
I look forward to such a feature
Report comment to moderator  
Reply With Quote
Unread 05/21/21, 09:46 AM  
Anandaji

Forum posts: 0
File comments: 2
Uploads: 0
Originally Posted by Odylon
I've sent you a private message with a link to a file to test a possible hotfix...
Thank you for this great AddOn. Here's the same issue after the last update. Is it possible to receive this file as well please? Or is it better to just manually install LibStub? Neither is an ideal solution, of course.
Report comment to moderator  
Reply With Quote
Unread 05/21/21, 10:09 AM  
Odylon
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 17
Uploads: 5
Originally Posted by Anandaji
Originally Posted by Odylon
I've sent you a private message with a link to a file to test a possible hotfix...
Thank you for this great AddOn. Here's the same issue after the last update. Is it possible to receive this file as well please? Or is it better to just manually install LibStub? Neither is an ideal solution, of course.
I've sent you the link to the hotfix file, update including this patch will probably go live somewhen this weekend...
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: