Hello,
Hoping someone experienced with WoW addons can help add/edit the following script. I followed the instructions with this link. Blizzard frames that are hidden out-of-combat
It nearly has everything I want, except one thing. When I target out of combat I don’t want the unit frames to appear. I only want it to appear in combat, with its mouse-over feature included in the script.
local animationTimeSeconds = 0.15 --amount of seconds it takes to make a frame visible/invisible.
local f = CreateFrame(“Frame”)
local f2 = CreateFrame(“Frame”);
local f3 = CreateFrame(“Frame”);
f:RegisterEvent(“PLAYER_TARGET_CHANGED”) – Run code when player’s target changed
f2:RegisterEvent(“PLAYER_REGEN_DISABLED”) --player entered combat
f3:RegisterEvent(“PLAYER_REGEN_ENABLED”)–player left combat
local override = false;
local animating = false;
local main = function(self, event, …) --target changed event
if (DropDownList1Button2ExpandArrow:GetRight() == nil) then --init mouse menu
PlayerFrame:Click(“RightButton”);
DropDownList1Button16:Click();
DropDownList1:SetScript(“OnShow”, --keep mouse menu hidden when player frame is hidden
function()
if(PlayerFrame:GetAlpha() == 0) then
DropDownList1:Hide();
end
end)
end
if(UnitName(“target”) == nil or UnitName(“target”) == UnitName(“player”)) then --if player has no target
fadeOut(TargetFrame)
fadeOut(TargetFrameToT)
fadeOut(PetFrame)
if (not override) then
fadeOut(PlayerFrame)
end
else --if player has target
fadeIn(PlayerFrame)
fadeIn(TargetFrame)
fadeIn(TargetFrameToT)
fadeIn(PetFrame)
end
end
f:SetScript(“OnEvent”, main)
C_Timer.NewTicker(0.25, function()
if (PlayerFrame:IsMouseOver()) then
override = true;
fadeIn(PlayerFrame);
else
override = false;
if (UnitName(“target”) == nil or UnitName(“target”) == UnitName(“player”)) then
fadeOut(PlayerFrame);
end
end
end)
f2:SetScript(“OnEvent”, function(self, event, …)
fadeIn(PlayerFrame)
end)
f3:SetScript(“OnEvent”, function(self, event, …)
if(not override and (UnitName(“target”) == nil or UnitName(“target”) == UnitName(“player”))) then
fadeOut(PlayerFrame)
end
end)
PlayerFrame:SetAlpha(0) --hide frames when client loads
TargetFrame:SetAlpha(0)
TargetFrameToT:SetAlpha(0)
PetFrame:SetAlpha(0)
DropDownList1:Hide();
function fadeIn(frame)
if (frame:GetAlpha() < 1 and not animating) then
animating = true;
local ticker = C_Timer.NewTicker(animationTimeSeconds / 10, function()
frame:SetAlpha(frame:GetAlpha()+0.1)
end, 10)
animating = false;
end
end
function fadeOut(frame)
if (frame:GetAlpha() > 0 and not animating) then
animating = true;
local ticker = C_Timer.NewTicker(animationTimeSeconds / 10, function()
frame:SetAlpha(frame:GetAlpha()-0.1)
end, 10)
animating = false;
end
end