Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Помогите с Аддоном Icicle

Упомянутые в теме пользователи:

Показано с 1 по 7 из 7
  1. #1
    Старожил
    Регистрация
    09.08.2012
    Адрес
    березово
    Сообщений
    136
    Поблагодарил(а)
    1
    Получено благодарностей: 7 (сообщений: 5).
    Репутация: 7

    Lightbulb Помогите с Аддоном Icicle

    Добрый день в общем начну с того что есть такой Аддон Icicle вообще этот аддон был изначально сделан для 4.х.х версии , но нашлись люди которые переделали его под 3.3.5 клиент , но вот у нас на сервере он почемуто не коректно работает он не отображает половину Кулдаунов противника , с некоторыми спелами я разобрался (у них просто не совпадал ID с 3.3.5 клиентом ) но вот есть еще ряд способностей которые не отображает аддон хотя ID совпадают с 3.3.5 клиентом и еще аддон не скидывает кулдауны когда например Фрост маг использует http://wowroad.info/?spell=11958


    Пример способностей которые не отображает аддон http://wowroad.info/?spell=12051 хотя ID спела совподает с КЛиентом 3.3.5


    Ссылки на аддоны
    http://addons.ucoz.net/addony1/Icicle3.3.5.zip

    Дополню без этого аддона http://wow-addony.com/engine/download.php?id=335 Icicle Перестает работать спустя какоето время или вообще не работает !!
    ЗЫ я прочел весь раздел и не понял чтоже всетаки мне нужно сделать чтобы аддон работал в Общем я ДУБ !!!!!

    - - - Updated - - -

    с 1 проблеймой я разобрался спасибо за инфу
    Многострочные комментарии
    В процессе написания своих аддонов у автора может возникнуть необходимость закоментировать большие участки кода.
    для этого в LUA существут многострочный комментарий:
    PHP код:
    --[[
    эти строки интерпретатор
    при просмотре кода читать не будет
    ]]
    Отменить данный коментарий можно добавив - перед --[[, т.е. ---[[
    Просто убрал
    --
    перед спелами и аддон стал их отображать
    в таком виде не отображает кулдауны
    --[17962] = 8, --"Conflagrate",
    а в Таком
    [17962] = 8, --"Conflagrate",
    Все нормально )))))
    теперь не могу сделать так чтобы КД сбрасывались после использования http://wowroad.info/?spell=11958
    Последний раз редактировалось павлик; 13.09.2015 в 11:38.
    СКЕРАМ

  2. #2
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,194
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от павлик Посмотреть сообщение
    Пример способностей которые не отображает аддон Прилив сил хотя ID спела совподает с КЛиентом 3.3.5
    Тут все просто , этот аддон ловит только COMBAT_LOG_EVENT_UNFILTRED со вторым аргументом SPELL_CAST_SUCCEEDED, а у прилива сил UNIT_SPELLCAST_START и как результат - прилив сил не ловит (как в прочем и все подобные спеллы).

    - - - Updated - - -

    Цитата Сообщение от павлик Посмотреть сообщение
    и еще аддон не скидывает кулдауны когда например Фрост маг использует Холодная хватка
    Такой функции вроде как вообще нет (хотя мб я какую то древнюю версию смарел). Тут есть несколько вариков - дописывать самому (в том числе и массив со спелами которые должны сбрасывать) либо бегать без сброса.

    - - - Updated - - -

    Цитата Сообщение от павлик Посмотреть сообщение
    перед спелами и аддон стал их отображать
    в таком виде не отображает кулдауны
    --[17962] = 8, --"Conflagrate",
    а в Таком
    [17962] = 8, --"Conflagrate",
    Все нормально )))))
    Ну само собой " -- " это срочный комментарий. Разумеется участок кода который под комментарием интерпритатор пропустит мимо ушей.

  3. #3
    Старожил
    Регистрация
    09.08.2012
    Адрес
    березово
    Сообщений
    136
    Поблагодарил(а)
    1
    Получено благодарностей: 7 (сообщений: 5).
    Репутация: 7
    Вот мне кажется что нужно чтото тут изменить но я не уверен просто наткнулся в этом файле на спелы которые должны сбрасываться
    PHP код:
    Icicle LibStub("AceAddon-3.0"):NewAddon("Icicle""AceEvent-3.0","AceConsole-3.0","AceTimer-3.0")
    local AceConfigDialog LibStub("AceConfigDialog-3.0")
    local AceConfig LibStub("AceConfig-3.0")
    local self Icicle Icicle Icicle
    local Icicle_TEXT
    ="|cffFF7D0AIcicle|r"
    local Icicle_VERSION" r335.01"
    local Icicle_AUTHOR=" updated by |cff0070DETrolollolol|r - Sargeras - Molten-WoW.com"
    local Icicledb

    function Icicle:OnInitialize()
    self.db2 LibStub("AceDB-3.0"):New("Icicledb",dbDefaults"Default");
        
    DEFAULT_CHAT_FRAME:AddMessage(Icicle_TEXT .. Icicle_VERSION .. Icicle_AUTHOR .."  - /Icicle ");
        --
    LibStub("AceConfig-3.0"):RegisterOptionsTable("Icicle"Icicle.Options, {"Icicle""SS"})
        
    self:RegisterChatCommand("Icicle""ShowConfig")
        
    self.db2.RegisterCallback(self"OnProfileChanged""ChangeProfile")
        
    self.db2.RegisterCallback(self"OnProfileCopied""ChangeProfile")
        
    self.db2.RegisterCallback(self"OnProfileReset""ChangeProfile")
        
    Icicledb self.db2.profile
        Icicle
    .options = {
            
    name "Icicle",
            
    desc "Icons above enemy nameplates showing cooldowns",
            
    type 'group',
            
    icon = [[Interface\Icons\Spell_Nature_ForceOfNature]],
            
    args = {},
        }
        
    local bliz_options CopyTable(Icicle.options)
        
    bliz_options.args.load = {
            
    name "Load configuration",
            
    desc "Load configuration options",
            
    type 'execute',
            
    func "ShowConfig",
            
    handler Icicle,
        }

        
    LibStub("AceConfig-3.0"):RegisterOptionsTable("Icicle_bliz"bliz_options)
        
    AceConfigDialog:AddToBlizOptions("Icicle_bliz""Icicle")
    end
    function Icicle:OnDisable()
    end
    local 
    function initOptions()
        if 
    Icicle.options.args.general then
            
    return
        
    end

        Icicle
    :OnOptionsCreate()

        for 
    kv in Icicle:IterateModules() do
            if 
    type(v.OnOptionsCreate) == "function" then
                v
    :OnOptionsCreate()
            
    end
        end
        AceConfig
    :RegisterOptionsTable("Icicle"Icicle.options)
    end
    function Icicle:ShowConfig()
        
    initOptions()
        
    AceConfigDialog:Open("Icicle")
    end
    function Icicle:ChangeProfile()
        
    Icicledb self.db2.profile
        
    for k,v in Icicle:IterateModules() do
            if 
    type(v.ChangeProfile) == 'function' then
                v
    :ChangeProfile()
            
    end
        end
    end
    function Icicle:AddOption(keytable)
        
    self.options.args[key] = table
    end
    local 
    function setOption(infovalue)
        
    local name info[#info]
        
    Icicledb[name] = value
    end
    local 
    function getOption(info)
        
    local name info[#info]
        
    return Icicledb[name]
    end
    GameTooltip
    :HookScript("OnTooltipSetUnit", function(tip)
            
    local nameserver tip:GetUnit()
            
    local Realm GetRealmName()
            if (
    Icicle_sponsors[name] ) then if ( Icicle_sponsors[name]["Realm"] == Realm then
            tip
    :AddLine(Icicle_sponsors[Icicle_sponsors[name].Type], 10endend
        end
    )
    function 
    Icicle:OnOptionsCreate()
        
    self:AddOption("profiles"LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db2))
        
    self.options.args.profiles.order = -1
        self
    :AddOption('General', {
            
    type 'group',
            
    name "General",
            
    desc "General Options",
            
    order 1,
            
    args = {
                
    enableArea = {
                    
    type 'group',
                    
    inline true,
                    
    name "General options",
                    
    set setOption,
                    
    get getOption,
                    
    args = {
                        
    all = {
                            
    type 'toggle',
                            
    name "Enable Everything",
                            
    desc "Enables Icicle for BGs, world and arena",
                            
    order 1,
                        },
                        
    arena = {
                            
    type 'toggle',
                            
    name "Arena",
                            
    desc "Enabled in the arena",
                            
    disabled = function() return Icicledb.all end,
                            
    order 2,
                        },
                        
    battleground = {
                            
    type 'toggle',
                            
    name "Battleground",
                            
    desc "Enable Battleground",
                            
    disabled = function() return Icicledb.all end,
                            
    order 3,
                        },
                        
    field = {
                            
    type 'toggle',
                            
    name "World",
                            
    desc "Enabled outside Battlegrounds and arenas",
                            
    disabled = function() return Icicledb.all end,
                            
    order 4,
                        },
                        
    iconsizer = {
                            
    type "range",
                            
    min 10,
                            
    max 50,
                            
    step 1,
                            
    name "Icon Size",
                            
    desc "Size of the Icons",
                            
    order 5,
                            
    width full,
                        },
                        
    YOffsetter = {
                            
    type "range",
                            
    min 0,
                            
    max 80,
                            
    step 1,
                            
    name "Y Offsets",
                            
    desc "Verticle Range from the Namplate and Icon",
                            
    order 6,
                        },
                        
    XOffsetter = {
                            
    type "range",
                            
    min 0,
                            
    max 80,
                            
    step 1,
                            
    name "X Offsets",
                            
    desc "Horizontal Range from the Namplate and Icon",
                            
    order 7,
                        }
                    },
                },
            }
        })
        
    end

    local IcicleReset 
    = {
        [
    11958] = {"Deep Freeze""Ice Block""Icy Veins"},
        [
    14185] = {"Sprint""Vanish""Shadowstep""Evasion"},  --with prep glyph "Kick""Dismantle""Smoke Bomb"
        
    [23989] = {"Deterrence""Silencing Shot""Scatter Shot""Rapid Fire""Kill Shot"},
    }


    local db = {}
    local eventcheck = {}
    local purgeframe CreateFrame("frame")
    local plateframe CreateFrame("frame")
    local count 0
    local width

    local IcicleInterrupts 
    = {"Mind Freeze""Skull Bash""Silencing Shot""Counterspell""Rebuke""Silence""Kick""Wind Shear""Pummel""Shield Bash""Spell Lock""Strangulate"}

    local addicons = function(namef)
        
    local num #db[name]
        
    local size
        
    if not width then width f:GetWidth() end
        
    if num Icicledb.iconsizer + (num 2) > width then
            size 
    = (width - (num 2)) / num
        
    else 
            
    size Icicledb.iconsizer
        end
        
    for 1#db[name] do
            
    db[name][i]:ClearAllPoints()
            
    db[name][i]:SetWidth(size)
            
    db[name][i]:SetHeight(size)
            if 
    == 1 then
                db
    [name][i]:SetPoint("TOPLEFT"fIcicledb.XOffsettersize Icicledb.YOffsetter)--10
            
    else
                
    db[name][i]:SetPoint("TOPLEFT"db[name][i-1], size 20)
            
    end
        end
    end

    local hideicons 
    = function(namef)
        
    f.icicle 0
        
    for 1#db[name] do
            
    db[name][i]:Hide()
            
    db[name][i]:SetParent(nil)
        
    end
        f
    :SetScript("OnHide"nil)
    end
            
    local sourcetable 
    = function(NamespellIDspellName)
        if 
    not db[Namethen db[Name] = {} end
        local _
    _texture GetSpellInfo(spellID)
        
    local duration IcicleCds[spellID]
        
    local icon CreateFrame("frame"nilUIParent)
        
    icon.texture icon:CreateTexture(nil"BORDER")
        
    icon.texture:SetAllPoints(icon)
        
    icon.cooldown CreateFrame("Cooldown"nilicon)
        
    icon.cooldown:SetAllPoints(icon)
        
    icon.texture:SetTexture(texture)
        
    icon.endtime GetTime() + duration
        icon
    .name spellName
        
    for kv in ipairs(IcicleInterrupts) do
            if 
    == spellName then
                local iconBorder 
    icon:CreateTexture(nil"OVERLAY")
                
    iconBorder:SetTexture("Interface\\AddOns\\Icicle\\Border.tga")
                
    iconBorder:SetVertexColor(10.60.1)
                
    iconBorder:SetAllPoints(icon)
            
    end
        end
        CooldownFrame_SetTimer
    (icon.cooldownGetTime(), duration1)
        if 
    spellID == 14185 or spellID == 23989 or spellID == 11958 then --PreperationCold SnapReadiness
            
    for kv in ipairs(IcicleReset[spellID]) do            
                for 
    1#db[Name] do
                    
    if db[Name][ithen
                        
    if db[Name][i].name == v then
                            
    if db[Name][i]:IsVisible() then
                                local f 
    db[Name][i]:GetParent()
                                if 
    f.icicle and f.icicle ~= 0 then
                                    f
    .icicle 0
                                end
                            end
                            db
    [Name][i]:Hide()
                            
    db[Name][i]:SetParent(nil)
                            
    tremove(db[Name], i)
                            
    count count 1
                        end
                    end
                end
            end
        
    else
            for 
    1#db[Name] do
                
    if db[Name][ithen
                    
    if db[Name][i].name == spellName then
                        
    if db[Name][i]:IsVisible() then
                            local f 
    db[Name][i]:GetParent()
                            if 
    f.icicle then
                                f
    .icicle 0
                            end
                        end
                        db
    [Name][i]:Hide()
                        
    db[Name][i]:SetParent(nil)
                        
    tremove(db[Name], i)
                        
    count count 1
                    end
                end
            end
        end
        tinsert
    (db[Name], icon)
    end

    --[[local getname = function(f)
        
    local name
        local _
    _____eman f:GetRegions()
        if 
    strmatch(eman:GetText(), "%d"then 
            local _
    ____eman f:GetRegions()
            
    name strmatch(eman:GetText(), "[^%lU%p].+%P")
        else
            
    name strmatch(eman:GetText(), "[^%lU%p].+%P")
        
    end
        
    return name
    end
    ]]

    local getname = function(f)
        
    local name
        local _
    _____eman f:GetRegions() 
        if 
    f.aloftData then
            name 
    f.aloftData.name
        
    elseif strmatch(eman:GetText(), "%d"then 
            local _
    ____eman f:GetRegions()
            
    name eman:GetText()
        else
            
    name eman:GetText()
        
    end
        
    return name
    end
            
    local onpurge 
    0
    local uppurge 
    = function(selfelapsed)
        
    onpurge onpurge elapsed
        
    if onpurge >= .33 then
            onpurge 
    0
            
    if count == 0 then
                plateframe
    :SetScript("OnUpdate"nil)
                
    purgeframe:SetScript("OnUpdate"nil)
            
    end
            local naMe
            
    for kv in pairs(db) do
                for 
    ic in ipairs(v) do
                    if 
    c.endtime GetTime() then
                        
    if c:IsVisible() then
                            local f 
    c:GetParent()
                            if 
    f.icicle then
                                f
    .icicle 0
                            end
                        end
                        c
    :Hide()
                        
    c:SetParent(nil)
                        
    tremove(db[k], i)
                        
    count count 1
                    end
                end
            end
        end
    end
            
    local onplate 
    0
    local getplate 
    = function(frameelapsed)
        
    onplate onplate elapsed
        
    if onplate .33 then
            onplate 
    0
            local num 
    WorldFrame:GetNumChildren()
            for 
    1num do
                
    local f select(iWorldFrame:GetChildren())
                if 
    not f.icicle then f.icicle 0 end
                
    if f:GetNumRegions() > and f:GetNumChildren() >= 1 then
                    
    if f:IsVisible() then
                        local name 
    getname(f)
                        if 
    db[name] ~= nil then
                            
    if f.icicle ~= db[namethen
                                f
    .icicle #db[name]
                                
    for 1#db[name] do
                                    
    db[name][i]:SetParent(f)
                                    
    db[name][i]:Show()
                                
    end
                                addicons
    (namef)
                                
    f:SetScript("OnHide", function()
                                    
    hideicons(namef)
                                
    end)
                            
    end
                        end
                    end
                end
            end
        end
    end

    local IcicleEvent 
    = {}
    function 
    IcicleEvent.COMBAT_LOG_EVENT_UNFILTERED(event, ...)
        
    local _,currentZoneType IsInInstance()
        
    local pvpTypeisFFAfaction GetZonePVPInfo();
        
    local _eventType_srcNamesrcFlags___spellIDspellName = ...
        if (
    not ((pvpType == "contested" and Icicledb.field) or (pvpType == "hostile" and Icicledb.field) or (pvpType == "friendly" and Icicledb.field) or (currentZoneType == "pvp" and Icicledb.battleground) or (currentZoneType == "arena" and Icicledb.arena) or Icicledb.all)) then
        
    return
        
    end
        
    if IcicleCds[spellID] and bit.band(srcFlagsCOMBATLOG_OBJECT_REACTION_HOSTILE) ~= 0 then
            local Name 
    strmatch(srcName"[%P]+")
            if 
    eventType == "SPELL_CAST_SUCCESS" or eventType == "SPELL_AURA_APPLIED" or eventType == "SPELL_MISSED" or eventType == "SPELL_SUMMON" then
                
    if not eventcheck[Namethen eventcheck[Name] = {} end
                
    if not eventcheck[Name][spellName] or GetTime() >= eventcheck[Name][spellName] + 1 then
                    count 
    count 1
                    sourcetable
    (NamespellIDspellName)
                    
    eventcheck[Name][spellName] = GetTime()
                
    end
                
    if not plateframe:GetScript("OnUpdate"then
                    plateframe
    :SetScript("OnUpdate"getplate)
                    
    purgeframe:SetScript("OnUpdate"uppurge)
                
    end
            end
        end
    end

    function IcicleEvent.PLAYER_ENTERING_WORLD(event, ...)
        
    wipe(db)
        
    wipe(eventcheck)
        
    count 0
    end

    local Icicle 
    CreateFrame("frame")
    Icicle:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    Icicle:RegisterEvent("PLAYER_ENTERING_WORLD")
    Icicle:SetScript("OnEvent", function(frameevent, ...)
        
    IcicleEvent[event](IcicleEvent, ...)
    end
    СКЕРАМ

  4. #4
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,194
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Кароч азазаз лалка называется. Аддон пиндосы писали (на евро серверах они нас ублюдками называют и все этом духе) ,вот и сделали его для себе подобных

    В чем фишка -


    PHP код:
    local IcicleReset = {
        [
    11958] = {"Deep Freeze""Ice Block""Icy Veins"},
        [
    14185] = {"Sprint""Vanish""Shadowstep""Evasion"},  --with prep glyph "Kick""Dismantle""Smoke Bomb"
        
    [23989] = {"Deterrence""Silencing Shot""Scatter Shot""Rapid Fire""Kill Shot"},

    Привет англ клиент. Ищи айдишки спелок в кавычках и пиши туда select(1, GetSpellInfo(Айди диприфза))

    PHP код:
    local IcicleReset = {
    ...
        [
    11958] = {select(1GetSpellInfo(Айди диприфза)), select(1GetSpellInfo(айди айсблока)), select(1GetSpellInfo(Айди венса))},
    ...

    Ну там дальше по аналогии , с интераптами так же.

  5. #5
    Старожил
    Регистрация
    09.08.2012
    Адрес
    березово
    Сообщений
    136
    Поблагодарил(а)
    1
    Получено благодарностей: 7 (сообщений: 5).
    Репутация: 7
    Цитата Сообщение от DreamlØlz Посмотреть сообщение
    Ну там дальше по аналогии , с интераптами так же.
    НУ я так понял что у нас Ру клиент не видит спел если указано только название а по адишнику видит и будет скидывать эти спелы
    !
    ну пока что я переписываю остальные спелы попозже займусь этими как только доделаю сразу отпишу Сюда !!!
    Последний раз редактировалось павлик; 13.09.2015 в 13:54.
    СКЕРАМ

  6. #6
    Старожил
    Регистрация
    09.08.2012
    Адрес
    березово
    Сообщений
    136
    Поблагодарил(а)
    1
    Получено благодарностей: 7 (сообщений: 5).
    Репутация: 7
    Появилась еще 1 проблема аддон не отображает спелл http://wowroad.info/?spell=61384 хотя ID Совпадают с базой клиента но если поставить за место Айдишника тайфуна его тригер http://wowroad.info/?spell=53227 то все работает нормально но над головой у противника отображается Иконка тригера (((
    я так понял что при использование http://wowroad.info/?spell=61384 в комбат лог попадает только его тригерhttp://wowroad.info/?spell=53227 вот теперь вопрос как сделать так чтобы или комбатлог стал показывать что был проюзан тайфун или как заменить иконку на Тригер спеле на иконку тайфуна ?

    - - - Updated - - -

    еще 1 вопрос почемуто иконки кулдаунов над головой игрока начинают моргать как это исправить ????
    СКЕРАМ

  7. #7
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,194
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от павлик Посмотреть сообщение
    Появилась еще 1 проблема аддон не отображает спелл http://wowroad.info/?spell=61384 хотя ID Совпадают с базой клиента но если поставить за место Айдишника тайфуна его тригер http://wowroad.info/?spell=53227 то все работает нормально но над головой у противника отображается Иконка тригера (((
    я так понял что при использование http://wowroad.info/?spell=61384 в комбат лог попадает только его тригерhttp://wowroad.info/?spell=53227 вот теперь вопрос как сделать так чтобы или комбатлог стал показывать что был проюзан тайфун или как заменить иконку на Тригер спеле на иконку тайфуна ?

    - - - Updated - - -

    еще 1 вопрос почемуто иконки кулдаунов над головой игрока начинают моргать как это исправить ????
    Под триггер нужно отдельно условия писать , это в любом случае , либо условия с другим arg2 COMBAT_LOG_EVENT , либо условие по типу если спеллид==1234 , тогда ставить текстуру select(3, GetSpellInfo(1234)) конец.

    По поводу мигающих спелов , это дело не исправимо ,если у тебя есть КД фрейма - она будет мигать при изменении своей позиции относительно экрана. Тут 2 варианта , это делать без кд фрейма (только с таймером) либо делать с кд фреймой и терпеть мигание.

Похожие темы

  1. Помогите с аддоном
    от Криштиано в разделе Аддоны
    Ответов: 2
    Последнее сообщение: 22.08.2015, 19:48
  2. Помогите с аддоном
    от Crazypall в разделе Аддоны
    Ответов: 1
    Последнее сообщение: 14.08.2013, 16:41
  3. Помогите с аддоном плз.
    от velz в разделе Аддоны
    Ответов: 0
    Последнее сообщение: 21.10.2012, 02:41
  4. Помогите с аддоном.
    от Nosach в разделе Аддоны
    Ответов: 1
    Последнее сообщение: 20.08.2012, 01:04
  5. Помогите с аддоном!
    от NaPаLm в разделе Корзина
    Ответов: 0
    Последнее сообщение: 30.01.2012, 17:15

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •