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

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

Страница 2 из 6 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 13 по 24 из 61
  1. #13
    Старожил Аватар для Wbtest2
    Регистрация
    21.02.2015
    Адрес
    Minsk
    Сообщений
    182
    Поблагодарил(а)
    46
    Получено благодарностей: 114 (сообщений: 60).
    Репутация: 114
    И как получить этот GUID?

  2. #14
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от Wbtest2 Посмотреть сообщение
    И как получить этот GUID?
    Я у тебя текстурку стрелочки позаимствую))

  3. #15
    Старожил Аватар для Wbtest2
    Регистрация
    21.02.2015
    Адрес
    Minsk
    Сообщений
    182
    Поблагодарил(а)
    46
    Получено благодарностей: 114 (сообщений: 60).
    Репутация: 114
    Я у тебя текстурку стрелочки позаимствую))
    Ок , я ее тоже позаимствовал)

  4. #16
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Что то получилось )))

  5. #17
    Старожил Аватар для Wbtest2
    Регистрация
    21.02.2015
    Адрес
    Minsk
    Сообщений
    182
    Поблагодарил(а)
    46
    Получено благодарностей: 114 (сообщений: 60).
    Репутация: 114
    И где же это что то?)

  6. #18
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от Wbtest2 Посмотреть сообщение
    И где же это что то?)
    пока что думаю с логикой для фокуса

  7. #19
    Старожил
    Регистрация
    06.02.2012
    Адрес
    Смоленск
    Сообщений
    180
    Поблагодарил(а)
    131
    Получено благодарностей: 57 (сообщений: 47).
    Репутация: 57
    Можно и такой вариант http://rghost.ru/75rRlwp5J , правда для мобов не совсем корректно работает , но я думаю это для пвп. Обновляет раз в сек, можно поставить и быстрее, но я думаю достаточно.

    П.с Отличии от предыдущего варианта, без фокуса не грузит цп.
    Последний раз редактировалось Крольчонок; 12.03.2015 в 18:00.

  8. #20
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Так понял я один сделал в ~300 строчек?)))

    PS в отличии от прошлых вариантов не грузит цп и работает на любых мобах и игроках, даже с одинаковыми именами.




    - - - Updated - - -

    Мда код получился бульдозерным щас чуть поправлю и выложу))

    - - - Updated - - -

    PHP код:

    local EventHandler 
    CreateFrame ("Frame"nilUIParent)
    EventHandler:SetScript("OnEvent", function(selfevent, ...)
        
    self[event](self, ...)
    end)

    EventHandler.Config = {
        
    size 40,
        
    0,
        
    0,
        
    tex "Interface\\AddOns\\PlatesGlow\\arrow"
    };

    EventHandler.nameplates = {}
    EventHandler.isOnScreen = {}
    EventHandler.names       = {}
    EventHandler.realPlate  = {}
    EventHandler.GUIDs      = {}
    EventHandler.plateGUIDs = {}
    EventHandler.onShowHooks   = {}
    EventHandler.onHideHooks   = {}
    EventHandler.onUpdateHooks = {}
    EventHandler.isOnUpdating  = {}

    local scanDelay        1
    local updateDelay    
    1

    local regionNames 
    = { "threatGlow""healthBorder""castBorder""castSheild""spellIcon""highlightTexture""nameText""levelText""dangerSkull""raidIcon""eliteIcon" }
    local regionIndex = {}
    for 
    iname in pairs(regionNames) do 
        
    regionIndex[name] = i
    end

    function GetRegion(framename
        return 
    select(regionIndex[name], frame:GetRegions()) 
    end

    function EventHandler:GetTargetNameplate()
        if 
    self.targeted and self.targeted:IsShown() then
            
    return self.fakePlate[self.targeted] or self.targeted
        end
    end

    local 
    function RecycleNameplate(frame)
        if 
    EventHandler.plateGUIDs[framethen
            EventHandler
    .GUIDs[EventHandler.plateGUIDs[frame]] = false
        end
        local plateName 
    EventHandler:GetName(frame)
        if 
    plateName and EventHandler.names[plateNamethen
            EventHandler
    .names[plateName] = false
        end
        EventHandler
    .plateGUIDs[frame] = false
    end

    local 
    function RemoveHexColor(inputString)
        
    local find inputString:find("|c")
        if 
    find then
            inputString 
    inputString:sub(find+10)
        
    end
        inputString 
    inputString:gsub("|r""")
        return 
    inputString
    end

    local 
    function FoundPlateGUID(frameGUIDunitID)
        
    EventHandler.plateGUIDs[frame] = GUID
        EventHandler
    .GUIDs[GUID] = frame
    end

    function EventHandler:GetName(frame)
        
    local frame self.realPlate[frame] or frame
        local nameRegion 
    GetRegion(frame"nameText"
        if 
    nameRegion and nameRegion.GetText then
            
    return RemoveHexColornameRegion:GetText() )
        
    end
        
    return nil
    end

    function EventHandler:SetupNameplate(frame)
        
    self.isOnScreen[frame] = true
        local plateName 
    self:GetName(frame)
        
    self.nameplates[frame] = plateName
        self
    .names[plateName] = frame
        frame
    .arrow CreateFrame("Frame"nilframe)
        
    frame.arrow.focus frame.arrow:CreateTexture("ARTWORK")
        
    frame.arrow.target frame.arrow:CreateTexture("ARTWORK")
        
    frame.arrow:SetSize(self.Config.size,self.Config.size)
        
    frame.arrow:SetPoint("BOTTOM"frame"TOP"self.Config.self.Config.y)

        
    frame.arrow.focus:SetAllPoints(frame.arrow)
        
    frame.arrow.focus:SetTexture(self.Config.tex)
        
    frame.arrow.focus:SetVertexColor(.2.2.81)
        
    frame.arrow.focus:Hide()

        
    frame.arrow.target:SetAllPoints(frame.arrow)
        
    frame.arrow.target:SetTexture(self.Config.tex)
        
    frame.arrow.target:SetVertexColor(.8.2.21)
        
    frame.arrow.target:Hide()
        
    frame.lnpCheckForTarget true
    end

    local 
    function isValidFrame(frame)
        if 
    frame:GetName() then return false end
        
    if frame:GetID() ~= 0 then return false end
        
    if frame:GetObjectType() ~= "Frame" then return false end
        
    if frame:GetNumChildren() == 0 then return false end
        
    if frame:GetNumRegions() == 0 then return false end
        
    return true
    end

    function EventHandler.OnNameplateHide(frame, ...)
        
    EventHandler.isOnScreen[frame] = false
        EventHandler
    .isOnUpdating[frame] = false
        RecycleNameplate
    (frame)
    end
    local 
    function ourOnHide(...) return EventHandler.OnNameplateHide(...) end


    function EventHandler.OnNameplateShow(frame, ...)
        
    EventHandler:SetupNameplate(frame)
    end
    local 
    function ourOnShow(...) return EventHandler.OnNameplateShow(...) end

    function EventHandler.OnNameplateUpdate(frameelapsed, ...)
        
    EventHandler.isOnUpdating[frame] = true
        
    if frame.lnpCheckForTarget then
            frame
    .lnpCheckForTarget false
            
    if not EventHandler.plateGUIDs[frame] and frame:IsShown() and ((frame:GetAlpha() == 1) and UnitExists("target")) then
                FoundPlateGUID
    (frameUnitGUID("target"), "target")
            
    end
        end
    end
    local 
    function ourOnUpdate(...) return EventHandler.OnNameplateUpdate(...) end

    function EventHandler:HookNameplate(frame)
        if 
    frame:HasScript("OnHide") and not self.onHideHooks[framethen
            self
    .onHideHooks[frame] = true
            frame
    :HookScript("OnHide"ourOnHide)
        
    end
        
    if frame:HasScript("OnShow") and not self.onShowHooks[framethen
            self
    .onShowHooks[frame] = true
            frame
    :HookScript("OnShow"ourOnShow)
        
    end
        
    if frame:HasScript("OnUpdate") and not self.onUpdateHooks[framethen
            self
    .onUpdateHooks[frame] = true
            frame
    :HookScript("OnUpdate"ourOnUpdate)
        
    end
    end

    function EventHandler:IsTarget(frame)
        
    local frame self.realPlate[frame] or frame
        
    return frame:IsShown() and frame:GetAlpha() == and UnitExists("target") or false
    end

    function EventHandler:IsFocus(frame)
        
    local frame self.realPlate[frame] or frame
        
    return frame:IsShown() and frame:GetAlpha() == and UnitExists("target") or false
    end

    local 
    function ScanWorldFrame(n, ...)
        for 
    1do
            
    local frame select(i, ...)
            if 
    frame:IsShown() and isValidFrame(framethen
                
    if not EventHandler.nameplates[framethen
                    EventHandler
    :HookNameplate(frame)
                    
    EventHandler:SetupNameplate(frame)                    
                
    end
            end    
        end
    end

    local lastChildren 
    0
    local 
    function FindNameplates()

        
    local curChildren WorldFrame:GetNumChildren()
        if 
    curChildren ~= lastChildren then
            lastChildren 
    curChildren
            ScanWorldFrame
    (curChildrenWorldFrame:GetChildren())
        
    end
    end

    local 
    function OnEvent(frameevent, ...)
        if 
    event == "PLAYER_TARGET_CHANGED" then
        
    for 1WorldFrame:GetNumChildren() do
            
    local frame select(iWorldFrame:GetChildren())
            if 
    frame:IsShown() and isValidFrame(frame) and frame.arrow then
                frame
    .arrow.target:Hide()
            
    end    
        end
            
    if UnitExists("target"then
                frame
    .checkTarget true
            
    else
                
    EventHandler.targeted nil
            end
        
    elseif event == "PLAYER_FOCUS_CHANGED" then
        
    for 1WorldFrame:GetNumChildren() do
            
    local frame select(iWorldFrame:GetChildren())
            if 
    frame:IsShown() and isValidFrame(frame) and frame.arrow then
                frame
    .arrow.focus:Hide()
            
    end    
        end
            
    if UnitExists("focus"then
                frame
    .checkFocus true
            
    else
                
    EventHandler.focused nil
            end
        end
    end

    local 
    function CheckForTargetGUID()
        
    local unitID "target"
        
    local GUID
        
    for frame in pairs(EventHandler.nameplates) do 
            if 
    EventHandler:IsTarget(framethen
                EventHandler
    .targeted frame
                
    if not EventHandler.plateGUIDs[framethen
                    FoundPlateGUID
    (frameUnitGUID(unitID), unitID)
                
    end
                frame
    .arrow.target:Show()
                return
            
    end
        end
    end

    local 
    function CheckForFocusGUID()
        
    local unitID "focus"
        
    local GUID
        
    for frame in pairs(EventHandler.nameplates) do 
            if 
    EventHandler:IsFocus(framethen
                EventHandler
    .focused frame
                
    if not EventHandler.plateGUIDs[framethen
                    FoundPlateGUID
    (frameUnitGUID(unitID), unitID)
                
    end
                frame
    .arrow.focus:Show()
                return
            
    end
        end
    end

    local 
    function OnUpdate(frameelapsed)
        if 
    frame.checkTarget then
            frame
    .checkTarget false
            CheckForTargetGUID
    ()
        
    end
        
    if frame.checkFocus then
            frame
    .checkFocus false
            CheckForFocusGUID
    ()
        
    end
        FindNameplates
    ()
        
    frame.lastUpdate frame.lastUpdate elapsed
        
    if frame.lastUpdate >= scanDelay then
            frame
    .lastUpdate 0
            
    for framevalue in pairs(EventHandler.isOnScreen) do 
                if (
    value == true and not frame:IsShown()) then
                    EventHandler
    .onHideHooks[frame] = false
                    EventHandler
    .isOnScreen[frame] = false
                    EventHandler
    :HookNameplate(frame)
                    
    EventHandler.OnNameplateHide(frame)
                    
                elseif (
    value == false and frame:IsShown()) then
                    EventHandler
    .onShowHooks[frame] = false
                    EventHandler
    .isOnScreen[frame] = false
                    EventHandler
    :HookNameplate(frame)
                    
    EventHandler:SetupNameplate(frametrue)
                
    end
            end
            
    for framevalue in pairs(EventHandler.isOnUpdating) do 
                if 
    value == false and frame:IsShown() then
                    EventHandler
    .onUpdateHooks[frame] = false
                    EventHandler
    :HookNameplate(frame)
                
    end
            end
        end
    end

    EventHandler
    .lastUpdate 0
    EventHandler
    .checkTarget false
    EventHandler
    .checkFocus false
    EventHandler
    :SetScript("OnUpdate"OnUpdate)
    EventHandler:SetScript("OnEvent"OnEvent)
    EventHandler:RegisterEvent('PLAYER_TARGET_CHANGED')
    EventHandler:RegisterEvent('PLAYER_FOCUS_CHANGED')
    EventHandler:RegisterEvent('PLAYER_ENTERING_WORLD'
    PS копируем аккуратно , внутри может быть вуду , которое осталось от LibNamePlates
    Последний раз редактировалось DreamlØlz; 12.03.2015 в 19:19.

  9. 1 пользователь сказал cпасибо DreamlØlz за это полезное сообщение:

    Wbtest2 (12.03.2015)

  10. #21
    Старожил
    Регистрация
    06.02.2012
    Адрес
    Смоленск
    Сообщений
    180
    Поблагодарил(а)
    131
    Получено благодарностей: 57 (сообщений: 47).
    Репутация: 57
    Цитата Сообщение от DreamlØlz Посмотреть сообщение
    Так понял я один сделал в ~300 строчек?)))

    PS в отличии от прошлых вариантов не грузит цп и работает на любых мобах и игроках, даже с одинаковыми именами.
    Сколько кода столько и багов Если скрыть и показать, то фокус будет на ком попало, так же и багается таргет.
    http://mepic.ru/up/pic_b/00e8a8b149d...2062bd67c9.jpg (заменена только текстура)

    П.с И цп нагружает раз в 10 больше чем мой выше :)
    Последний раз редактировалось Крольчонок; 12.03.2015 в 19:44.

  11. #22
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от Крольчонок Посмотреть сообщение
    Сколько кода столько и багов Если скрыть и показать, то фокус будет на ком попало, так же и багается таргет.
    http://mepic.ru/up/pic_b/00e8a8b149d...2062bd67c9.jpg (заменена только текстура)

    П.с И цп нагружает раз в 10 больше чем мой выше :)
    Везет тебе , на 1280х1024 пиксели идеальные получаются)))

  12. #23
    Старожил
    Регистрация
    06.02.2012
    Адрес
    Смоленск
    Сообщений
    180
    Поблагодарил(а)
    131
    Получено благодарностей: 57 (сообщений: 47).
    Репутация: 57
    Цитата Сообщение от DreamlØlz Посмотреть сообщение
    Везет тебе , на 1280х1024 пиксели идеальные получаются)))
    В смысле идеальные?

    П.с Так по лучше будет http://youtu.be/D_goa3ps2ZU

  13. #24
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от Крольчонок Посмотреть сообщение
    В смысле идеальные?

    П.с Так по лучше будет http://youtu.be/D_goa3ps2ZU
    Ну в смысле бортики на скрине в 1 пиксел)) У меня на 1080р бывает неровности до 3х пикселей с однйо стороны(

    PS та сделать для игроков то легко , особенно если таргет плейту находить по прозрачности Проблема в НПС ))

Страница 2 из 6 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Квест Подтверждение Подлинности!
    от Sketers в разделе Корзина
    Ответов: 1
    Последнее сообщение: 02.04.2014, 07:50
  2. Ответов: 0
    Последнее сообщение: 30.05.2012, 12:02
  3. Ответов: 1
    Последнее сообщение: 07.05.2012, 14:33

Ваши права

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