Alts
Overview
Alts is an addon that allows you to setup main-alt relationships and have that information displayed in various areas. It uses the LibAlts library to share data with other addons. For a list of other addons using LibAlts, see here.
Bugs/Enhancements
You can submit tickets here: https://www.wowace.com/projects/alts/issues
Features
Main/Alt information is displayed:
- When that character logs on
- When you do a /who on that character
- In unit tooltips
- From a command line interface
- From a GUI interface
Main/Alt information can be set and managed:
- By right-clicking on a unit frame
- From a command line interface
- From a GUI interface
- LDB launcher to bring up the GUI interface
- Minimap button to bring up the GUI interface
Command line options:
- alts <searchterm> - Brings up the main window. If search term is provided, it will use it to search the main-alt data.
- setmain <alt> <main> - Adds the specified alt as an alt of the specified main.
- delalt <alt> <main> - Deletes the specified alt for the specified main.
- getalts <main> - Gets the list of alts for the specified main.
- getmain <alt> - Gets the main for the specified alt.
Automated Guild Import
Alts will automatically scan the guild notes for a character who is in a guild. It the notes are in a certain format it will then store the main/alt information into a separate area from the main-alt data that a user enters. Every time the player logs onto a character in that guild, the guild main/alt data will be updated. This information is kept separate from main/alt data a user enters so it can be easily sync'd.
The following guild note formats work:
- <main name>'s alt
- Alt of <main name>
- ALT: <main name>
- AKA: <main name>
- (<main name>) Must be at the start of the note though.
- [<main name>] Must be at the start of the note though.
- <main name> alt
- <main name>
- ALT(<main name>)
The matching is not case sensitive. If a note with one of those formats is found and the main name is in the guild, then it will create a main/alt link.
The guild imported data and user-entered data are merged automatically when displayed or searched. The guild imported data cannot be modified from the user interface. The UI ignores edits to that data since all changes are performed only on user-entered data.
Guild Export
You can now export your guild roster in a comma-separated format (CSV). You can find this feature in the options under Guild.
- Fields to Export: You can choose which fields to export. The fields are in the order of the checkboxes on the export screen. The Alts field will add a field that lists all the alts for the character.
- Escape?: You can choose if the appropriate fields are escaped using double quotes. If some of the fields such as the notes have commas then you may want to try this option.
- Only Mains: This option will export all character in the roster who are not marked as an alt.
- Only Guild Alts: This option controls if the Alt field lists all alts you have defined or only alts defined by the guild notes. If you have setup alt relationships outside the guild notes and do not want them in the export, leave it checked. If you want all alts listed then uncheck it.
After you click Export, you can use Ctrl-A then Ctrl-C to copy the data in the export box to the clipboard. If you're using a Mac, use Command-A then Command-C. From the clipboard, you can paste the exported data into the target application.
Guild Log
Alts now takes a snapshot of your guild at logon and will report any changes at each logon. You can also bring up the log manually in the options menu under Guild. It does not monitor the guild roster while you are playing so it should not affect performance.
Friend/Ignore Logging
Alts also takes snapshots of your friends and ignore lists and displays any removed friends or ignores at logon. This is helpful because the default UI does not indicate names for characters that were deleted, renamed, etc. It does not monitor these lists while you are playing so it should not affect performance.
Enhancements or Bugs
If you want to report a bug or ask for an enhancement, feel free to submit a ticket:
Hello!
When trying to set an Alt for a guildie by clicking on him in the guild roster I get this error:
1x Interface/AddOns/Alts/Alts.lua:700: attempt to index upvalue 'setMainFrame' (a nil value)
[string "@Interface/AddOns/Alts/Alts.lua"]:700: in function `SetMainHandler'
[string "@Interface/AddOns/Alts/InterfaceMods.lua"]:161: in function `func'
[string "@Interface/AddOns/RaiderIO/libs/LibDropDownExtension-1.0-3/LibDropDownExtension.lua"]:152: in function <...bs/LibDropDownExtension-1.0/LibDropDownExtension.lua:126>
Locals:
self = <table> {
logonTime = "2022/11/16 20:14"
SetDefaultModuleLibraries = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:363
SetAltEvent = <function> defined @Interface/AddOns/Alts/Alts.lua:531
EnableModule = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:328
modules = <table> {
}
CancelTimer = <function> defined @Interface/AddOns/Alts/Libs/AceTimer-3.0/AceTimer-3.0.lua:147
IterateEmbeds = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:438
SecureHookScript = <function> defined @Interface/AddOns/Alts/Libs/AceHook-3.0/AceHook-3.0.lua:409
ShowGuildLogFrame = <function> defined @Interface/AddOns/Alts/Alts.lua:881
AddAltHandler = <function> defined @Interface/AddOns/Alts/Alts.lua:871
RawHookScript = <function> defined @Interface/AddOns/Alts/Libs/AceHook-3.0/AceHook-3.0.lua:394
RemoveSourceEvent = <function> defined @Interface/AddOns/Alts/Alts.lua:539
Printf = <function> defined @Interface/AddOns/Alts/Libs/AceConsole-3.0/AceConsole-3.0.lua:65
SetDefaultModulePrototype = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:405
IsAltHandler = <function> defined @Interface/AddOns/Alts/Alts.lua:783
GetAltsHandler = <function> defined @Interface/AddOns/Alts/Alts.lua:827
defaultModuleState = true
CreateConfirmMainDeleteFrame = <function> defined @Interface/AddOns/Alts/Alts.lua:2033
IsEnabled = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:447
GUILD_ROSTER_UPDATE = <function> defined @Interface/AddOns/Alts/Alts.lua:2385
ScheduleTimer = <function> defined @Interface/AddOns/Alts/Libs/AceTimer-3.0/AceTimer-3.0.lua:94
DisableModule = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:346
StaticPopupSetMain = <function> defined @Interface/AddOns/Alts/Alts.lua:710
GenerateGuildExport = <function> defined @Interface/AddOns/Alts/Alts.lua:1655
GetCurrentTimestamp = <function> defined @Interface/AddOns/Alts/Alts.lua:322
RegisterMessage = <function> defined @Interface/AddOns/Alts/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:90
UnregisterMessage = <function> defined @Interface/AddOns/Alts/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:153
SetMainChatColorCode = <function> defined @Interface/AddOns/Alts/Alts.lua:244
IsHooked = <function> defined @Interface/AddOns/Alts/Libs/AceHook-3.0/AceHook-3.0.lua:492
CheckAndUpdateFriends = <function> defined @Interface/AddOns/Alts/Alts.lua:275
GetMainHandler = <function> defined @Interface/AddOns/Alts/Alts.lua:842
db = <table> {
}
EditAltsHandler = <function> defined @Interface/AddOns/Alts/Alts.lua:2105
SetEnabledState = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:420
Hook = <function> defined @Interface/AddOns/Alts/Libs/AceHook-3.0/AceHook-3.0.lua:273
enabledState = true
RegisterEvent = <function> defined @Interface/AddOns/Alts/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:90
optionsFrame = <table> {
}
AltsHandler = <function> defined @Interface/AddOns/Alts/Alts.lua:1619
HideAltsWindow = <function> defined @Interface/AddOns/Alts/Alts.lua:2242
DeleteAltEvent = <function> defined @Interface/AddOns/Alts/Alts.lua:535
IterateModules = <function> defined @Interface/AddOns/Alts/Libs/AceAddon-3.0/AceAddon-3.0.lua:433
baseName = "Alts"
RawHook = <function> defined @Interface/AddOns/Alts/Libs/AceHook-3.0/AceHook-3.0.lua:312
EnableInterfaceModifications = <function> defined @Interface/AddOns/Alts/InterfaceMods.lua:17
UpdateMainsTable = <function> defined @Interface/AddOns/Alts/Alts.lua:543
InterfaceModsOptions = <function> defined @Interface/AddOns/Alts/Options.lua:416
ShowOptions = <function> defined @Interface/AddOns/Alts/Options.lua:406
GetOptions = <function> defined @Interface/AddOns/Alts/Options.lua:8
RegisterChatCommand = <function> defined @Interface/AddOns/Alts/Libs/AceConsole-3.0/AceConsole-3.0.lua:81
FRIENDLIST_UPDATE = <function> defined @Interface/AddOns/Alts/Alts.lua:2393
PLAYER_REGEN_ENABLED = <function> defined @Interface/AddOns/Alts/Al
Thanks!
I know this and Libalts don't get updated much, but today not working. Everything is still noted right and on mouseover and select but when guildies log in it does not show in text like it always had. Chat boxes are selected, stuff in the addon settings is right. How can I fix this so I see when guys log in again?
Anyone know a fix/hack to remove colour on the main's name in chat? I would prefer names to be green in gchat, white in say, red in yell., etc. Will also post this under suggestion since maybe an option thta others would like :)
Great addon!
EDIT: i play classic
In reply to missiva:
In the latest version I added an option to enable/disable the changing of the color of the main names. It defaults to true but you can turn that off now.
If there are any issues, please open an issue here on Wowace or on GitHub. It's very easy to miss comments.
In reply to missiva:
I don' t dig into it wine it's all setup. I don't know about diabling but I know you can change the main name colour.
Many times I see fixes to go to a certain file and certain line number. What basic text editor shows line numbers? Notepad does not.
In reply to Glaciermane:
In 'Notepad' select Edit -> Go To -> enter line number. That is the only way to easily find them, as it is just a basic text editor.
One of the most common, fully featured editors is 'Notepad ++' - it will show line numbers by default, allows for robust searching, and it had a large number of plug-ins available for numerous programming languages. https://www.microsoft.com/en-us/p/notepad-unofficial/9phsctzmkc27#activetab=pivot:overviewtab
For Mac, Text Wranger was awesome but has been merged with BBEdit, which is decent, in its own right, but just a bit different. https://www.barebones.com/products/
In reply to Glaciermane:
"Notepad++" does that. Google it.
Couple of the method calls were older versions thereof that got deprecated. AFAIK they just need(ed) updating to the official versions, as follows:
Open up Alts\BNet.lua, go to line 73 which should look like this:
self:AddBNetLink(_G.BNGetFriendInfo(i))
Replace it with this:
self:AddBNetLink(C_BattleNet.GetFriendAccountInfo(i))
Same file, go to line 79, should be this:
self:AddBNetLink(_G.BNGetFriendInfoByID(bnetIDAccount))
Replace it with this:
self:AddBNetLink(C_BattleNet.GetAccountInfoByID(bnetIDAccount))
In reply to Veyska:
Thanks a lot 🥰
Hello! It seems the addon got buggy with the prepatch 😰
70x Alts\BNet.lua:73: attempt to call field 'BNGetFriendInfo' (a nil value)
[string "@Alts\BNet.lua"]:73: in function 'UpdateBNetFriends'
[string "@Alts\BNet.lua"]:68: in function 'func'
[string "@Alts\Core.lua"]:61: in function 'FireCallback'
[string "@Alts\Alts-9.0.0.lua"]:2858: in function '?'
[string "@Alts\Libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:119: in function <...lts\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]:"]: ?
[string "@Alts\Libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:29: in function <...lts\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Alts\Libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:64: in function 'Fire'
[string "@Alts\Libs\AceEvent-3.0\AceEvent-3.0-4.lua"]:120: in function <...rface\Alts\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>
might i suggest an alternate LDB icon Interface\\ICONS\\Achievement_GuildPerk_EverybodysFriend.blp as the current icon dosn't exist in Classic :)
In reply to orionshocked:
That does seem reasonable. It will be in the next release.
Hello!
I'd like to report a bug :)
I noticed that for some reason Achievment messages are displayed differently from usual messages and that one of the ( ) is coloured yellow there and the name in ( ) is positioned after text.
Hope that helps. Thanks!
In reply to Natlyz:
Thank you for the image. I may have an idea on how to fix it. I'll try to resolve the issue for the next release.
Any way to have the main's name be their own class color?
For example, an alt is on a rogue so his name is yellow. His main is a paladin so main's name is pink.
All I see is a color slider to select the color for all names.
LUA error post 8.1 update
Message: Interface\AddOns\Alts\Alts.lua:300: attempt to call field 'GetNumIgnores' (a nil value)
Time: Fri Dec 28 20:09:53 2018
Count: 1
Stack: Interface\AddOns\Alts\Alts.lua:300: attempt to call field 'GetNumIgnores' (a nil value)
(tail call): ?
Interface\AddOns\Alts\Alts.lua:300: in function `CheckAndUpdateIgnores'
Interface\AddOns\Alts\Alts.lua:2858: in function `?'
...que\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119: in function <...que\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[C]: ?
...que\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:29: in function <...que\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
...que\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:64: in function `Fire'
...ace\AddOns\TomTom\libs\AceEvent-3.0\AceEvent-3.0.lua:120: in function <...ace\AddOns\TomTom\libs\AceEvent-3.0\AceEvent-3.0.lua:119>
Locals: <none>
Is not posible to make it work with every chatline and not just with log-in-outs?
I mean every time someone writte in guild chat, that displays alt-main name
In reply to Forge_User_56191003:
Sorry, I missed this before. It should display the main name in parentheses after the alt's name in chat if an alt speaks in guild chat. Is that not working for you?
Question about guild import... does the name have to match a character name in the roster? Can it be anything? We're on a first-name basis here and would love to simply have (Bob) or whatever.