-
-
Notifications
You must be signed in to change notification settings - Fork 7
API Utility functions
Utility functions
-
Functions
- Musician.Utils.Print
- Musician.Utils.Debug
- Musician.Utils.PrintError
- Musician.Utils.Error
- Musician.Utils.Popup
- Musician.Utils.Highlight
- Musician.Utils.RemoveHighlight
- Musician.Utils.GetColorCode
- Musician.Utils.FormatText
- Musician.Utils.GetLink
- Musician.Utils.GetPlayerLink
- Musician.Utils.GetFullPlayerName
- Musician.Utils.FormatPlayerName
- Musician.Utils.IsBattleNetID
- Musician.Utils.GetBattleNetGameAccountID
- Musician.Utils.IsBattleNetGameAccountOnline
- Musician.Utils.GetChatIcon
- Musician.Utils.GetPlayerPosition
- Musician.Utils.DisplayEmote
- Musician.Utils.RemoveChatMessage
- Musician.Utils.ReadBytes
- Musician.Utils.PackNumber
- Musician.Utils.UnpackNumber
- Musician.Utils.Base64Decode
- Musician.Utils.Base64Encode
- Musician.Utils.PackTime
- Musician.Utils.UnpackTime
- Musician.Utils.PackPlayerGuid
- Musician.Utils.UnpackPlayerGuid
- Musician.Utils.PackPlayerPosition
- Musician.Utils.UnpackPlayerPosition
- Musician.Utils.FromHex
- Musician.Utils.ToHex
- Musician.Utils.SongIsPlaying
- Musician.Utils.MuteGameMusic
- Musician.Utils.SetInstrumentToysMuted
- Musician.Utils.GetNormalizedRealmName
- Musician.Utils.GetRealmLocale
- Musician.Utils.NormalizePlayerName
- Musician.Utils.NormalizeSongName
- Musician.Utils.SimplePlayerName
- Musician.Utils.PlayerRealm
- Musician.Utils.PlayerIsInGroup
- Musician.Utils.PlayerIsMyself
- Musician.Utils.PlayerIsOnSameRealm
- Musician.Utils.PlayerGuidIsVisible
- Musician.Utils.Ellipsis
- Musician.Utils.GetMsg
- Musician.Utils.GetPromoEmote
- Musician.Utils.HasPromoEmote
- Musician.Utils.ResetFullPromoEmoteCooldown
- Musician.Utils.OverrideNextFullPromoEmote
- Musician.Utils.SendPromoEmote
- Musician.Utils.GetVersionText
- Musician.Utils.VersionCompare
- Musician.Utils.PaddingZeros
- Musician.Utils.FormatTime
- Musician.Utils.ParseTime
- Musician.Utils.ShallowCopy
- Musician.Utils.DeepCopy
- Musician.Utils.DeepMerge
- Musician.Utils.FlipTable
- Musician.Utils.GetOs
- Musician.Utils.EasyMenu
- Musician.Utils.EasyMenu_Initialize
- Musician.Utils.SetFontStringTextFixedSize
- Musician.Utils.GetByteReader
- Musician.Utils.ForEach
- Musician.Utils.GetRandomArgument
Display a message in the console
Musician.Utils.Print(msg)Arguments
- msg (string)
Print debug stuff in the console
Musician.Utils.Debug(module, ...)Arguments
- module (string)
- ... (string)
Display an error message in the console
Musician.Utils.PrintError(msg)Arguments
- msg (string)
Display an error message in a popup
Musician.Utils.Error(msg)Arguments
- msg (string)
Display a message in a popup
Musician.Utils.Popup(msg, callback, force)Arguments
- msg (string)
- callback (function)
- force (boolean)
Highlight text
highlightedText = Musician.Utils.Highlight(text, color)Arguments
- text (string)
- color (string|Color)
Returns
- highlightedText (string)
Remove text coloring
text = Musician.Utils.RemoveHighlight(highlightedText)Arguments
- highlightedText (string)
Returns
- text (string)
Get color code from RGB values
colorCode = Musician.Utils.GetColorCode(r, g, b)Arguments
- r (number) 0-1
- g (number) 0-1
- b (number) 0-1
Returns
- colorCode (string)
Format text, adding highlights etc.
formattedText = Musician.Utils.FormatText(text)Arguments
- text (string)
Returns
- formattedText (string)
Get hyperlink
link = Musician.Utils.GetLink(command, text, ...)Arguments
- command (string)
- text (string)
- ... (string)
Returns
- link (string)
Get player hyperlink
playerLink = Musician.Utils.GetPlayerLink(player)Arguments
- player (string)
Returns
- playerLink (string)
Get player full name with realm slug or Battle.net account name if a Battle.net game account ID is provided
fullPlayerName = Musician.Utils.GetFullPlayerName(player)Arguments
- player (string)
Returns
- fullPlayerName (string)
Get player name for display
formattedPlayerName = Musician.Utils.FormatPlayerName(player)Arguments
- player (string)
Returns
- formattedPlayerName (string)
Return true when the provided player name is a Battle.net ID
isBattleNetID = Musician.Utils.IsBattleNetID(playerName)Arguments
- playerName (string)
Returns
- isBattleNetID (boolean)
Get Battle.net game account ID from the Battle.net account ID.
battleNetGameAccountId = Musician.Utils.GetBattleNetGameAccountID(battleNetAccountId)Arguments
- battleNetAccountId (string)
Returns
- battleNetGameAccountId (string)
Indicates whenever the provided game account ID is online
isOnline = Musician.Utils.IsBattleNetGameAccountOnline(gameAccountId)Arguments
- gameAccountId (int)
Returns
- isOnline (string)
Return the code to insert an icon in a chat message or a text string
chatIcon = Musician.Utils.GetChatIcon(path, r, g, b)Arguments
- path (string)
- r (number) 0-1 _(default=0)
- g (number) 0-1 _(default=0)
- b (number) 0-1 _(default=0)
Returns
- chatIcon (string)
Get the player position in the 3D world
posY, posX, posZ, instanceID = Musician.Utils.GetPlayerPosition()Returns
- posY (number)
- posX (number)
- posZ (number) Always 0
- instanceID (number)
Display a faked emote
Musician.Utils.DisplayEmote(player, playerGUID, message)Arguments
- player (string)
- playerGUID (string)
- message (string)
Remove a chat message by its line ID
Musician.Utils.RemoveChatMessage(lineID)Arguments
- lineID (int)
Read some bytes from a string and remove them
data, str = Musician.Utils.ReadBytes(str, bytes)Arguments
- str (string)
- bytes (int)
Returns
- data (string) read bytes
- str (string) new string
Pack an integer number into a string
data = Musician.Utils.PackNumber(num, bytes)Arguments
- num (int) integer to pack
- bytes (int) number of bytes
Returns
- data (string)
Unpack a string into an integer number
num = Musician.Utils.UnpackNumber(data)Arguments
- data (string)
Returns
- num (int)
Decode base 64 string
Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss alexthkloss@web.de
licensed under the terms of the LGPL2
http://lua-users.org/wiki/BaseSixtyFour
str = Musician.Utils.Base64Decode(data)Arguments
- data (string)
Returns
- str (string)
Encode base 64 string
Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss alexthkloss@web.de
licensed under the terms of the LGPL2
http://lua-users.org/wiki/BaseSixtyFour
@return string
Musician.Utils.Base64Encode(data)Arguments
- data (string)
Pack a time or duration in seconds into a string
data = Musician.Utils.PackTime(seconds, bytes, fps)Arguments
- seconds (float)
- bytes (int) Number of bytes
- fps (float) Precision in frames par second
Returns
- data (string)
Unpack a string into a time or duration in seconds
seconds = Musician.Utils.UnpackTime(data, fps)Arguments
- data (string)
- fps (float) Precision in frames par second
Returns
- seconds (float)
Pack player GUID into a 6-byte string
data = Musician.Utils.PackPlayerGuid()Returns
- data (string)
Unpack player GUID from string
guid = Musician.Utils.UnpackPlayerGuid(str)Arguments
- str (string)
Returns
- guid (string)
Pack player position into a 18-byte chunk string
data = Musician.Utils.PackPlayerPosition()Returns
- data (string)
Unpack player position from chunk string
posY, posX, posZ, instanceID, guid = Musician.Utils.UnpackPlayerPosition(str)Arguments
- str (string)
Returns
- posY (number)
- posX (number)
- posZ (number)
- instanceID (int)
- guid (string)
Convert hex string to string
str = Musician.Utils.FromHex(hex)Arguments
- hex (string)
Returns
- str (string)
Convert string to hex string
hex = Musician.Utils.ToHex(str)Arguments
- str (string)
Returns
- hex (string)
Return true if a song is actually playing and is audible
isPlaying = Musician.Utils.SongIsPlaying()Returns
- isPlaying (boolean)
Start or stop the actual game music if a song can actually be heard
Musician.Utils.MuteGameMusic(force)Arguments
- force (boolean)
Mute or unmute music from instrument toys
Musician.Utils.SetInstrumentToysMuted(isMuted)Arguments
- isMuted (boolean)
Return the normalized realm name the player belongs to
Safer than the standard GetNormalizedRealmName() that may return nil sometimes
realmName = Musician.Utils.GetNormalizedRealmName()Returns
- realmName (string)
Return the short locale code of the realm the player belongs to
locale = Musician.Utils.GetRealmLocale()Returns
- locale (string) 'en', 'fr' etc.
Return the normalized player name, including realm slug
normalizedPlayerName = Musician.Utils.NormalizePlayerName(playerName)Arguments
- playerName (string)
Returns
- normalizedPlayerName (string)
Return the normalized song name
normalizedSongName = Musician.Utils.NormalizeSongName(songName)Arguments
- songName (string)
Returns
- normalizedSongName (string)
Return the simple player name, including the realm slug if needed
simpleName = Musician.Utils.SimplePlayerName(playerName)Arguments
- playerName (string)
Returns
- simpleName (string)
Return the player realm slug
realmSlug = Musician.Utils.PlayerRealm(playerName)Arguments
- playerName (string)
Returns
- realmSlug (string)
Return true if the player is in my party or raid
isInMyGroup = Musician.Utils.PlayerIsInGroup(playerName)Arguments
- playerName (string)
Returns
- isInMyGroup (boolean)
Return true if the provided player name is myself
isMyself = Musician.Utils.PlayerIsMyself(playerName)Arguments
- playerName (string)
Returns
- isMyself (boolean)
Return true if the provided player name is on the same realm or connected realm as me
isOnSameRealm = Musician.Utils.PlayerIsOnSameRealm(playerName)Arguments
- playerName (string)
Returns
- isOnSameRealm (boolean)
Return true if the player whose GUID is provided is visible (loaded) by the game client
isVisible = Musician.Utils.PlayerGuidIsVisible(guid)Arguments
- guid (string)
Returns
- isVisible (boolean)
Shortens the UTF-8 text with ellipsis if its size in bytes is longer than specified
ellipsisText = Musician.Utils.Ellipsis(text, maxBytes)Arguments
- text (string)
- maxBytes (int)
Returns
- ellipsisText (string)
Returns localized message
localizedMsg = Musician.Utils.GetMsg(msg, locale)Arguments
- msg (string)
- locale (string) Defaults to the realm locale (optional)
Returns
- localizedMsg (string)
Return the "Player is playing music" emote with promo message
promoEmote = Musician.Utils.GetPromoEmote()Returns
- promoEmote (string)
Return true if the message contains the promo emote, in any language
hasPromoEmote, isFullPromoEmote = Musician.Utils.HasPromoEmote(message)Arguments
- message (string)
Returns
- hasPromoEmote (boolean)
- isFullPromoEmote (boolean) true if the emote contains the part invinting other players to install Musician
Mark the full promo emote as recently seen
Musician.Utils.ResetFullPromoEmoteCooldown()Override the next full promo emote
Musician.Utils.OverrideNextFullPromoEmote()Send the "Player is playing music" emote with promo message
Musician.Utils.SendPromoEmote()Return the current version as text for the end user
version = Musician.Utils.GetVersionText()Returns
- version (string)
Compare two version numbers
difference = Musician.Utils.VersionCompare(versionA, versionB)Arguments
- versionA (string)
- versionB (string)
Returns
- difference (number) 0 if A = B, 1 if A > B, -1 if A < B
Add padding zeros
formattedNumber = Musician.Utils.PaddingZeros(number, zeros)Arguments
- number (int)
- zeros (int)
Returns
- formattedNumber (string)
Format time to mm:ss.ss format
formattedTime = Musician.Utils.FormatTime(time, simple)Arguments
- time (number)
- simple (boolean)
Returns
- formattedTime (string)
Parse time in seconds from mm:ss.ss format
seconds = Musician.Utils.ParseTime(timestamp)Arguments
- timestamp (string)
Returns
- seconds (number)
Shallow copy a table
http://lua-users.org/wiki/CopyTable
copy = Musician.Utils.ShallowCopy(orig)Arguments
- orig (table)
Returns
- copy (table)
Deep copy a table
http://lua-users.org/wiki/CopyTable
copy = Musician.Utils.DeepCopy(orig)Arguments
- orig (table)
Returns
- copy (table)
Deep merge two tables
merged = Musician.Utils.DeepMerge(merged, orig)Arguments
- merged (table)
- orig (table)
Returns
- merged (table)
Flip a table
flipped = Musician.Utils.FlipTable(orig)Arguments
- orig (table)
Returns
- flipped (table)
Return operating system name
os = Musician.Utils.GetOs()Returns
- os (string)
Blizzard's EasyMenu using MSA_DropDownMenu
Musician.Utils.EasyMenu()Blizzard's EasyMenu_Initialize using MSA_DropDownMenu
Musician.Utils.EasyMenu_Initialize()Set text to a FontString element ensuring the visual text size is respected
Musician.Utils.SetFontStringTextFixedSize(fontString, text)Arguments
- fontString (FontString)
- text (string)
Return byte reader functions for provided data string
readBytes = Musician.Utils.GetByteReader(data, err)Arguments
- data (string)
- err (string) Error to be returned in case of reading error
Returns
- readBytes (function) , getCursor (function)
Call function for each item of the provided table
Musician.Utils.ForEach(list, func)Arguments
- list (table)
- func (function) Takes 3 arguments: value, key and the provided table.
Randomly returns one of the provided arguments
Musician.Utils.GetRandomArgument()Table of contents
- User guide (FR)
- Optional modules
- What the FAQ
- Tips and Tricks
- Music producer guide
- Localization
- Technical design
- API documentation
Discord / MusicianList / Patreon / Donate