-- ================================================================================ -- -- EMA - ( Ebony's MultiBoxing Assistant ) -- -- Current Author: Jennifer Cally (Ebony) -- -- -- -- License: MIT License 2018-2020 Jennifer Cally -- -- -- -- Some Code Used from "Jamba" that is -- -- Released under the MIT License -- -- "Jamba" Copyright 2008-2015 Michael "Jafula" Miller -- -- -- -- ================================================================================ -- -- Localization debugging. --GAME_LOCALE = "frFR" local MAJOR, MINOR = "EbonyUtilities-1.0", 1 local EbonyUtilities, oldMinor = LibStub:NewLibrary( MAJOR, MINOR ) if not EbonyUtilities then return end -- Code modified from http://lua-users.org/wiki/CopyTable function EbonyUtilities:CopyTable(object) local lookup_table = {} local function _copy(object) if type(object) ~= "table" then return object elseif lookup_table[object] then return lookup_table[object] end local new_table = {} lookup_table[object] = new_table for index, value in pairs(object) do new_table[_copy(index)] = _copy(value) end return setmetatable(new_table, getmetatable(object)) end return _copy(object) end function EbonyUtilities:ClearTable( object ) for key in next, object do if type( object[key] ) == "table" then EbonyUtilities:ClearTable( object[key] ) end object[key] = nil end end function EbonyUtilities:GetStatusPercent(val, max) if (max > 0) then return (val / max) end return 1.0 end function EbonyUtilities:Lowercase( name ) if name ~= nil then return string.utf8lower( name ) end end function EbonyUtilities:AddRealmToNameIfMissing( name ) if name == nil then return end Name = name:gsub("^%l", string.upper ) fullName = Name:gsub( "%s+", "") local matchDash = fullName:find( "-" ) if not matchDash then local k = GetRealmName() local realm = k:gsub( "%s+", "") fullName = fullName.."-"..realm end return fullName end -- Capitalise the name. function EbonyUtilities:Capitalise( name ) if name ~= nil then return string.utf8upper( string.utf8sub( name, 1, 1 ) )..string.utf8lower( string.utf8sub( name, 2 ) ) end end function EbonyUtilities:AddRealmToNameIfNotNil( name, realm ) local fullName = name if realm ~= nil and realm:trim() ~= "" then fullName = name.."-"..realm end return fullName end -- Money constants. EbonyUtilities.COLOUR_COPPER = "eda55f" EbonyUtilities.COLOUR_SILVER = "c7c7cf" EbonyUtilities.COLOUR_GOLD = "ffd700" EbonyUtilities.COPPER_PER_SILVER = 100; EbonyUtilities.SILVER_PER_GOLD = 100; EbonyUtilities.COPPER_PER_GOLD = EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD; -- value - the amount of money to display formatted. -- Creates a money string from the value passed; don't pass negative values! function EbonyUtilities:FormatMoneyString( value ) local gold = floor( value / ( EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ); local silver = floor( ( value - ( gold * EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ) / EbonyUtilities.COPPER_PER_SILVER ); local copper = mod( value, EbonyUtilities.COPPER_PER_SILVER ); local goldFormat = format( "|cff%s%d|r", EbonyUtilities.COLOUR_GOLD, gold ) local silverFormat = format( "|cff%s%02d|r", EbonyUtilities.COLOUR_SILVER, silver ) local copperFormat = format( "|cff%s%02d|r", EbonyUtilities.COLOUR_COPPER, copper ) if gold <=0 then goldFormat = "" if silver <= 0 then silverFormat = "" end end return strtrim(goldFormat.." "..silverFormat.." "..copperFormat) end -- A little toy to retun Gold, silver and copper for mail use function EbonyUtilities:MoneyString( value ) local gold = floor( value / ( EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ); local silver = floor( ( value - ( gold * EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ) / EbonyUtilities.COPPER_PER_SILVER ); local copper = mod( value, EbonyUtilities.COPPER_PER_SILVER ); if gold <=0 then goldFormat = "" if silver <= 0 then silverFormat = "" end end return gold, silver, copper end -- A little toy to retun Gold, silver and copper for formatted use. function EbonyUtilities:MoneyStringFormatted( value ) local gold = floor( value / ( EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ); local silver = floor( ( value - ( gold * EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ) / EbonyUtilities.COPPER_PER_SILVER ); local copper = mod( value, EbonyUtilities.COPPER_PER_SILVER ); if gold <=0 then goldFormat = "" if silver <= 0 then silverFormat = "" end end return BreakUpLargeNumbers(gold), silver, copper end -- itemLink - the item link to extract an item id from. -- Gets an item id from an item link. Returns nil, if an item id could not be found. function EbonyUtilities:GetItemIdFromItemLink( itemLink ) if itemLink == nil then return end local itemIdFound = nil local itemStringStart, itemStringEnd, itemString = itemLink:find( "^|c%x+|H(.+)|h%[.*%]" ) if itemStringStart then local matchStart, matchEnd, itemId = itemString:find( "(item:%d+)" ) if matchStart then itemIdFound = itemId end end return itemIdFound end -- itemLink1 - the first item link to compare. -- itemLink2 - the second item link to compare. -- Compares two itemlinks to see if they both refer to the same item. Return true if they do, false if they don't. function EbonyUtilities:DoItemLinksContainTheSameItem( itemLink1, itemLink2 ) local theSame = false local itemId1 = EbonyUtilities:GetItemIdFromItemLink( itemLink1 ) local itemId2 = EbonyUtilities:GetItemIdFromItemLink( itemLink2 ) if itemId1 ~= nil and itemId2 ~= nil then if itemId1 == itemId2 then theSame = true end end return theSame end -- state - string value containing "on" or "off". -- onCommand - string that is equivalent to true, like "on". -- offCommand - string that is equivalent to false, like "off". -- Returns true for "on"; false for "off"; nil for invalid. function EbonyUtilities:GetOnOrOffFromCommand( state, onCommand, offCommand ) local setToOn = nil state = state:lower():trim() if state == onCommand then setToOn = true end if state == offCommand then setToOn = false end return setToOn end -- Check for a buff. function EbonyUtilities:DoesThisCharacterHaveBuff( buffName ) local hasBuff = false local iterateBuffs = 1 local buff = UnitBuff( "player", iterateBuffs ) while buff ~= nil do if buff == buffName then hasBuff = true break end iterateBuffs = iterateBuffs + 1 buff = UnitBuff( "player", iterateBuffs ) end return hasBuff end function EbonyUtilities:FixValueToRange( value, minValue, maxValue ) if value < minValue then value = minValue end if value > maxValue then value = maxValue end return value end function EbonyUtilities:MerchantFrameIsShown() local Show = false if MerchantFrame:IsVisible() == true then Show = true else if IsAddOnLoaded("TradeSkillMaster" ) == true then if TSM_API.IsUIVisible("VENDORING") == true then Show = true end end end return Show end function EbonyUtilities:CheckIsFromMyRealm( name ) --print("test", name) local sameRealm = false if name ~= nil then local player, realm = strsplit( "-", name, 2 ) local myRealm = string.gsub(GetRealmName(), "%s+", "") if realm == myRealm then --print("Real SameRealm") sameRealm = true else local connectedServers = GetAutoCompleteRealms() if connectedServers then --Check if realm matches any realm in our connection for i = 1, #connectedServers do if realm == connectedServers[i] then --print("connectedRealm") sameRealm = true end end else --print("NotFromARealm") sameRealm = false end end end return sameRealm end function EbonyUtilities:InTagList( tag ) local isInTagList = false if JambaApi.DoesGroupExist( tag ) then isInTagList = true end return isInTagList end function EbonyUtilities:TooltipScaner(item) local text = nil local text2 = nil if item ~= nil then local tooltipName = "EMAScanner" local tooltipScanner = CreateFrame("GameTooltip", tooltipName, nil, "GameTooltipTemplate") tooltipScanner:SetOwner( WorldFrame, "ANCHOR_NONE") tooltipScanner:SetHyperlink(item) local tooltipText = _G[tooltipName.."TextLeft2"]:GetText() local tooltipTextTwo = _G[tooltipName.."TextLeft3"]:GetText() --print("test", tooltipTextTwo) text = tooltipText text2 = tooltipTextTwo --print("test9", text, text2) --tooltipScanner:Hide() tooltipScanner:Hide() tooltipScanner:ClearLines() end return text, text2 end -- We should Not need this anymore but its always here incase! using ItemMixIn function EbonyUtilities:ToolTipBagScaner(item, bag, slot) --print("test", item, bag, slot ) if item ~= nil or bag ~= nil or slot ~= nil then local boe = nil local ilvl = nil local tooltipName = "EMABagScanner" local tooltipbagScanner = CreateFrame("GameTooltip", tooltipName , nil, "GameTooltipTemplate") tooltipbagScanner:SetOwner(UIParent, "ANCHOR_NONE") tooltipbagScanner:SetBagItem(bag, slot) tooltipbagScanner:Show() for i = 1,6 do local t = _G[tooltipName.."TextLeft"..i]:GetText() --print("test", t) if (t == ITEM_SOULBOUND) then boe = ITEM_SOULBOUND end end tooltipbagScanner:Hide() return boe end end -- GetPetOwner function EbonyUtilities:getPetOwner( petName ) --print(petName) if petName ~= nil then local tooltipName = "EMAPetScanner" local tooltipPetScanner = CreateFrame("GameTooltip", tooltipName, nil, "GameTooltipTemplate") tooltipPetScanner:ClearLines() tooltipPetScanner:SetOwner(WorldFrame, "ANCHOR_NONE") tooltipPetScanner:SetUnit( petName ) local ownerName = _G[tooltipName.."TextLeft2"]:GetText() -- This is the line with <[Player]'s Pet> if not ownerName then return nil end local owner, _ = string.split("'",ownerName) tooltipPetScanner:Hide() return owner -- This is the pet's owner -- print(owner) end end function EbonyUtilities:endsWith(str, ending) if str ~= nil then return str:match(ending .. '$') else return false end end