You had to add variable and use it for billions and trillions instead of replacing it everywhere (and forgetting to change "or 0" into "or 2"). Nevertheless, below is untested code:
Lua Code:
--Thank you for your help
--SDPhantom
--Phanx
--Fizzlemizz
local AXP_COLOR = { r = 0.6, g = 0.2, b = 0.1 }
--Lets set up the Frame
local derArtifactBar = CreateFrame("Statusbar", "derArtifactBar",artifactFrame)
derArtifactBar:SetPoint("CENTER", 0, 0)
derArtifactBar:SetHeight(18)
derArtifactBar:SetWidth(artifactFrame:GetWidth() * .968)
derArtifactBar:SetStatusBarTexture("Interface\\AddOns\\_Deranjata\\media\\cast\\Waterline")
derArtifactBar:SetStatusBarColor(AXP_COLOR.r, AXP_COLOR.g, AXP_COLOR.b, 0.5)
derArtifactBar:SetBackdrop({
bgFile = "Interface\\AddOns\\_Deranjata\\media\\cast\\Lines",
insets = { left = 1, right = 1, top = 1, bottom = 1 }
})
derArtifactBar:SetBackdropColor(0.1, 0.1, 0.1)
derArtifactBar:SetBackdropBorderColor(0.6, 0.6, 0.6)
--lets clear any text then set out centerpoint
derArtifactBar.Text=derArtifactBar:CreateFontString(nil, "OVERLAY", "GameFontNormal")
derArtifactBar.Text:SetPoint("CENTER")
--Registering out watched events
derArtifactBar:RegisterEvent("PLAYER_ENTERING_WORLD")
derArtifactBar:RegisterEvent("ARTIFACT_XP_UPDATE")
derArtifactBar:RegisterEvent("UNIT_INVENTORY_CHANGED")
--function for beautiful numbers
local function ReadableNumber(num)
local ret
local placeValue = ("%%.%df"):format(0) --probably can be improved into "%.0f"
local placeValue1 = ("%%.%df"):format(2) --probably can be improved "%.2f"
if not num then
return "0 "
elseif num >= 1000000000000 then
ret = placeValue1:format(num / 1000000000000) .. " Tril" -- trillion
elseif num >= 1000000000 then
ret = placeValue1:format(num / 1000000000) .. " Bil" -- billion
elseif num >= 1000000 then
ret = placeValue:format(num / 1000000) .. " Mil"-- million
elseif num >= 1000 then
ret = placeValue:format(num / 1000) .. "k" -- thousand
else
ret = num .. " "-- hundreds
end
return ret
end
-- now lets update the position and text on the bar so we can always have accurate info
derArtifactBar:SetScript("OnEvent", function(self, event, ...)
if not HasArtifactEquipped() then self:Hide() return end
self:Show()
local itemID, altItemID, name, icon, xp, pointsSpent, quality, artifactAppearanceID, appearanceModID, itemAppearanceID, altItemAppearanceID, altOnTop, artifactTier = C_ArtifactUI.GetEquippedArtifactInfo()
local numPoints, artifactXP, xpForNextPoint = MainMenuBar_GetNumArtifactTraitsPurchasableFromXP(pointsSpent, xp, artifactTier)
self:SetMinMaxValues(0,xpForNextPoint)
self:SetValue(artifactXP)
--Begin Stack Overflow Fix
local currentAXP = ReadableNumber(artifactXP)
local nextAXP = ReadableNumber(xpForNextPoint)
--End Stack Overflow Fix **** also added the variable into the self.text:SetFormattedText Below
self.Text:SetFormattedText("Current %s/%s +%d Points",currentAXP, nextAXP, numPoints)
end)
Several things could be improved, for example, reducing of used variables.