Plater Nameplates

Plater Nameplates

64M Downloads

attempt to index local 'iconFrame'

Hyphie24 opened this issue ยท 6 comments

commented

Game and Plater version
Which is the game version and Plater version you're using?
Full /plater version output please.
Plater version info:
Plater-v584a-Retail - DF v561 - 11.0.2

Describe the bug

  • Steps to Reproduce (what did you do to make the bug happen): Attacking enemies causes iconFrame error

  • Result (what happens when you follow the steps above): using profile "Jundies" attacking mobs causing iconFrame

  • Expected (what you think the expected behavior would be when following the steps): unknown

  • When the bug started (a date, wow path release, details update, etc)? 11.0.2 Wednesday 8/14

  • Additional information:

Lua Error
Post here lua errors, if you aren't getting any, use /console scriptErrors 1

3953x Plater/Plater_Auras.lua:2000: attempt to index local 'iconFrame' (a nil value)
[string "@Plater/Plater_Auras.lua"]:2000: in function `AddExtraIcon'
[string "@Plater/Plater_Auras.lua"]:2330: in function `UpdateAuras_Automatic'
[string "@Plater/Plater.lua"]:6344: in function `NameplateTick'
[string "@Plater/Plater.lua"]:3777: in function `func'
[string "@Plater/Plater.lua"]:3963: in function <Plater/Plater.lua:3959>

Locals:
self = NamePlate11PlaterUnitFrameBuffFrame1 {
 NextAuraIcon = 1
 unitFrame = NamePlate11PlaterUnitFrame {
 }
 amountAurasShown = 0
 HasDebuff = false
 isNameplate = true
 namePlateUnitReaction = 3
 ExtraIconFrame = NamePlate11PlaterUnitFrameExtraIconRow {
 }
 unit = "nameplate5"
 HasBuff = false
 healthBar = NamePlate11PlaterUnitFrameHealthBar {
 }
 FadeAnimation = AnimationGroup {
 }
 Name = "Main"
 AuraCache = <table> {
 }
 PlaterBuffList = <table> {
 }
 BuffFrame2 = NamePlate11PlaterUnitFrameBuffFrame2 {
 }
}
spellName = "Psychic Scream"
icon = 136184
applications = 0
debuffType = "Magic"
duration = 8
expirationTime = 389380.783000
sourceUnit = nil
isStealable = false
nameplateShowPersonal = false
spellId = 8122
isBuff = false
filter = "HARMFUL"
id = 47214
modRate = 1
_ = nil
sourceUnitClass = nil
sourceUnitName = nil
borderColor = <table> {
 1 = 1
 2 = 1
 3 = 1
 4 = 1
}
profile = <table> {
 target_shady_combat_only = false
 ui_parent_buff_special_level = 0
 extra_icon_use_blizzard_border_color = false
 aura_sort = true
 npcs_renamed = <table> {
 }
 bossmod_support_bars_text_enabled = true
 saved_cvars_last_change = <table> {
 }
 aura_cache_by_name = <table> {
 }
 url = "https://wago.io/ak3iS95aa/103"
 hover_highlight = true
 blizzard_nameplate_font_override_enabled = true
 show_shield_prediction = true
 aura_border_thickness_personal = 1
 health_cutoff_upper = true
 stacking_nameplates_enabled = true
 aura2_y_offset = 1.500000
 spell_animations_scale = 1.250000
 aura_timer_text_anchor = <table> {
 }
 extra_icon_caster_size = 7
 buffs_on_aura2 = true
 health_selection_overlay = "PlaterFocus"
 expansion_triggerwipe = <table> {
 }
 show_aggro_glow = true
 cast_statusbar_color_nointerrupt = <table> {
 }
 show_interrupt_author = true
 bossmod_support_bars_enabled = false
 hide_blizzard_castbar = false
 extra_icon_cooldown_reverse = true
 health_cutoff_extra_glow = false
 use_ui_parent_just_enabled = false
 npc_cache = <table> {
 }
 extra_icon_timer_decimals = true
 aura_grow_direction = 1
 indicator_anchor = <table> {
 }
 hide_name_on_game_objects = false
 health_selection_overlay_alpha = 0
 aura_stack_shadow_color = <table> {
 }
 minor_height_scale = 1.000000
 culling_distance = 100
 reopoen_options_panel_on_tab = false
 blizzard_nameplate_large_font_outline = "OUTLINE"
 blizzard_nameplate_font_outline = "OUTLINE"
 aura_padding = 0
 indicator_worldboss = true
 last_news_time = 1721524228
 range_check_power_bar_alpha_friendlies = 1
 cast_statusbar_fadeout_time = 0.500000
 aura_stack_shadow_color_offset = <table> {
 }
 aura_stack_size = 8
 cast_audiocue_cooldown = 0.100000
 aura_timer_decimals = false
 range_check_health_bar_alpha = 0.850000
 aura_height2 = 16
 aura_show_crowdcontrol = true
 castbar_target_shadow_color_offset = <table> {
 }
 cast_colors = <table> {
 }
 health_cutoff = true
 aura_border_colors = <table> {
 }
 ui_parent_cast_strata = "BACKGROUND"
 hook_data_trash = <table> {
 }
 script_auto_imported = <table> {
 }
 show_healthbars_on_softinteract = false
 extra_icon_anchor = <table> {
 }
 extra_icon_wide_icon = false
 ui_parent_buff2_strata = "BACKGROUND"
 use_playerclass_color = true
 range_check_alpha = 0.900000
 semver = "5.0.3"
 aura_border_thickness = 1
 health_cutoff_hide_divisor = false
 aura_frame2_anchor = <table> {
 }
 use_name_translit = true
 aura_alpha = 1
 auto_toggle_friendly = <table> {
 }
 aura_cooldown_edge_texture = "Interface\AddOns\Plater\images\cooldown_edge_2"
 castbar_icon_x_offset = 0
 show_softinteract_icons = false
 debuff_show_cc = true
 extra_icon_height = 20
 extra_icon_show_purge = false
 transparency_behavior = 2
 spell_animations = false
 debuff_show_cc_border = <table> {
 }
 aura_consolidate = true
 shadowMode = 1
 auto_toggle_combat_enabled = false
 extra_icon_width = 21
 health_statusbar_texture = "Details Flat"
 hook_auto_imported = <table> {
 }
 extra_icon_border_color = <table> {
 }
 minor_width_scale = 1.000000
 indicator_pet = false
 captured_spells = <table> {
 }
 aura_frame1_anchor = <table> {
 }
 range_check_cast_bar_alpha_friendlies = 1
 auto_toggle_enemy_enabled

Screenshots
Post images of the bug if necessary.

Other Information
If necessary, add more info here.
doesn't show at login, happens randomly at a random time when attacking mobs

commented

Thank you. Any other errors in BugSack?
You might have a mod for Buff Special on the modding tab. If that's the case, could you try disabling that, do a /reload and try again?

commented

A screenshot of your Buff Special tab please.
If possible, please export your profile to wago and link it here, that would make things a bit easier.

commented
commented

I did have a buff special mod (don't know if it was part of jundies originally or just there) disabled and so far not getting error

here's the code in case it's something in there, I don't believe I need that mod anyways, from what I can tell the plater profile is fine

function (modTable)
    
    local function BuffSepcialFormat ()
        local DF = _G ["DetailsFramework"]
        DF.IconMixin.SetIcon = function (self, spellId, borderColor, startTime, duration, forceTexture, descText, count, debuffType, caster, canStealOrPurge, spellName, isBuff, modRate)
            
            local actualSpellName, _, spellIcon = C_Spell.GetSpellInfo (spellId)
            
            if forceTexture then
                spellIcon = forceTexture
            end
            
            local spellName = spellName or actualSpellName or "unknown_aura"
            local modRate = modRate or 1
            
            if (spellIcon) then
                local profile = Plater.db.profile
                local iconFrame = self:GetIcon()
                iconFrame.Texture:SetTexture (spellIcon)
                iconFrame.Texture:SetTexCoord (unpack (self.options.texcoord))
                
                local size = modTable.config.BSborderth
                
                if (not iconFrame.PixelPerfectBorder) then
                    iconFrame.PixelPerfectBorder = CreateFrame ("frame", nil, iconFrame, "NamePlateFullBorderTemplate")
                end
                
                iconFrame.Border:Hide()
                iconFrame.PixelPerfectBorder:SetVertexColor (Plater:ParseColors (borderColor))
                iconFrame.PixelPerfectBorder:SetBorderSizes (size, size, size, size)
                iconFrame.PixelPerfectBorder:UpdateSizes()
                
                iconFrame.Texture:SetSize(profile.extra_icon_width - size/2, profile.extra_icon_height - size/2)
                iconFrame.Texture:ClearAllPoints()
                iconFrame.Texture:SetAllPoints()
                
                if (startTime) then
                    CooldownFrame_Set (iconFrame.Cooldown, startTime, duration, true, true)
                    
                    if (self.options.show_text) then
                        iconFrame.CountdownText:Show()
                        
                        local now = GetTime()
                        iconFrame.timeRemaining = (startTime + duration - now) / modRate
                        iconFrame.expirationTime = startTime + duration
                        
                        local formattedTime = (iconFrame.timeRemaining > 0) and self.options.decimal_timer and iconFrame.parentIconRow.FormatCooldownTimeDecimal(iconFrame.timeRemaining) or iconFrame.parentIconRow.FormatCooldownTime(iconFrame.timeRemaining) or ""
                        iconFrame.CountdownText:SetText (formattedTime)
                        
                        iconFrame.CountdownText:SetPoint (self.options.text_anchor or "center", iconFrame, self.options.text_rel_anchor or "center", self.options.text_x_offset or 0, self.options.text_y_offset or 0)
                        DF:SetFontSize (iconFrame.CountdownText, self.options.text_size)
                        DF:SetFontFace (iconFrame.CountdownText, self.options.text_font)
                        DF:SetFontOutline (iconFrame.CountdownText, self.options.text_outline)
                        
                        if modTable.config.BScbt then
                            if (iconFrame.timeRemaining/duration < 0.225) then
                                Plater:SetFontColor (iconFrame.CountdownText, "red")
                            elseif (iconFrame.timeRemaining/duration < 0.45) then
                                Plater:SetFontColor (iconFrame.CountdownText, "darkorange")
                            else
                                Plater:SetFontColor (iconFrame.CountdownText, modTable.config.BStimer_color)
                            end 
                        else
                            Plater:SetFontColor (iconFrame.CountdownText, modTable.config.BStimer_color)
                        end
                        
                        if self.options.on_tick_cooldown_update then
                            iconFrame.lastUpdateCooldown = now
                            iconFrame:SetScript("OnUpdate", self.OnIconTick)
                        else
                            iconFrame:SetScript("OnUpdate", nil)
                        end
                        
                    else
                        iconFrame:SetScript("OnUpdate", nil)
                        iconFrame.CountdownText:Hide()
                    end
                    
                    iconFrame.Cooldown:SetReverse (self.options.cooldown_reverse)
                    iconFrame.Cooldown:SetDrawSwipe (self.options.cooldown_swipe_enabled)
                    iconFrame.Cooldown:SetEdgeTexture (self.options.cooldown_edge_texture)
                    iconFrame.Cooldown:SetHideCountdownNumbers (self.options.surpress_blizzard_cd_timer)
                else
                    iconFrame.timeRemaining = nil
                    iconFrame.expirationTime = nil
                    iconFrame:SetScript("OnUpdate", nil)
                    iconFrame.CountdownText:Hide()
                end
                
                if (descText and self.options.desc_text) then
                    iconFrame.Desc:Show()
                    iconFrame.Desc:SetText (descText.text)     
                    iconFrame.Desc:SetTextColor (DF:ParseColors (descText.text_color or self.options.desc_text_color))
                    local Anchor = {
                        side = modTable.config.Descanchor, 
                        x = modTable.config.Descxoff, 
                        y = modTable.config.Descyoff,
                    }      
                    Plater.SetAnchor (iconFrame.Desc, Anchor)
                    DF:SetFontSize (iconFrame.Desc, descText.text_size or self.options.desc_text_size)
                    DF:SetFontFace (iconFrame.Desc, self.options.desc_text_font)
                    DF:SetFontOutline (iconFrame.Desc, self.options.desc_text_outline)
                else
                    iconFrame.Desc:Hide()
                end
                
                
                if (count and count > 1 and self.options.stack_text) then
                    iconFrame.StackText:Show()
                    iconFrame.StackText:SetText (count)
                    iconFrame.StackText:SetTextColor (DF:ParseColors (modTable.config.BSstack_color))
                    iconFrame.StackText:SetPoint (self.options.stack_text_anchor or "center", iconFrame, self.options.stack_text_rel_anchor or "bottomright", self.options.stack_text_x_offset or 0, self.options.stack_text_y_offset or 0)
                    DF:SetFontSize (iconFrame.StackText, self.options.stack_text_size)
                    DF:SetFontFace (iconFrame.StackText, self.options.stack_text_font)
                    DF:SetFontOutline (iconFrame.StackText, self.options.stack_text_outline)
                else
                    iconFrame.StackText:Hide()
                end
                
                PixelUtil.SetSize (iconFrame, self.options.icon_width, self.options.icon_height)
                iconFrame:Show()
                
                --> update the size of the frame
                self:SetWidth ((self.options.left_padding * 2) + (modTable.config.BSpadding * (self.NextIcon-2)) + (self.options.icon_width * (self.NextIcon - 1)))
                self:SetHeight (self.options.icon_height + (self.options.top_padding * 2))
                
                --> make information available
                iconFrame.spellId = spellId
                iconFrame.startTime = startTime
                iconFrame.duration = duration
                iconFrame.count = count
                iconFrame.debuffType = debuffType
                iconFrame.caster = caster
                iconFrame.canStealOrPurge = canStealOrPurge
                iconFrame.isBuff = isBuff
                iconFrame.spellName = spellName
                
                iconFrame.identifierKey = nil -- only used for "specific" add/remove
                
                --add the spell into the cache
                self.AuraCache [spellId or -1] = true
                self.AuraCache [spellName] = true
                self.AuraCache.canStealOrPurge = self.AuraCache.canStealOrPurge or canStealOrPurge
                self.AuraCache.hasEnrage = self.AuraCache.hasEnrage or debuffType == "" --yes, enrages are empty-string...
                
                --> show the frame
                self:Show()
                
                return iconFrame
            end
        end
    end    
    
    -- exchange formatting:
    
    function modTable.hookTimeFormat()
        BuffSepcialFormat ()
    end
    
    function modTable.updateExisting(unitFrame)
        BuffSepcialFormat ()
        unitFrame.ExtraIconFrame:SetOption ("icon_padding", modTable.config.BSpadding)
    end
    
    modTable.hookTimeFormat()
    for _, plateFrame in ipairs (Plater.GetAllShownPlates()) do
        modTable.updateExisting(plateFrame.unitFrame)
    end
    
end
commented

Quite as expected then: broken mod. you might want to check if there is an update for the mod and/or profile available on wago and leave a note if not.

commented

sounds good, thank you for the help!