Hello guys.
I need some help with the following. Here's what I need it ( the code ) to do:
- Hide if out of combat ( this works so far )
- show if I have a target ( this isn't )
Lua Code:
local f = CreateFrame('frame', nil, nil, 'SecureHandlerStateTemplate')
f:SetFrameRef('PlayerFrame', PlayerFrame)
f:SetFrameRef('TargetFrame', TargetFrame)
f:SetFrameRef('FocusFrame', FocusFrame)
f:SetFrameRef('ComboFrame', ComboFrame)
f:SetAttribute('_onstate-combat', [=[ -- Securely toggle visibility in combat
if newstate == 'show' then
self:GetFrameRef('PlayerFrame'):Show()
if UnitExists('target') then
self:GetFrameRef('TargetFrame'):Show()
self:GetFrameRef('PlayerFrame'):Show()
end
if UnitExists('focus') then
self:GetFrameRef('FocusFrame'):Show()
end
else
self:GetFrameRef('PlayerFrame'):Hide()
self:GetFrameRef('TargetFrame'):Hide()
self:GetFrameRef('FocusFrame'):Hide()
self:GetFrameRef('ComboFrame'):Hide()
end
]=])
RegisterStateDriver(f, 'combat', '[combat] show; hide', '[target, exists] show')
local function HideFrame(self) -- Insecurely hide out of combat if shown
if not InCombatLockdown() or not UnitExists("target") then self:Hide() end
end
PlayerFrame:HookScript('OnShow', HideFrame)
TargetFrame:HookScript('OnShow', HideFrame)
FocusFrame:HookScript('OnShow', HideFrame)
ComboFrame:HookScript('OnShow', HideFrame)
f:SetScript('OnEvent', function(self, event)
if GetComboPoints('player', 'target') > 0 then -- Show ComboFrame upon entering combat if we have points
ComboFrame:Show()
end
end)
f:RegisterEvent('PLAYER_REGEN_DISABLED')