WoWInterface - View Single Post - Help with code to apply !Beautycase borders
View Single Post
02-14-20, 10:10 AM   #1
A Frostmaul Preserver
lerb's Avatar
AddOn Author - Click to view addons
Join Date: Aug 2008
Posts: 262
Help with code to apply !Beautycase borders


I'm scratching my head pretty badly trying to set up a simple (although advanced for me) addon to apply !Beautycase borders to various frames.
Right now I'm only focusing on Pitbull4 "player" and "target", as well as a custom panel created with kgPanels.
I got the frame names using the /fstack command, so I am sure they are correct.

Much appreciated if anyone would like to help me not go bald with this.

Here is the TOC for my addon:

## Interface: 80300
## Title: zBorders
## Notes: Module used by LerbUI to skin borders. Built upon and an extension of !Beautycase, created by Neav.
## Author: Lerb
## Dependencies: !Beautycase, Pitbull4, kgPanels, kgPanelsConfig
## Version: 8.3.0-1

And here is the code inside zBorders.lua:

Lua Code:
  1. local f = CreateFrame("Frame")
  2. f:RegisterEvent("VARIABLES_LOADED")
  3. f:RegisterEvent("ADDON_LOADED")
  4. f:RegisterEvent("PLAYER_ENTERING_WORLD")
  6. f:SetScript("OnEvent", function(self)
  8.     -- Pitbull4 borders --
  10.     if "Pitbull4" then
  11.         f:SetScript("OnUpdate", function(self)
  12.             for _, pitframes in pairs({
  13.                 PitBull4_Frames_Player,
  14.                 PitBull4_Frames_Target,
  15.             }) do
  16.                 if pitframes:IsShown() then
  17.                     pitframes:CreateBeautyBorder(14)
  18.                     pitframes:SetBeautyBorderPadding(3)
  19.                 end
  20.             end
  21.         end)
  22.     end
  24.     -- kgPanels borders --
  26.     if "kgPanelsConfig" then
  27.         kgPanel1:CreateBeautyBorder(14)
  28.         kgPanel1:SetBeautyBorderPadding(3)
  29.     end
  31. end)

When I log on, I am presented with the error below (only one error, no "spam"), but all frames are actually skinned (border applied). Does this has something to do with load order? I thought setting dependencies would be enough for that.

**EDIT** If I remove the code for kgPanels, it works great (borders on Pitbull4, no errors), so it has something to do with those 4 lines of code is my guess.

**EDIT2** I've also tried using if IsAddOnLoaded("Pitbull4") then instead of just if "Pitbull4" then, but the results are exactly the same. I don't know which of these are the "norm" or the "best" to use?

Error (the lower one is from Bugger):

Message: Interface\AddOns\zBorders\zBorders.lua:27: attempt to index global 'kgPanel1' (a nil value)
Time: Fri Feb 14 17:08:34 2020
Count: 4
Stack: Interface\AddOns\zBorders\zBorders.lua:27: attempt to index global 'kgPanel1' (a nil value)
[string "@Interface\AddOns\zBorders\zBorders.lua"]:27: in function <Interface\AddOns\zBorders\zBorders.lua:6>

Locals: self = <unnamed> {
 0 = <userdata>
(*temporary) = nil
(*temporary) = nil
(*temporary) = "OnUpdate"
(*temporary) = 83914
(*temporary) = "attempt to index global 'kgPanel1' (a nil value)"
f = <unnamed> {
 0 = <userdata>

4x zBorders\zBorders-8.3.0-1.lua:27: attempt to index global 'kgPanel1' (a nil value)
[string "@zBorders\zBorders-8.3.0-1.lua"]:27: in function <zBorders\zBorders.lua:6>

Last edited by lerb : 02-14-20 at 12:20 PM.
  Reply With Quote