Цитата Сообщение от DreamlØlz Посмотреть сообщение
EndScense хукнуть и на DirectX сделать ее, координаты получать с памяти клиента.

с градиентом
PHP код:
local f CreateFrame("frame""arr"UIParent)

f:SetSize(150150)
f:SetPoint("CENTER", -200, -120)

f:SetBackdrop({
    --
bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], 
    --
edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], 
    --
edgeSize 10
    --
insets={left 3right 3top 3bottom 3}
})

f.arrow f:CreateTexture(nil"OVERLAY")
f.arrow:SetPoint("CENTER"00)
f.down false

local 
function GetDistance(x1x2y1y2)
    return ((
x1 x2) ^ 2) + ((y1 y2) ^ 2)
end

local 
function GetDir(uxuypxpy)

    if 
not WorldMapFrame:IsShown() then
        SetMapToCurrentZone
()
    
end
 
    
if px == and py == 0 then
        
return 0, print("3.14зда рулю, на этой карте нельзя сделать стрелочку")
    
end
    
    local w
WorldMapButton:GetSize()
    
    return -(
math.rad(((GetPlayerFacing() - math.atan2((px ux) * w,(py uy) * h)) * 180 math.pi 180) % 360 180))
end

local 
function CGrad(perc, ...)
    
local num select("#", ...)
    
local rg111

    num 
num 3

    local segment
relperc math.modf(perc * (num 1))
    
local r1g1b1r2g2b2
    r1
g1b1 select((segment 3) + 1, ...), select((segment 3) + 2, ...), select((segment 3) + 3, ...)
    
r2g2b2 select((segment 3) + 4, ...), select((segment 3) + 5, ...), select((segment 3) + 6, ...)

    if 
not r2 or not g2 or not b2 then
        
return r1g1b1
    
else
        return 
r1 + (r2 r1) * relpercg1 + (g2 g1) * relpercb1 + (b2 b1) * relperc
    end
    
    
if (perc == 1)
        
rgselect(num 2, ...), select(num 1, ...), select(num, ...)
    else
        
num num 3
        
        local segment
relperc math.modf(perc * (num 1))
        
        
    
end
    
    
return rgb
end

local count 
0

f
:SetScript("OnUpdate", function(selfelapsed)
    
local pxpy GetPlayerMapPosition("player")
    
pxpy px 100py 100
    
    local cell
    
    local unit 
string.format("party%d"1)
    if (
UnitExists(unit)) then
        
        local ux
uy GetPlayerMapPosition(unit)
            
        
uxuy ux 100uy 100
            
        local udist 
GetDistance(pxuxpyuy)
            
        if (
udist 0.02then
                
            
if (self.downthen
                    
                self
.arrow:SetHeight(70)
                
self.arrow:SetWidth(53)
                
self.arrow:SetTexture("Interface\\AddOns\\TomTom\\Images\\Arrow-UP")
                
self.arrow:SetVertexColor(010)
                
self.down false
            end
                
            count 
count 1
            
if count >= 55 then count 0 end

            cell 
count
        
            local col 
cell 9
            local row 
floor(cell 9)

            
self.arrow:SetTexCoord((col 53) / 512, ((col 1) * 53) / 512, (row 70) / 512, ((row 1) * 70) / 512)
        else
            
            if (
not self.downthen
                    
                self
.arrow:SetHeight(56)
                
self.arrow:SetWidth(42)
                
self.arrow:SetTexture("Interface\\AddOns\\TomTom\\Images\\Arrow")
                
self.down true
            end
                
            local angle 
GetDir(uxuypxpy)
    
            
self.arrow:SetVertexColor(CGrad(math.abs((math.pi math.abs(angle)) / math.pi), 100110010))
            
            
cell floor(angle / (math.pi 2) * 108 0.5) % 108
            local col 
cell 9
            local row 
floor(cell 9)

            
self.arrow:SetTexCoord((col 56) / 512, ((col 1) * 56) / 512, (row 42) / 512, ((row 1) * 42) / 512)
        
end
    end
end

NotWorkThis^
от слова совсем.