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)
GENERAL SETTINGS
GROUP ICONS
Choose the default icons applied to group leader, tanks, healers, damage dealers, battleground team members and dead players.
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.
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.
![](https://drive.google.com/uc?export=view&id=1T6s-l7BlEgp6zMztJqegdw9OBvX2dB_-)
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.
![](https://drive.google.com/uc?export=view&id=1ioeOaXV06zGz7Ayetjft0wU8qGs1g6iF)
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.
WORLD MAP
Shows your group members icons on the World Map as well as on Votan's Minimap and Minimap by Fyrakin.
GROUP WINDOW
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.
FRIENDS LIST & GUILD ROSTER
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.
Simple addon example:
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.
You can use this chat command to print your current world position:
Simple addon example:
CUSTOM ICON PACKS DEVELOPER INFO
The addon provides an exposed function to allow other addon developers to provide custom icon packs.
Simple addon example:
UNIQUE ICON PACKS DEVELOPER INFO
The addon provides an exposed function to allow other addon developers to provide unique icon packs.
Simple addon example:
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.
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:
function OSI.SetMechanicIconForUnit( displayName, -- display name of the affected player texture, -- icon texture path size, -- optional icon size color, -- optional icon color {r,g,b} offset, -- optional icon offset in meters callback -- optional callback function ) function OSI.RemoveMechanicIconForUnit( displayName -- display name of the affected player )
Simple addon example:
Lua Code:
local ADDON_NAME = "MyAddonName" local MY_TEXTURE = "myaddonname/myiconpath/myicontexture.dds" local MECHANIC_ID = 12345 EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName ) if addonName ~= ADDON_NAME then return end EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED ) EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_EFFECT_CHANGED, function( _, changeType, _, _, unitTag ) -- check if OdySupportIcons is active and the affected unit is a player if OSI and OSI.SetMechanicIconForUnit and IsUnitPlayer( unitTag ) then -- retrieve the displayname of the affected player local displayName = GetUnitDisplayName( unitTag ) -- if the player gained the mechanic effect... if changeType == EFFECT_RESULT_GAINED then -- assign your icon to the affected player and make it bigger than other icons OSI.SetMechanicIconForUnit( displayName, -- display name of the affected player MY_TEXTURE, -- icon texture path OSI.GetIconSize() * 1.5, -- optional icon size { 1, 1, 1 }, -- optional icon color {r,g,b} 0, -- optional icon offset in meters function( data ) -- optional callback function -- simple bounce animation along the y-axis data.offset = 0.5 + 0.5 * math.sin( GetGameTimeMilliseconds() / 1000 * 2 ) -- the data object passed to the callback function contains: -- displayName, unitTag, texture, size, color, offset end ) -- if the player lost the mechanic effect... elseif changeType == EFFECT_RESULT_FADED then -- remove your icon from the formerly affected player OSI.RemoveMechanicIconForUnit( displayName ) end end end ) EVENT_MANAGER:AddFilterForEvent( ADDON_NAME, EVENT_EFFECT_CHANGED, REGISTER_FILTER_ABILITY_ID, MECHANIC_ID ) EVENT_MANAGER:AddFilterForEvent( ADDON_NAME, EVENT_EFFECT_CHANGED, REGISTER_FILTER_UNIT_TAG_PREFIX, "group" ) 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:
function OSI.CreatePositionIcon( x, y, z, -- world coordinates texture, -- icon texture path size, -- optional icon size color, -- optional icon color {r,g,b} offset, -- optional icon offset in meters callback -- optional callback function ) function OSI.DiscardPositionIcon( icon -- position icon object )
You can use this chat command to print your current world position:
Lua Code:
/script OSI.PrintMyPosition()
Simple addon example:
Lua Code:
local ADDON_NAME = "MyAddonName" local MY_TEXTURE = "myaddonname/myiconpath/myicontexture.dds" local MY_ICON = nil EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName ) if addonName ~= ADDON_NAME then return end EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED ) EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_BOSSES_CHANGED, function() -- check is OdySupportIcons is active and supports world position icons if OSI and OSI.CreatePositionIcon then -- retrieve name of boss local boss = GetUnitName( "boss1" ) -- if we are in Sharpfangs (Deshaan) lair and... if boss and boss == "Sharpfang" then -- if no icon has been created yet... if not MY_ICON then -- create an icon 2.5m above the stone formation and make it bigger than other icons MY_ICON = OSI.CreatePositionIcon( 274367, 11022, 213871, -- world coordinates MY_TEXTURE, -- icon texture path OSI.GetIconSize() * 1.5, -- optional icon size { 1, 1, 1 }, -- optional icon color {r,g,b} 2.5, -- optional icon offset in meters function( data ) -- optional callback function -- simple bounce animation along the y-axis data.offset = 2.5 + math.sin( GetGameTimeMilliseconds() / 1000 * 2 ) -- the data object passed to the callback function contains: -- texture, size, color, offset end ) end -- if we are somewhere else or Sharpfang is not around and... else -- if an icon has been created before... if MY_ICON then -- discard the icon OSI.DiscardPositionIcon( MY_ICON ) MY_ICON = nil end end end end ) end )
CUSTOM ICON PACKS DEVELOPER INFO
The addon provides an exposed function to allow other addon developers to provide custom icon packs.
Lua Code:
function OSI.AddCustomIconPack( icons )
Simple addon example:
Lua Code:
local ADDON_NAME = "MyAddonName" local MY_TEXTURES = { "myaddonname/myiconpath/myicontexture-1.dds", "myaddonname/myiconpath/myicontexture-2.dds", "myaddonname/myiconpath/myicontexture-3.dds", } EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName ) if addonName ~= ADDON_NAME then return end EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED ) -- check if OdySupportIcons is active and supports custom icon packs if OSI and OSI.AddCustomIconPack then -- add your list of icons OSI.AddCustomIconPack( MY_TEXTURES ) end end )
UNIQUE ICON PACKS DEVELOPER INFO
The addon provides an exposed function to allow other addon developers to provide unique icon packs.
Lua Code:
function OSI.AddUniqueIconPack( icons )
Simple addon example:
Lua Code:
local ADDON_NAME = "MyAddonName" local MY_TEXTURES = { ["@SomePlayer"] = "myaddonname/myiconpath/myiconforsomeplayer.dds", ["@AnotherPlayer"] = "myaddonname/myiconpath/myiconforanotherplayer.dds", } EVENT_MANAGER:RegisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED, function( _, addonName ) if addonName ~= ADDON_NAME then return end EVENT_MANAGER:UnregisterForEvent( ADDON_NAME, EVENT_ADD_ON_LOADED ) -- check if OdySupportIcons is active and supports unique icon packs if OSI and OSI.AddUniqueIconPack then -- add your list of icons OSI.AddUniqueIconPack( MY_TEXTURES ) end 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.