Цитата Сообщение от LinxFree Посмотреть сообщение
Какой?
Icicle не работает
---UPD---
(Из-за PlateBuffs или Aloft) Есть ли способ их подружить?
Afflicted не работает без CLF, короче он и остальные аддоны такого типа по всей видимости тоже от комбатлога зависимы.
Gladius_CD не перетаскиваются в нужное место и не настраиваются занимая полэкрана бесполезными кд

Что-то еще может быть?
=========================

Встречный вопрос:
Как изменить IB чтобы иконки располагались не квадратом как брёвна, а полумесяцем?
ну за исключением верхних двух
Типо такого.

PHP код:
[SPOILER]InterruptBarDB InterruptBarDB or { scale 1hidden falselock false, }
local abilities = {}
local order
local band 
bit.band

local spellids 
= {[36554] = 10, [6552] = 10, [2139] = 24, [19647] = 24, [1766] = 10, [47528] = 10, [10308] = 90, [10890] = 23, [51514] = 90, [49916] = 120, [34490] = 60, [15487] = 240, [31935] = 20, [19503] = 30, [72] = 12, [20066] = 30}
for 
spellid,time in pairs(spellids) do
    
local name,_,spellicon GetSpellInfo(spellid)    
    
abilities[name] = { icon spelliconduration time }
end

-----------------------------------------------------
-- 
Edit this table to change the order
-----------------------------------------------------
-- 
36554 SHStep--
-- 
6552  Pummel
-- 2139  Counterspell
-- 19647 Spell Lock
-- 16979 Feral Charge 
-- 1766  Kick
-- 47528 Mind Freeze
-- 10308 Stan--
-- 
10890 Psychic Scream
-- 51514 Hex --
-- 
49916 Strangulate
-- 34490 Salo Hunt--
-- 
15487 Salo Priest--
-- 
31935 Tarelka--
-- 
19503 Scatter Shot
-- 72    Shield Bash
-- 20066 --SapPal 
-----------------------------------------------------

local order = {47528722139196471766365541030834490515141089049916319351548719503655220066}

-----------------------------------------------------
-----------------------------------------------------

for 
k,v in ipairs(order) do order[k] = GetSpellInfo(vend

local frame
local bar

local GetTime 
GetTime
local ipairs 
ipairs
local pairs 
pairs
local select 
select
local floor 
floor
local band 
bit.band
local GetSpellInfo 
GetSpellInfo

local GROUP_UNITS 
bit.bor(0x000000100x00000400)

local activetimers = {}

local size 0
local 
function getsize()
    
size 0
    
for k in pairs(activetimers) do
        
size size 1
    end
end

local 
function InterruptBar_AddIcons()
    
local x = -45
    local y 
0
    
--local curAbility 0
    
for curAbility,ability in ipairs(order) do
        
local btn CreateFrame("Frame",nil,bar)
        
btn:SetWidth(30)
        
btn:SetHeight(30)
        
btn:SetPoint("CENTER",bar,"CENTER",x,y)
        
btn:SetFrameStrata("LOW")
        
        
local cd CreateFrame("Cooldown",nil,btn)
        
cd.noomnicc true
        cd
.noCooldownCount true
        cd
:SetAllPoints(true)
        
cd:SetFrameStrata("MEDIUM")
        
cd:Hide()
        
        
local texture btn:CreateTexture(nil,"BACKGROUND")
        
texture:SetAllPoints(true)
        
texture:SetTexture(abilities[ability].icon)
        
texture:SetTexCoord(0.07,0.9,0.07,0.90)
    
        
local text cd:CreateFontString(nil,"ARTWORK")
        
text:SetFont(STANDARD_TEXT_FONT,18,"OUTLINE")
        
text:SetTextColor(1,1,0,1)
        
text:SetPoint("LEFT",btn,"LEFT",2,0)
        
        
btn.texture texture
        btn
.text text
        btn
.duration abilities[ability].duration
        btn
.cd cd
        
        bar
[ability] = btn

        
--
        --    
Originally curAbility AbilityCount 2
        
--    Which was counted early on when adding 
        
--      The abilities to a table
        
--    
        --      
This method ensures we only use the number of
        
--    Abilities that are going to be displayed
        
--      Given in the order table.
        --
        if 
curAbility #(order) / 2 then
            
30
        
else
            if 
curAbility #(order) / 2 then
                
30
            
else
                
30
                x 
= -45
            end
        end
    end
end

local 
function InterruptBar_SavePosition()
    
local point_relativePointxOfsyOfs bar:GetPoint()
    if 
not InterruptBarDB.Position then 
        InterruptBarDB
.Position = {}
    
end
    InterruptBarDB
.Position.point point
    InterruptBarDB
.Position.relativePoint relativePoint
    InterruptBarDB
.Position.xOfs xOfs
    InterruptBarDB
.Position.yOfs yOfs
end

local 
function InterruptBar_LoadPosition()
    if 
InterruptBarDB.Position then
        bar
:SetPoint(InterruptBarDB.Position.point,UIParent,InterruptBarDB.Position.relativePoint,InterruptBarDB.Position.xOfs,InterruptBarDB.Position.yOfs)
    else
        
bar:SetPoint("CENTER"UIParent"CENTER")
    
end
end

local 
function InterruptBar_UpdateBar()
    
bar:SetScale(InterruptBarDB.scale)
    if 
InterruptBarDB.hidden then
        
for _,v in ipairs(order) do bar[v]:Hide() end
    
else
        for 
_,v in ipairs(order) do bar[v]:Show() end
    end
    
if InterruptBarDB.lock then
        bar
:EnableMouse(false)
    else
        
bar:EnableMouse(true)
    
end
end

local 
function InterruptBar_CreateBar()
    
bar CreateFrame("Frame"nilUIParent)
    
bar:SetMovable(true)
    
bar:SetWidth(120)
    
bar:SetHeight(30)
    
bar:SetClampedToScreen(true
    
bar:SetScript("OnMouseDown",function(self,button) if button == "LeftButton" then self:StartMoving() end end)
    
bar:SetScript("OnMouseUp",function(self,button) if button == "LeftButton" then self:StopMovingOrSizing() InterruptBar_SavePosition() end end)
    
bar:Show()
    
    
InterruptBar_AddIcons()
    
InterruptBar_UpdateBar()
    
InterruptBar_LoadPosition()
end

local 
function InterruptBar_UpdateText(text,cooldown)
    if 
cooldown 10 then 
        
if cooldown <= 0.5 then
            text
:SetText("")
        else
            
text:SetFormattedText(" %d",cooldown)
        
end
    
else
        
text:SetFormattedText("%d",cooldown)
    
end
    
if cooldown 6 then 
        text
:SetTextColor(1,0,0,1)
    else 
        
text:SetTextColor(1,1,0,1
    
end
end

local 
function InterruptBar_StopAbility(ref,ability)
    if 
InterruptBarDB.hidden then ref:Hide() end
    
if activetimers[abilitythen activetimers[ability] = nil end
    ref
.text:SetText("")
    
ref.cd:Hide()
end

local time 
0
local 
function InterruptBar_OnUpdate(selfelapsed)
    
time time elapsed
    
if time 0.25 then
        getsize
()
        for 
ability,ref in pairs(activetimers) do
            
ref.cooldown ref.start ref.duration GetTime()
            if 
ref.cooldown <= 0 then
                InterruptBar_StopAbility
(ref,ability)
            else 
                
InterruptBar_UpdateText(ref.text,floor(ref.cooldown+0.5))
            
end
        end
        
if size == 0 then frame:SetScript("OnUpdate",nilend
        time 
time 0.25
    end
end

local 
function InterruptBar_StartTimer(ref,ability)
    if 
InterruptBarDB.hidden then
        ref
:Show()
    
end
    
if not activetimers[abilitythen
        local duration
        activetimers
[ability] = ref
        ref
.cd:Show()
        
ref.cd:SetCooldown(GetTime()-0.40,ref.duration)
        
ref.start GetTime()
        
InterruptBar_UpdateText(ref.text,ref.duration)
    
end
    frame
:SetScript("OnUpdate",InterruptBar_OnUpdate)
end

local 
function InterruptBar_COMBAT_LOG_EVENT_UNFILTERED(...)
    
local spellIDabilityuseSecondDuration
    
return function(_eventtype_srcNamesrcFlags_dstNamedstFlagsid)
        if (
band(srcFlags0x00000040) == 0x00000040 and eventtype == "SPELL_CAST_SUCCESS"then 
            spellID 
id
        
else
            return
        
end
        useSecondDuration 
false
        
if spellID == 49376 then spellID 16979useSecondDuration true end -- Feral Charge Cat -> Feral Charge Bear
        ability 
GetSpellInfo(spellID)
        if 
abilities[abilitythen            
            
if useSecondDuration and spellID == 16979 then
                bar
[ability].duration 30
            
elseif spellID == 16979 then
                bar
[ability].duration 15
            end
            InterruptBar_StartTimer
(bar[ability],ability)
        
end
    end
end

InterruptBar_COMBAT_LOG_EVENT_UNFILTERED 
InterruptBar_COMBAT_LOG_EVENT_UNFILTERED()

local function InterruptBar_ResetAllTimers()
    for 
_,ability in ipairs(order) do
        
InterruptBar_StopAbility(bar[ability])
    
end
    active 
0
end

local 
function InterruptBar_PLAYER_ENTERING_WORLD(self)
    
InterruptBar_ResetAllTimers()
end

local 
function InterruptBar_Reset()
    
InterruptBarDB = { scale 1hidden falselock false }
    
InterruptBar_UpdateBar()
    
InterruptBar_LoadPosition()
end

local 
function InterruptBar_Test()
    for 
_,ability in ipairs(order) do
        
InterruptBar_StartTimer(bar[ability],ability)
    
end
end

local cmdfuncs 
= {
    
scale = function(vInterruptBarDB.scale vInterruptBar_UpdateBar() end,
    
hidden = function() InterruptBarDB.hidden not InterruptBarDB.hiddenInterruptBar_UpdateBar() end,
    
lock = function() InterruptBarDB.lock not InterruptBarDB.lockInterruptBar_UpdateBar() end,
    
reset = function() InterruptBar_Reset() end,
    
test = function() InterruptBar_Test() end,
}

local cmdtbl = {}
function 
InterruptBar_Command(cmd)
    for 
k in ipairs(cmdtbl) do
        
cmdtbl[k] = nil
    end
    
for v in gmatch(cmd"[^ ]+") do
      
tinsert(cmdtblv)
  
end
  local cb 
cmdfuncs[cmdtbl[1]] 
  if 
cb then
      local s 
tonumber(cmdtbl[2])
      
cb(s)
  else
      
ChatFrame1:AddMessage("InterruptBar Options | /ib <option>",0,1,0)      
      
ChatFrame1:AddMessage("-- scale <number> | value: " .. InterruptBarDB.scale,0,1,0)
      
ChatFrame1:AddMessage("-- hidden (toggle) | value: " .. tostring(InterruptBarDB.hidden),0,1,0)
      
ChatFrame1:AddMessage("-- lock (toggle) | value: " .. tostring(InterruptBarDB.lock),0,1,0)
      
ChatFrame1:AddMessage("-- test (execute)",0,1,0)
      
ChatFrame1:AddMessage("-- reset (execute)",0,1,0)
  
end
end

local 
function InterruptBar_OnLoad(self)
    
self:RegisterEvent("PLAYER_ENTERING_WORLD")
    
self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    if 
not InterruptBarDB.scale then InterruptBarDB.scale 1 end
    
if not InterruptBarDB.hidden then InterruptBarDB.hidden false end
    
if not InterruptBarDB.lock then InterruptBarDB.lock false end
    InterruptBar_CreateBar
()
    
    
SlashCmdList["InterruptBar"] = InterruptBar_Command
    SLASH_InterruptBar1 
"/ib"
    
    
ChatFrame1:AddMessage("Interrupt Bar by Kollektiv. Type /ib for options.",0,1,0)
end

local eventhandler 
= {
    [
"VARIABLES_LOADED"] = function(selfInterruptBar_OnLoad(selfend,
    [
"PLAYER_ENTERING_WORLD"] = function(selfInterruptBar_PLAYER_ENTERING_WORLD(selfend,
    [
"COMBAT_LOG_EVENT_UNFILTERED"] = function(self,...) InterruptBar_COMBAT_LOG_EVENT_UNFILTERED(...) end,
}

local function InterruptBar_OnEvent(self,event,...)
    
eventhandler[event](self,...)
end

frame 
CreateFrame("Frame",nil,UIParent)
frame:SetScript("OnEvent",InterruptBar_OnEvent)
frame:RegisterEvent("VARIABLES_LOADED")[/SPOILER
Но вижу код там координаты какие-то, какие именно надо исправлять?
Че-то я так понял эту функцию тоже надо дублировать?
PHP код:
local function InterruptBar_AddIcons()
    
local x = -45
    local y 

причем не 1 раз

где-то тут надо изменить?
PHP код:
if curAbility #(order) / 2 then
            
30
        
else
            if 
curAbility #(order) / 2 then
                
30
            
else
                
30
                x 
= -45
            end
        end 
Голова заболела.

Может есть возможность сделать его на отдельных панелях и передвигать MoveAnithing например?
Подскажи что за интерфейся у тебя ?)