⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 en_buff.lua

📁 时间太紧了
💻 LUA
字号:
EUF_MAX_PARTY_DEBUFFS = 16;
EUF_MAX_PARTY_BUFFS = 16;
local extraRefreshBuffs = RefreshBuffs;
function RefreshBuffs(frame, param2, param3)
    if(frame == PetFrame) then
	PetFrame_RefreshBuffs();
	return;
    end
    if(frame == TargetofTargetFrame or frame == TargetFrame) then
	return extraRefreshBuffs(frame, param2, param3);
    end
    if(frame ~= PartyMemberFrame1 and frame ~= PartyMemberFrame2 and frame ~= PartyMemberFrame3 and frame ~= PartyMemberFrame4) then
          return;
    end
    local id;
    local buffButtonName;
    local buffImage;
    local idx;

    id = frame:GetID();

    idx = 1;
    for i=1, 16 do
        if ( idx <= EUF_MAX_PARTY_BUFFS ) then
            buffImage = UnitBuff("party"..id, i);
            if ( buffImage ) then
                buffButtonName = "EUF_PartyBuffFrame"..id.."Buff"..idx;
                getglobal(buffButtonName.."Icon"):SetTexture(buffImage);
                getglobal(buffButtonName):SetID(i);
                getglobal(buffButtonName):Show();
                idx = idx + 1;
            end
        end
    end
    for i=idx, EUF_MAX_PARTY_BUFFS do
        getglobal("EUF_PartyBuffFrame"..id.."Buff"..i):Hide();
    end

    idx = 1;
    for i=1, 16 do
        if ( idx <= EUF_MAX_PARTY_DEBUFFS ) then
            buffImage = UnitDebuff("party"..id, i);
            if ( buffImage ) then
                buffButtonName = "EUF_PartyBuffFrame"..id.."DeBuff"..idx;
                getglobal(buffButtonName.."Icon"):SetTexture(buffImage);
                getglobal(buffButtonName):SetID(i);
                getglobal(buffButtonName):Show();
                idx = idx + 1;
            end
        end
    end
    for i=idx, EUF_MAX_PARTY_DEBUFFS do
        getglobal("EUF_PartyBuffFrame"..id.."DeBuff"..i):Hide();
    end

end

function PetFrame_RefreshBuffs()
    local buffButtonName;
    local buffImage;
    local idx;

    idx = 1;
    for i=1, 16 do
        if ( idx <= EUF_MAX_PARTY_BUFFS ) then
            buffImage = UnitBuff("pet", i);
            if ( buffImage ) then
                buffButtonName = "EUF_PetBuffFrameBuff"..idx;
                getglobal(buffButtonName.."Icon"):SetTexture(buffImage);
                getglobal(buffButtonName):SetID(i);
                getglobal(buffButtonName):Show();
                idx = idx + 1;
            end
        end
    end
    for i=idx, EUF_MAX_PARTY_BUFFS do
        getglobal("EUF_PetBuffFrameBuff"..i):Hide();
    end

    idx = 1;
    for i=1, 16 do
        if ( idx <= EUF_MAX_PARTY_DEBUFFS ) then
            buffImage = UnitDebuff("pet", i);
            if ( buffImage ) then
                buffButtonName = "EUF_PetBuffFrameDeBuff"..idx;
                getglobal(buffButtonName.."Icon"):SetTexture(buffImage);
                getglobal(buffButtonName):SetID(i);
                getglobal(buffButtonName):Show();
                idx = idx + 1;
            end
        end
    end
    for i=idx, EUF_MAX_PARTY_DEBUFFS do
        getglobal("EUF_PetBuffFrameDeBuff"..i):Hide();
    end

end

function PartyMemberFrame_RefreshPetBuffs(id)
    local buffButtonName;
    local buffImage;
    local idx;

    if ( not id ) then
        id = this:GetID();
    end

    idx = 1;
    for i=1, 16 do
        if ( idx <= EUF_MAX_PARTY_BUFFS ) then
            buffImage = UnitBuff("partypet"..id, i);
            if ( buffImage ) then
                buffButtonName = "EUF_PartyPetBuffFrame"..id.."Buff"..idx;
                getglobal(buffButtonName.."Icon"):SetTexture(buffImage);
                getglobal(buffButtonName):SetID(i);
                getglobal(buffButtonName):Show();
                idx = idx + 1;
            end
        end
    end
    for i=idx, EUF_MAX_PARTY_BUFFS do
        getglobal("EUF_PartyPetBuffFrame"..id.."Buff"..i):Hide();
    end

    idx = 1;
    for i=1, 16 do
        if ( idx <= EUF_MAX_PARTY_DEBUFFS ) then
            buffImage = UnitDebuff("partypet"..id, i);
            if ( buffImage ) then
                buffButtonName = "EUF_PartyPetBuffFrame"..id.."DeBuff"..idx;
                getglobal(buffButtonName.."Icon"):SetTexture(buffImage);
                getglobal(buffButtonName):SetID(i);
                getglobal(buffButtonName):Show();
                idx = idx + 1;
            end
        end
    end
    for i=idx, EUF_MAX_PARTY_DEBUFFS do
        getglobal("EUF_PartyPetBuffFrame"..id.."DeBuff"..i):Hide();
    end

end

function PartyMemberBuffTooltip_Update(isPet)
end

-- TargetFrameBuff --
function EUF_TargetDebuffButton_Update()
    ORG_TargetDebuffButton_Update();
    if EUF_CurrentOptions["TARGET16BUFFS"] ~= 1 then
        return;
    end;

	local buff, buffButton;
	local button;
	local numBuffs = 0;
	for i=1, MAX_PARTY_TOOLTIP_BUFFS do
		buff = UnitBuff("target", i);
		button = getglobal("TargetFrameBuff"..i);
		if ( buff ) then
			getglobal("TargetFrameBuff"..i.."Icon"):SetTexture(buff);
			button:Show();
			numBuffs = numBuffs + 1;
		else
			button:Hide();
		end
		button.id = i;
	end

    local limit;
	if ( UnitIsFriend("player", "target") ) then
		limit = 6;
		TargetFrameBuff1:SetPoint("TOPLEFT", "TargetFrame", "BOTTOMLEFT", 5, 32);
		if ( numBuffs >= 5 and numBuffs < 10 )then
			if ( TargetofTargetFrame:IsShown() ) then
				TargetFrameDebuff1:SetPoint("TOPLEFT", "TargetFrameBuff6", "BOTTOMLEFT", 0, -2);
			else
				TargetFrameDebuff1:SetPoint("TOPLEFT", "TargetFrameBuff7", "BOTTOMLEFT", 0, -2);
			end
		elseif ( TargetofTargetFrame:IsShown() and numBuffs >= 10 ) then
			TargetFrameDebuff1:SetPoint("TOPLEFT", "TargetFrameBuff11", "BOTTOMLEFT", 0, -2);
		else
			TargetFrameDebuff1:SetPoint("TOPLEFT", "TargetFrameBuff1", "BOTTOMLEFT", 0, -2);
		end
	end
		
    local buffWrap;
    local buffSize;
    buffSize = 21;
    if ( TargetofTargetFrame:IsShown() ) then
        if ( numBuffs > 5 ) then
            buffSize = 17;
        end
        buffWrap = 5;
    else
        buffWrap = 6;
    end
    if ( numBuffs >= buffWrap ) then
        buffSize = 17;
    end
    for i=1, 16 do
        if ( UnitIsFriend("player", "target") ) then
            button = getglobal("TargetFrameBuff"..i);
        end
        button:SetWidth(buffSize);
        button:SetHeight(buffSize);
    end

    getglobal("TargetFrameBuff"..buffWrap):ClearAllPoints();
    getglobal("TargetFrameBuff"..buffWrap):SetPoint("LEFT", getglobal("TargetFrameBuff"..(buffWrap - 1)), "RIGHT", 3, 0);
    getglobal("TargetFrameBuff"..(buffWrap + 1)):ClearAllPoints();
    getglobal("TargetFrameBuff"..(buffWrap + 1)):SetPoint("TOPLEFT", "TargetFrameBuff1", "BOTTOMLEFT", 0, -2);
    getglobal("TargetFrameBuff"..(buffWrap + 2)):ClearAllPoints();
   getglobal("TargetFrameBuff"..(buffWrap + 2)):SetPoint("LEFT", getglobal("TargetFrameBuff"..(buffWrap + 1)), "RIGHT", 3, 0);
    if ( buffWrap == 5 ) then
        TargetFrameBuff11:ClearAllPoints();
        TargetFrameBuff11:SetPoint("TOPLEFT", "TargetFrameBuff6", "BOTTOMLEFT", 0, -2);
    else
        TargetFrameBuff11:ClearAllPoints();
        TargetFrameBuff11:SetPoint("LEFT", "TargetFrameBuff10", "RIGHT", 3, 0);
    end
end

ORG_TargetDebuffButton_Update = TargetDebuffButton_Update;
TargetDebuffButton_Update = EUF_TargetDebuffButton_Update;

function EUF_TargetFrame_OnHide()
    ORG_TargetFrame_OnHide();
    for i=1, MAX_PARTY_TOOLTIP_BUFFS do
        getglobal("TargetFrameBuff"..i):Hide();
    end
end;

ORG_TargetFrame_OnHide = TargetFrame_OnHide;
TargetFrame_OnHide = EUF_TargetFrame_OnHide;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -