Shestak UI
Go Back   Shestak UI > Interface Forums > Russian Community > Spell/Item Filters

Spell/Item Filters Обсуждение различных списков/фильтров ShestakUI

Advertising

 
Thread Tools
Old 22.12.2011, 21:38   #1
 Assistant User Information

Wetxius's Avatar
Post Cooldowns (рейдовые и вражеские кд)

В файле ShestakUI\Config\Filters\Cooldowns.lua
Вы можете настроить:
  1. Рейдовые перезарядки Начиная с 8 строки внесены уже готовые заклинания для отслеживания, для добавления своих воспользуйтесь аналогией с предыдущими:
    Code [Select]:
    [16190] = 180,	-- Mana Tide Totem
    [16190] - номер заклинания (берется с вовхеда)
    180 - время перезарядки
    Mana Tide Totem - название заклинания
  2. Вражеские перезарядки. Начиная с 23 строки. Настройки аналогичны как для рейдовых.
Если вы нашли полезный кд для отслеживания, можете написать его в этой теме, и возможно он добавится в паблик версию интерфейса.

Say Thank:
Shestak (04.04.2013)
Old 22.12.2011, 21:38   #1.5 - Disable Ads

Advertise on this site

Old 19.08.2012, 12:23   #2
Wetxius
 Assistant User Information

Wetxius's Avatar
Post EnemyCD

Делитну?:
[45438] = 300, -- Ice Block
[1022] = 300, -- Hand of Protection
Ввиду большого кд, + бывает не засечь точный кд, тк есть таланты на сброс глыбы мага, двойной юз длани паладина.
И вообще, есть ли смысл заносить кд, которые не можем точно отслеживать?
Old 19.08.2012, 14:55   #3
Shestak
 Junior Member User Information

Shestak's Avatar
Quote:
Originally Posted by Wetxius View Post
которые не можем точно отслеживать?
Скорее всего нет.

Quote:
Originally Posted by Wetxius View Post
Делитну?
Можно.
Old 12.09.2012, 20:02   #4
Shestak
 Junior Member User Information

Shestak's Avatar
После смерти рейда все кд сейчас обновляются, или какие-то конкретные?
Old 12.09.2012, 20:06   #5
Wetxius
 Assistant User Information

Wetxius's Avatar
Quote:
Originally Posted by Shestak View Post
После смерти рейда все кд сейчас обновляются, или какие-то конкретные?
Которые больше(равно) 5 минут.

Добавлено через 42 секунды
Исключая воскрешение шаманов.
Say Thank:
Shestak (12.09.2012)
Old 23.09.2012, 08:54   #6
Wetxius
 Assistant User Information

Wetxius's Avatar
Cooldowns

Hidden text

А нельзя случаем прикрутить такую проверку на сброс кулдауна:
Взято из http://www.wowinterface.com/download...ilityBars.html
lua Code [Select]:
local cooldownResetters = {
    [11958] = { -- Cold Snap
        [120] = 1, -- Cone of Cold
        [122] = 1-- Frost Nova
        [11426] = 1, -- Ice Barrier
        [45438] = 1-- Ice Block
        [31687] = 1, -- Summon Water Elemental
        [44572] = 1, -- Deep Freeze
        [113724] = 1, -- Ring of Frost
        [12472] = 1, -- Icy Veins
    },
    [14185] = { -- Preparation
        [76577] = 1-- Smoke Bomb
        [2983] = 1-- Sprint
        [1856] = 1, -- Vanish
        [36554] = 1, -- Shadowstep
        [51722] = 1, --Disarm
        [1766] = 1, --Kick   
    },
    [23989] = "ALL", -- Readiness
}

local temp = {}
for k,v in pairs(cooldownResetters) do
    temp[GetSpellInfo(k)] = {}
    if type(v) == "table" then
        for id in pairs(v) do
            temp[GetSpellInfo(k)][GetSpellInfo(id)] = 1
        end
    else
        temp[GetSpellInfo(k)] = v
    end
end

cooldownResetters = temp
Думаю тем, кто постоянно следит за вражескими кд будет полезно.
П.с. Конфиг сам допилю.

Добавлено через 31 минуту
Хотя, подумать. У магов мы отслеживаем 2 спелла по 30с. У рогов только исчезновение длинный кд(но там, если он сбросит кд, то сразу и уйдет в инвиз, поделать ничего не смогем). У хантов сброс идет либо на деф абилку(тоже ничего не сделаем), повторный контроль (пойдет в другой таргет скорее всего из-за диминишинга).
Не нужно наверн.
[hide]


Добавлено через 214 часов 42 минуты
Quote:
Originally Posted by Klov View Post
Простите, если вопрос уже был, но ответа не нашёл.

Как дополнить список вражеских спелов? (не могу найти где он конкретно прописан)
Death Coil, Kick, CS, Minf Freeze, например, отображаются, а вот Shadow Fury нет.
ShestakUI\Config\Filters\Cooldowns.lua
После 23 строки идут вражеские кд.

https://github.com/Shestak/ShestakUI...39c82f674cbe1d
Old 15.10.2012, 02:48   #7
Shestak
 Junior Member User Information

Shestak's Avatar
Хотел потестить изменения, да что-то мы так быстро убили ласта, что совсем забыл про таймеры.

Hidden text

lua Code [Select]:
local T, C, L, _ = unpack(select(2, ...))
if C.raidcooldown.enable ~= true then return end

----------------------------------------------------------------------------------------
--  Raid cooldowns(alRaidCD by Allez)
----------------------------------------------------------------------------------------
local show = {
    raid = C.raidcooldown.show_inraid,
    party = C.raidcooldown.show_inparty,
    arena = C.raidcooldown.show_inarena,
}

local filter = COMBATLOG_OBJECT_AFFILIATION_RAID + COMBATLOG_OBJECT_AFFILIATION_PARTY + COMBATLOG_OBJECT_AFFILIATION_MINE
local band = bit.band
local sformat = string.format
local floor = math.floor
local timer = 0
local bars = {}

local RaidCDAnchor = CreateFrame("Frame", "RaidCDAnchor", UIParent)
RaidCDAnchor:Point(unpack(C.position.raid_cooldown))
if C.raidcooldown.show_icon == true then
    RaidCDAnchor:Size(C.raidcooldown.width + 32, C.raidcooldown.height + 10)
else
    RaidCDAnchor:Size(C.raidcooldown.width + 32, C.raidcooldown.height + 10)
end

local FormatTime = function(time)
    if time >= 60 then
        return sformat("%.2d:%.2d", floor(time / 60), time % 60)
    else
        return sformat("%.2d", time)
    end
end

local CreateFS = function(frame, fsize, fstyle)
    local fstring = frame:CreateFontString(nil, "OVERLAY")
    fstring:SetFont(C.font.raid_cooldowns_font, C.font.raid_cooldowns_font_size, C.font.raid_cooldowns_font_style)
    fstring:SetShadowOffset(C.font.raid_cooldowns_font_shadow and 1 or 0, C.font.raid_cooldowns_font_shadow and -1 or 0)
    return fstring
end

local UpdatePositions = function()
    for i = 1, #bars do
        bars[i]:ClearAllPoints()
        if i == 1 then
            bars[i]:Point("BOTTOMRIGHT", RaidCDAnchor, "BOTTOMRIGHT", -2, 2)
        else
            if C.raidcooldown.upwards == true then
                bars[i]:Point("BOTTOMLEFT", bars[i-1], "TOPLEFT", 0, 13)
            else
                bars[i]:Point("TOPLEFT", bars[i-1], "BOTTOMLEFT", 0, -13)
            end
        end
        bars[i].id = i
    end
end

local StopTimer = function(bar)
    bar:SetScript("OnUpdate", nil)
    bar:Hide()
    tremove(bars, bar.id)
    UpdatePositions()
end

local BarUpdate = function(self, elapsed)
    local curTime = GetTime()
    if self.endTime < curTime then
        StopTimer(self)
        return
    end
    self:SetValue(100 - (curTime - self.startTime) / (self.endTime - self.startTime) * 100)
    self.right:SetText(FormatTime(self.endTime - curTime))
end

local OnEnter = function(self)
    GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
    GameTooltip:AddDoubleLine(self.spell, self.right:GetText())
    GameTooltip:SetClampedToScreen(true)
    GameTooltip:Show()
end

local OnLeave = function(self)
    GameTooltip:Hide()
end

local OnMouseDown = function(self, button)
    if button == "LeftButton" then
        if IsInRaid() then
            SendChatMessage(sformat(L_COOLDOWNS.." %s: %s", self.left:GetText(), self.right:GetText()), "RAID")
        elseif IsInGroup() then
            SendChatMessage(sformat(L_COOLDOWNS.." %s: %s", self.left:GetText(), self.right:GetText()), "PARTY")
        else
            SendChatMessage(sformat(L_COOLDOWNS.." %s: %s", self.left:GetText(), self.right:GetText()), "SAY")
        end
    elseif button == "RightButton" then
        StopTimer(self)
    end
end

local CreateBar = function()
    local bar = CreateFrame("Statusbar", nil, UIParent)
    bar:SetFrameStrata("MEDIUM")
    if C.raidcooldown.show_icon == true then
        bar:Size(C.raidcooldown.width, C.raidcooldown.height)
    else
        bar:Size(C.raidcooldown.width + 28, C.raidcooldown.height)
    end
    bar:SetStatusBarTexture(C.media.texture)
    bar:SetMinMaxValues(0, 100)

    bar.backdrop = CreateFrame("Frame", nil, bar)
    bar.backdrop:Point("TOPLEFT", -2, 2)
    bar.backdrop:Point("BOTTOMRIGHT", 2, -2)
    bar.backdrop:SetTemplate("Default")
    bar.backdrop:SetFrameStrata("BACKGROUND")

    bar.bg = bar:CreateTexture(nil, "BACKGROUND")
    bar.bg:SetAllPoints(bar)
    bar.bg:SetTexture(C.media.texture)

    bar.left = CreateFS(bar)
    bar.left:Point("LEFT", 2, 0)
    bar.left:SetJustifyH("LEFT")
    bar.left:Size(C.raidcooldown.width - 30, C.font.raid_cooldowns_font_size)

    bar.right = CreateFS(bar)
    bar.right:Point("RIGHT", 1, 0)
    bar.right:SetJustifyH("RIGHT")

    if C.raidcooldown.show_icon == true then
        bar.icon = CreateFrame("Button", nil, bar)
        bar.icon:Width(bar:GetHeight() + 6)
        bar.icon:Height(bar.icon:GetWidth())
        bar.icon:Point("BOTTOMRIGHT", bar, "BOTTOMLEFT", -7, 0)

        bar.icon.backdrop = CreateFrame("Frame", nil, bar.icon)
        bar.icon.backdrop:Point("TOPLEFT", -2, 2)
        bar.icon.backdrop:Point("BOTTOMRIGHT", 2, -2)
        bar.icon.backdrop:SetTemplate("Default")
        bar.icon.backdrop:SetFrameStrata("BACKGROUND")
    end
    return bar
end

local StartTimer = function(name, spellId)
    local spell, rank, icon = GetSpellInfo(spellId)
    for _, v in pairs(bars) do
        if v.name == name and v.spell == spell then
            return
        end
    end
    local bar = CreateBar()
    bar.endTime = GetTime() + T.raid_spells[spellId]
    bar.startTime = GetTime()
    bar.left:SetText(name.." - "..spell)
    bar.name = name
    bar.right:SetText(FormatTime(T.raid_spells[spellId]))
    if C.raidcooldown.show_icon == true then
        bar.icon:SetNormalTexture(icon)
        bar.icon:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
    end
    bar.spell = spell
    bar:Show()
    local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[select(2, UnitClass(name))]
    if color then
        bar:SetStatusBarColor(color.r, color.g, color.b)
        bar.bg:SetVertexColor(color.r, color.g, color.b, 0.2)
    else
        bar:SetStatusBarColor(0.3, 0.7, 0.3)
        bar.bg:SetVertexColor(0.3, 0.7, 0.3, 0.2)
    end
    bar:SetScript("OnUpdate", BarUpdate)
    bar:EnableMouse(true)
    bar:SetScript("OnEnter", OnEnter)
    bar:SetScript("OnLeave", OnLeave)
    bar:SetScript("OnMouseDown", OnMouseDown)
    tinsert(bars, bar)
    UpdatePositions()
end

local OnEvent = function(self, event, ...)
    if event == "COMBAT_LOG_EVENT_UNFILTERED" then
        local _, eventType, _, _, sourceName, sourceFlags = ...
        if band(sourceFlags, filter) == 0 then return end
        if eventType == "SPELL_RESURRECT" or eventType == "SPELL_CAST_SUCCESS" or eventType == "SPELL_AURA_APPLIED" then
            local spellId = select(12, ...)
            if T.raid_spells[spellId] and show[select(2, IsInInstance())] then
                StartTimer(sourceName, spellId)
            end
        end
    elseif event == "ZONE_CHANGED_NEW_AREA" and select(2, IsInInstance()) ~= "raid" and UnitIsGhost("player") then
        for k, v in pairs(bars) do
            StopTimer(v)
        end
    elseif event == "ZONE_CHANGED_NEW_AREA" and select(2, IsInInstance()) == "arena" then
        for k, v in pairs(bars) do
            StopTimer(v)
        end
    end
end

local addon = CreateFrame("Frame")
addon:SetScript("OnEvent", OnEvent)
addon:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
addon:RegisterEvent("ZONE_CHANGED_NEW_AREA")

SlashCmdList.RaidCD = function(msg)
    StartTimer(UnitName("player"), 20484)   -- Rebirth
    StartTimer(UnitName("player"), 20707)   -- Soulstone
    StartTimer(UnitName("player"), 6346)    -- Fear Ward
    StartTimer(UnitName("player"), 29166)   -- Innervate
    StartTimer(UnitName("player"), 32182)   -- Heroism
    StartTimer(UnitName("player"), 2825)    -- Bloodlust
end
SLASH_RaidCD1 = "/raidcd"
SLASH_RaidCD2 = "/кфшвсв"
[hide]

Изменения только в добавление куска кода в условие:
lua Code [Select]:
elseif event == "ZONE_CHANGED_NEW_AREA" and select(2, IsInInstance()) ~= "raid" and UnitIsGhost("player") then
    for k, v in pairs(bars) do
        StopTimer(v)
    end
Old 15.10.2012, 06:37   #8
m2jest1c
 Assistant User Information

m2jest1c's Avatar
а если, например, был эвейд на собаках после окаменения нужно доп. условии или кд не сбрасываются вовсе?
Old 15.10.2012, 07:08   #9
Shestak
 Junior Member User Information

Shestak's Avatar
После эвейда не замечал, обновляется кд или нет. И даже если обновляется, то эвейд нельзя отследить.
Say Thank:
m2jest1c (15.10.2012)
Old 15.10.2012, 07:18   #10
Wetxius
 Assistant User Information

Wetxius's Avatar
Quote:
Originally Posted by Shestak View Post
эвейд нельзя отследить.
Как и успешное убийство. А код выше для призрака игрока, или любого трупа рейдера?

Добавлено через 4 минуты
Хотя там же смена зоны, значит игрок умер, реснулся призраком, зашел в инст.

Tags
cooldown, enemycd, raidcd, вражеские кд, кулдауны, перезарядки, рейдовые кд

Thread Tools


Similar Threads
Thread Thread Starter Forum Replies Last Post
Unknown Cooldowns Balgar General Discussion 2 02.09.2012 19:10
Cooldowns and Debuff Tracker eponectarine Technical Support 0 16.07.2012 20:27
[Fixed] Rebirth Timer (Raid Cooldowns) Not showing? Tekzehtool Bugs Reports 2 27.12.2011 16:58
Skill cooldowns toricelli12 General Discussion 4 13.08.2010 10:36


Mobile Style Русский English Deutsch Italian Chinese