취미/게임

와우(wow) 리치왕의 분노 (3.3.5) 몬스터 생명바 밑으로 몬스터가 바라보는 대상자 표시

soulowner 2025. 8. 11. 17:26
반응형

TargetWatcherNameplates.zip
0.00MB


TargetWatcherNameplates.toc

## Interface: 30300
## Title: Target Watcher Nameplates
## Notes: 몬스터 생명바 밑으로 몬스터가 바라보는 대상이 표시됩니다.
## Author: Soulowner
## Version: 1.0

TargetWatcherNameplates.lua

 

TargetWatcherNameplates.lua

local addon = CreateFrame("Frame")
addon:SetScript("OnUpdate", function(self, elapsed)
    self.timer = (self.timer or 0) + elapsed
    if self.timer < 0.5 then return end
    self.timer = 0

    local children = { WorldFrame:GetChildren() }
    for _, frame in ipairs(children) do
        if frame:IsVisible() and frame:GetName() == nil then
            local name = nil
            for _, region in ipairs({ frame:GetRegions() }) do
                if region:IsObjectType("FontString") then
                    name = region:GetText()
                    break
                end
            end

            if name then
                -- 이름표에 대응되는 유닛 찾기
                local targetOfTarget = nil
                for i = 1, GetNumRaidMembers() do
                    local unit = "raid" .. i .. "target"
                    if UnitExists(unit) and UnitName(unit) == name then
                        local targetUnit = unit .. "target"
                        if UnitExists(targetUnit) then
                            targetOfTarget = UnitName(targetUnit)
                            break
                        end
                    end
                end
                for i = 1, GetNumPartyMembers() do
                    local unit = "party" .. i .. "target"
                    if UnitExists(unit) and UnitName(unit) == name then
                        local targetUnit = unit .. "target"
                        if UnitExists(targetUnit) then
                            targetOfTarget = UnitName(targetUnit)
                            break
                        end
                    end
                end

                -- 텍스트 표시
                if not frame.targetText then
                    frame.targetText = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
                    frame.targetText:SetPoint("TOP", frame, "BOTTOM", 0, -2)
                    frame.targetText:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE")
                    frame.targetText:SetTextColor(1, 0.5, 0)
                end

                if targetOfTarget then
                    frame.targetText:SetText("→ " .. targetOfTarget)
                    frame.targetText:Show()
                else
                    frame.targetText:SetText("")
                    frame.targetText:Hide()
                end
            end
        end
    end
end)
반응형