Цитата Сообщение от Dubscron Посмотреть сообщение
В общем походу через тмв нельзя. Тему клоуз.
Ну да через него нельзя , но можно к примеру так:

это в .toc файлик:

Скрытый текст

PHP код:
## Interface: 30300
## Author: Dreamz 
## Title: Dreamz |cff0099ffBuffFilter|r
## Version:
## Notes: in horse :D
## SavedVariables: DreamzAuraCfg 
[свернуть]


core.lua

а это в core.lua файлик

Скрытый текст


PHP код:
local VISIBLE 1
local HIDDEN 
0
DreamzAuraCfg 
= {}
--
//Кароче whitelist значит отображать только из списка ,blacklist значит игнорировать из списка.

local Settings = {
    [
'cfg'] = {
        
size 32
    
},
        [
"buffs"] = {
            [
"mode"] = "whitelist",
            [
"list"] = {
                [
67703] = true,
                [
67708] = true,
                [
67772] = true,
                [
67773] = true,
        },
    },
}

local createAuraIcon = function(iconsindex)
    
local button CreateFrame("Button"nilicons)
    
button:SetWidth(icons.size or 16)
    
button:SetHeight(icons.size or 16)

    
local cd CreateFrame("Cooldown"nilbutton)
    
cd:SetAllPoints(button)

    
local icon button:CreateTexture(nil"BORDER")
    
icon:SetAllPoints(button)

    
local count button:CreateFontString(nil"OVERLAY")
    
count:SetFontObject(NumberFontNormal)
    
count:SetPoint("BOTTOMRIGHT"button"BOTTOMRIGHT", -10)

    
local overlay button:CreateTexture(nil"OVERLAY")
    
overlay:SetTexture"Interface\\Buttons\\UI-Debuff-Overlays"
    
overlay:SetAllPoints(button)
    
overlay:SetTexCoord(.296875.57031250.515625)
    
button.overlay overlay

    local stealable 
button:CreateTexture(nil'OVERLAY')
    
stealable:SetTexture[[Interface\TargetingFrame\UI-TargetingFrame-Stealable]]
    
stealable:SetPoint('TOPLEFT', -33)
    
stealable:SetPoint('BOTTOMRIGHT'3, -3)
    
stealable:SetBlendMode'ADD'
    
button.stealable stealable
    table
.insert(iconsbutton)
    
button.parent icons
    button
.icon icon
    button
.count count
    button
.cd cd
    
if(icons.PostCreateIconthen icons:PostCreateIcon(buttonend
    
return button
end

local customFilter 
= function(iconsuniticonnameranktexturecountdtypedurationtimeLeftcaster)
    
local isPlayer
    
if(caster == 'player' or caster == 'vehicle'then
        isPlayer 
true
    end
    
if((icons.onlyShowPlayer and isPlayer) or (not icons.onlyShowPlayer and name)) then
        icon
.isPlayer isPlayer
        icon
.owner caster
        
return true
    end
end

local updateIcon 
= function(uniticonsindexoffsetfilterisDebuffvisible)
    if 
not unit then return; end
    local name
ranktexturecountdtypedurationtimeLeftcasterisStealableshouldConsolidatespellID UnitAura(unitindexfilter)
    if 
icons.forceShow then
        spellID 
47540
        name
ranktexture GetSpellInfo(spellID)
        
countdtypedurationtimeLeftcasterisStealableshouldConsolidate 5'Magic'060'player'nilnil
    end
    
if(namethen
        local n 
visible offset 1
        local icon 
icons[n]
        if(
not iconthen
            icon 
= (icons.CreateIcon or createAuraIcon) (iconsn)
        
end
        local show 
true
        
if not icons.forceShow then
            show 
= (icons.CustomFilter or customFilter) (iconsuniticonnameranktexturecountdtypedurationtimeLeftcasterisStealableshouldConsolidatespellID)
        
end
        
if(showthen
            local cd 
icon.cd
            
if(cd and not icons.disableCooldownthen
                
if(duration and duration 0then
                    cd
:SetCooldown(timeLeft durationduration)
                    
cd:Show()
                else
                    
cd:Hide()
                
end
            end
            
if((isDebuff and icons.showDebuffType) or (not isDebuff and icons.showBuffType) or icons.showTypethen
                local color 
DebuffTypeColor[dtype] or DebuffTypeColor.none

                icon
.overlay:SetVertexColor(color.rcolor.gcolor.b)
                
icon.overlay:Show()
            else
                
icon.overlay:Hide()
            
end
            
if(icon.stealablethen
                local stealable 
not isDebuff and isStealable
                
if(stealable and icons.showStealableBuffs and not UnitIsUnit('player'unit)) then
                    icon
.stealable:Show()
                else
                    
icon.stealable:Hide()
                
end
            end
            icon
.icon:SetTexture(texture)
            
icon.count:SetText((count and count))
            
icon.filter filter
            icon
.isDebuff isDebuff
            icon
:SetID(index)
            
icon:Show()
            if(
icons.PostUpdateIconthen
                icons
:PostUpdateIcon(uniticonindexoffset)
            
end
            
return VISIBLE
        
else
            return 
HIDDEN
        end
    end
end

local SetPosition 
= function(iconsx)
    if(
icons and 0then
        local col 
0
        local row 
0
        local gap 
icons.gap
        local sizex 
= (icons.size or 16) + (icons['spacing-x'] or icons.spacing or 0)
        
local sizey = (icons.size or 16) + (icons['spacing-y'] or icons.spacing or 0)
        
local anchor icons.initialAnchor or "BOTTOMLEFT"
        
local growthx = (icons["growth-x"] == "LEFT" and -1) or 1
        local growthy 
= (icons["growth-y"] == "DOWN" and -1) or 1
        local cols 
math.floor(icons:GetWidth() / sizex .5)
        
local rows math.floor(icons:GetHeight() / sizey .5)
        for 
1#icons do
            
local button icons[i]
            if(
button and button:IsShown()) then
                
if(gap and button.debuffthen
                    
if(col 0then
                        col 
col 1
                    end
                    gap 
false
                end
                
if(col >= colsthen
                    col 
0
                    row 
row 1
                end
                button
:ClearAllPoints()
                
button:SetPoint(anchoriconsanchorcol sizex growthxrow sizey growthy)
                
col col 1
            
elseif(not buttonthen
                
break
            
end
        end
    end
end

local filterIcons 
= function(uniticonsfilterlimitisDebuffoffsetdontHide)
    if(
not offsetthen offset 0 end
    local index 
1
    local visible 
0
    
while(visible limit) do
        
local result updateIcon(uniticonsindexoffsetfilterisDebuffvisible)
        if(
not resultthen
            
break
        elseif(
result == VISIBLEthen
            visible 
visible 1
        end
        index 
index 1
    end
    
if(not dontHidethen
        
for visible offset 1#icons do
            
icons[i]:Hide()
        
end
    end
    
return visible
end
local Update 
= function(selfeventunit)
    if (
self.unit~=unit )or not unit then return end
    local buffs 
self.Buffs
    
if(buffsthen
        
if(buffs.PreUpdatethen buffs:PreUpdate(unitend
        local numBuffs 
buffs.num or 32
        buffs
.visibleBuffs filterIcons(unitbuffsbuffs.filter or 'HELPFUL'numBuffs)
        if(
buffs.PreSetPositionthen buffs:PreSetPosition(numBuffsend
        
(buffs.SetPosition or SetPosition) (buffsnumBuffs)
        if(
buffs.PostUpdatethen buffs:PostUpdate(unitend
    end
end

local in_array 
= function(et)
    if ( 
t[e] ) then
        
return true
    end
    
return false
end

local FilterBlacklist 
= function(spellID, list)
    if ( 
in_array(spellID, list) ) then
        
return false
    end
    
return true
end

local FilterWhitelist 
= function(spellID, list)
        if ( 
in_array(spellID, list) ) then
            
return true
        end
    
return false
end

local FilterGeneric 
= function(spellIDnamefilterSRCiconcaster)
    
icon.caster caster
    icon
.spellID spellID
    
if (filterSRC.mode == 'blacklist'then
        
return FilterBlacklist(spellIDfilterSRC.list)
    else
        return 
FilterWhitelist(spellIDfilterSRC.list)
    
end
end

local 
function FilterBuffs(iconsuniticonnameranktexturecountdtypedurationtimeLeftcasterisStealableshouldConsolidatespellID)
    return 
FilterGeneric(spellIDnameSettings['buffs'], iconcaster)
end

local f 
CreateFrame('Frame')
    
f.unit "player"
    
f.Buffs CreateFrame('Frame'"DreamAuras")
    
f.Buffs.gap true
    f
.Buffs.numBuffs 6
    f
.Buffs.spacing 4.5
    f
.Buffs.size Settings.cfg.size
    f
.Buffs:SetHeight(f.Buffs.size)
    
f.Buffs:SetWidth(f.Buffs.size*f.Buffs.numBuffs + ((f.Buffs.spacing*f.Buffs.numBuffs)-f.Buffs.spacing ))
    
f.Buffs.initialAnchor 'BOTTOMLEFT'
    
f.Buffs['growth-x'] = 'RIGHT'
    
f.Buffs['growth-y'] = 'UP'
    
f.Buffs:SetPoint("CENTER",UIParent ,00)
    
f.Buffs.CustomFilter FilterBuffs

local DB 
= {}
local Anchors = {} 
local frames = {DreamAuras}

    
local function OnDragStart(self)
        
self:StartMoving()
        
local frame self.obj
        frame
:ClearAllPoints()
        
frame:SetAllPoints(self)
    
end
    local 
function OnDragStop(self)
        
self:StopMovingOrSizing()
        
local name self.obj:GetName()
        
local pointrelativeTorelativePointxOfsyOfs self:GetPoint()
        
local DB DreamzAuraCfg
        DB
[name] = {point=pointrelativeTo=relativeTorelativePoint=relativePointxOfs=xOfsyOfs=yOfs}

    
end
    
    CreateAnchors 
= function(obj)
        
local frame obj
        
        local Anchor 
CreateFrame("Frame")
        
Anchor:SetParent(UIParent)
        
Anchor:Hide()
        
        
Anchor:SetFrameStrata("TOOLTIP")
        
Anchor:SetAllPoints(frame)
        
Anchor:EnableMouse(true)
        
Anchor:SetMovable(true)
        
Anchor:RegisterForDrag("LeftButton")
        
        
local tex Anchor:CreateTexture("ARTWORK");
        
tex:SetAllPoints();
        
tex:SetTexture(0.10.750.1tex:SetAlpha(0.5)    
        
        
local fn = frame:GetName()
        
local framesting Anchor:CreateFontString(nil"TOOLTIP""GameFontNormal")
        
framesting:SetPoint("CENTER")
        
framesting:SetParent(Anchor)
        
framesting:SetText(fn)
        
        
Anchor.obj obj
        Anchor
.frame frame
        Anchor
:SetScript("OnDragStart"OnDragStart)
        
Anchor:SetScript("OnDragStop"OnDragStop)
        
Anchors[frame] = Anchor
        
return Anchor
    end

local 
function StorePosition(obj)
    
local DB DreamzAuraCfg
   
for name,_ in pairs(DB) do 
   
key obj:GetName()
      if (
name==keythen
         obj
:ClearAllPoints()
         
obj:SetPoint(DB[name].pointDB[name].relativeToDB[name].relativePointDB[name].xOfsDB[name].yOfs)
      
end
   end
end

local 
function LoadPosition()
for 
i,obj in pairs(frames) do StorePosition(objend
end

local lock 
true
local 
function DAM()
        if(
lockthen
            
for kobj in nextframes do
                
local Anchor CreateAnchors(obj)
                if(
Anchorthen Anchor:Show() 
                
end
            end
    
else
        for 
kanch in nextAnchors do
            
anch:Hide()
        
end
    end
    lock 
not lock
end

SlashCmdList
["DAM"] = DAM
SLASH_DAM1 
"/dam";

f.ADDON_LOADED = function(self
      
LoadPosition()
  
end
  f
.UNIT_AURA = function(selfeventunit
      
Update(selfeventunit)
  
end
f
:SetScript("OnEvent",function(self,event,...) self[event](self,event,...) end)
f:RegisterEvent("ADDON_LOADED"
f:RegisterEvent("UNIT_AURA"
[свернуть]


PS /dam конфиг (можно будет перетащить и изменить размер).