View Single Post
05-30-21, 08:13 AM   #1
ramma
A Kobold Labourer
Join Date: Aug 2019
Posts: 1
Upgrading old addon for BCC Backdrop change.

I've been trying to get sRaidFrames working on BCC for a bit now, but not being great at LUA I'm having trouble getting the suggestions in other threads about this working.

Since the addon had an outdated Ace3 version I swapped in the most recent version of that first which seems to have worked fine. Then based on this and some of the posts here, I edited the lines with CreateFrame that I could see how to easily, adding the BackdropTemplateMixin and "BackdropTemplate" part, but I'm still seeing these errors

Code:
Message: Interface\AddOns\sRaidFrames\sRaidFrames.lua:1451: attempt to call method 'SetBackdrop' (a nil value)
Code:
Message: Interface\AddOns\sRaidFrames\sRaidFrames.lua:1705: attempt to call global 'UnitHasVehicleUI' (a nil value)
Curseforge is down so I can't link there for a download of the code. The full initial commit on my github repo is the original code, and the current version has the edits I've made. They're just in the sRaidFrames.lua as the above error implies.

As to not crowd this post with code blocks, here's the code around the first error I'm seeing, but there's more not throwing errors (yet), or ones that I couldn't figure out how to edit looking at examples, so checking the full source is probably best.

This code corresponds to

Lua Code:
  1. [code]
  2. -- Adapts frames created by Secure Headers
  3. function sRaidFrames:CreateUnitFrame(...)
  4.     local f = select("#", ...) > 1 and CreateFrame(...) or select(1, ...)
  5.     --f:EnableMouse(true)
  6.     f:RegisterForClicks("AnyUp")
  7.  
  8.     --f:SetAttribute("allowVehicleTarget", true)
  9.     f:HookScript("OnAttributeChanged", sRaidFrames_OnAttributeChanged)
  10.  
  11.     f:SetScript("OnEnter", function(this)
  12.         if sRaidFrames:QueryTooltipDisplay(sRaidFrames.opt.UnitTooltipMethod) then
  13.             sRaidFrames:UnitTooltip(this)
  14.         end
  15.     end)
  16.     f:SetScript("OnLeave", function(this)
  17.         GameTooltip:Hide()
  18.     end)
  19.  
  20.     f.title = f:CreateFontString(nil, "ARTWORK")
  21.     f.title:SetFontObject(GameFontNormalSmall)
  22.     f.title:SetJustifyH("LEFT")
  23.  
  24.     f.auraFrames = {}
  25.  
  26.     for i = 1, 3 do
  27.         local auraFrame = CreateFrame("Button", nil, f, BackdropTemplateMixin and "BackdropTemplate")
  28.         auraFrame.texture = auraFrame:CreateTexture(nil, "ARTWORK")
  29.         auraFrame.texture:SetAllPoints(auraFrame);
  30.         auraFrame.count = auraFrame:CreateFontString(nil, "OVERLAY")
  31.         auraFrame.count:SetFontObject(GameFontHighlightSmallOutline)
  32.         auraFrame.count:SetJustifyH("CENTER")
  33.         auraFrame.count:SetPoint("CENTER", auraFrame, "CENTER", 0, 0);
  34.         auraFrame:SetScript("OnEnter", function (this)
  35.             if sRaidFrames:QueryTooltipDisplay(sRaidFrames.opt.DebuffTooltipMethod) then
  36.                 GameTooltip:SetOwner(this)
  37.                 GameTooltip:SetUnitAura(this.unitid, this.auraid, this.filter)
  38.             end
  39.         end)
  40.  
  41.         auraFrame:SetScript("OnClick", function (this)
  42.             if IsAltKeyDown() then
  43.                 -- TODO: Blacklist
  44.             end
  45.         end)
  46.  
  47.         auraFrame:SetScript("OnLeave", function(this)
  48.                 GameTooltip:Hide()
  49.         end)
  50.  
  51.         auraFrame:Hide()
  52.  
  53.         local debuffTimer = auraFrame:CreateFontString(nil, "ARTWORK")
  54.         debuffTimer:SetFont("Fonts\\FRIZQT__.TTF", 12, "OUTLINE")
  55.         debuffTimer.fontsize = 12
  56.         debuffTimer:SetTextColor(0.7, 0.7, 0)
  57.         debuffTimer:ClearAllPoints()
  58.         debuffTimer:SetAllPoints(auraFrame)
  59.  
  60.         tinsert(f.auraFrames, auraFrame)
  61.         f["aura"..i] = auraFrame
  62.     end
  63.    
  64.     local texture = Media:Fetch("statusbar", self.opt.Texture)
  65.  
  66.     f.hpbar = CreateFrame("StatusBar", nil, f, BackdropTemplateMixin and "BackdropTemplate")
  67.     f.hpbar:SetStatusBarTexture(texture)
  68.     f.hpbar:SetMinMaxValues(0,100)
  69.     f.hpbar:SetValue(0)
  70.  
  71.     f.hpbar.text = f.hpbar:CreateFontString(nil, "ARTWORK")
  72.     f.hpbar.text:SetFontObject(GameFontHighlightSmall)
  73.     f.hpbar.text:SetJustifyH("CENTER")
  74.  
  75.     local color = self.opt.HealthTextColor
  76.     f.hpbar.text:SetTextColor(color.r, color.g, color.b, color.a)
  77.  
  78.     f.mpbar = CreateFrame("StatusBar", nil, f, BackdropTemplateMixin and "BackdropTemplate")
  79.     f.mpbar:SetStatusBarTexture(texture)
  80.     f.mpbar:SetMinMaxValues(0,100)
  81.     f.mpbar:SetValue(0)
  82.  
  83.     f.statustext = f.mpbar:CreateFontString(nil, "ARTWORK")
  84.     f.statustext:SetFontObject(GameFontHighlightSmall)
  85.     f.statustext:SetJustifyH("CENTER")
  86.  
  87.     --f:ClearAllPoints()
  88.     self:SetWHP(f, 80, 34)
  89.     self:SetWHP(f.title, f:GetWidth() - 6, 13, "TOPLEFT", f, "TOPLEFT",  3, -3)
  90.     self:SetWHP(f.aura1, 13, 13, "TOPRIGHT", f, "TOPRIGHT", -3, -3)
  91.     self:SetWHP(f.aura2, 13, 13, "RIGHT", f.aura1, "LEFT", 0, 0)
  92.     self:SetWHP(f.aura3, 13, 13, "RIGHT", f.aura2, "LEFT", 0, 0)
  93.     self:SetWHP(f.hpbar, f.title:GetWidth(), 12, "TOPLEFT", f.title, "BOTTOMLEFT", 0, 0)
  94.     self:SetWHP(f.mpbar, f.title:GetWidth(), 4, "TOPLEFT", f.hpbar, "BOTTOMLEFT", 0, 0)
  95.  
  96.     self:SetWHP(f.hpbar.text, f.hpbar:GetWidth(), f.hpbar:GetHeight(), "CENTER", f.hpbar, "CENTER", 0, 0)
  97.     self:SetWHP(f.statustext, f.mpbar:GetWidth(), f.mpbar:GetHeight(), "CENTER", f.mpbar, "CENTER", 0, 0)
  98.  
  99.     f:SetBackdrop({
  100.         bgFile = Media:Fetch("background", sRaidFrames.opt.BackgroundTexture),
  101.         tile = true,
  102.         tileSize = 8,
  103.         edgeFile = Media:Fetch("border", sRaidFrames.opt.BorderTexture),
  104.         edgeSize = 8,
  105.         insets = { left = 2, right = 2, top = 2, bottom = 2 }
  106.     })
  107.                            
  108.     f:SetBackdropColor(self.opt.BackgroundColor.r, self.opt.BackgroundColor.g, self.opt.BackgroundColor.b, self.opt.BackgroundColor.a)
  109.     f:SetBackdropBorderColor(self.opt.BorderColor.r, self.opt.BorderColor.g, self.opt.BorderColor.b, self.opt.BorderColor.a)
  110.     f.hpbar.text:SetTextColor(self.opt.HealthTextColor.r, self.opt.HealthTextColor.g, self.opt.HealthTextColor.b, self.opt.HealthTextColor.a)
  111.  
  112.     --f:Hide();
  113.  
  114.     tinsert(self.frames, f)
  115.     ShouldUpdateFrameCache = true
  116.  
  117.     ClickCastFrames = ClickCastFrames or {}
  118.     ClickCastFrames[f] = true
  119. end[/code]

It's line 98 in that which causes the first error, but there are more examples in the full code.

Any advice or pointing in the right direction is greatly appreciated. Thanks!
  Reply With Quote