f=CreateFrame("Frame") f:RegisterEvent("LOSS_OF_CONTROL_ADDED") f:RegisterEvent("LOSS_OF_CONTROL_UPDATE") f:SetScript("OnEvent",function()for b in pairs(ActionBarActionEventsFrame.frames)do b.cooldown:SetLossOfControlCooldown(0,0)end end)
CTT=CreateFrame("Frame")CTT:SetParent(TargetFrame)CTT:SetPoint("Left",TargetFrame,-30,5)CTT:SetSize(25,25)CTT.t=CTT:CreateTexture(nil,BORDER)CTT.t:SetAllPoints()CTT.t:SetTexture("Interface\\Icons\\ABILITY_DUALWIELD")CTT:Hide() local function FrameOnUpdate(self) if UnitAffectingCombat("target") then self:Show() else self:Hide() end end local g = CreateFrame("Frame") g:SetScript("OnUpdate", function(self) FrameOnUpdate(CTT) end) CFT=CreateFrame("Frame")CFT:SetParent(FocusFrame)CFT:SetPoint("Left",FocusFrame,-30,5)CFT:SetSize(25,25)CFT.t=CFT:CreateTexture(nil,BORDER)CFT.t:SetAllPoints()CFT.t:SetTexture("Interface\\Icons\\ABILITY_DUALWIELD")CFT:Hide() local function FrameOnUpdate(self) if UnitAffectingCombat("focus") then self:Show() else self:Hide() end end local g = CreateFrame("Frame") g:SetScript("OnUpdate", function(self) FrameOnUpdate(CFT) end)
Координаты и размер иконки комбата настраиваются в строках:
UFP = "UnitFramePortrait_Update" UICC = "Interface\\TargetingFrame\\UI-Classes-Circles" CIT = CLASS_ICON_TCOORDS hooksecurefunc(UFP,function(self) if self.portrait then if UnitIsPlayer(self.unit) and UnitIsVisible(self.unit) then self.portrait:SetTexture(UICC) self.portrait:SetTexCoord(unpack(CIT[select(2,UnitClass(self.unit))])) else self.portrait:SetTexCoord(0,1,0,1) end end end)
Шрифт комбат текста
Для этого необходимо положить файл с нужным вам шрифтом в папку с аддоном и переименовать его в font.
CombatTextFont
Код:
local fontName = "Interface\\AddOns\\NeilyoScript\\font.ttf" local fontHeight = 40 local fFlags = ""
local function FS_SetFont() DAMAGE_TEXT_FONT = fontName COMBAT_TEXT_HEIGHT = fontHeight COMBAT_TEXT_CRIT_MAXHEIGHT = fontHeight + 2 COMBAT_TEXT_CRIT_MINHEIGHT = fontHeight - 2 local fName, fHeight, fFlags = CombatTextFont:GetFont() CombatTextFont:SetFont(fontName, fontHeight, fFlags)
end FS_SetFont()
Enemy Cooldowns
Скрипт, отображающий использованные кулдауны врагов. Этот код я нашел на одном из китайских форумов, где умельцы смогли привести его в рабочее состояние.
Прежде всего, вам необходимо выбрать местоположение данных абилок. Для этого в игре введите команду /fstack.
В появившемся окне будут отображаться координаты X Y относительно нижнего левого угла монитора. Координаты по X отличаются на 22 для каждой иконки и по 30 для Y. Координаты указываются здесь:
local frame = CreateFrame("FRAME", "DefaultUIScrips")
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
local function eventHandler(self, event, ...)
StopwatchFrame:Show()
StopwatchFrame:SetScale(.01)
StopwatchFrame:ClearAllPoints()
StopwatchFrame:SetPoint("TOPLEFT",23400,0)
StopwatchTicker:SetScale(100)
StopwatchTicker:SetPoint("TOPLEFT",0,-80)
StopwatchFrame:SetMovable(false)
end
frame:SetScript("OnEvent", eventHandler)
Remove Keybind Icon on Action Bars
Код:
/run for i = 1, 12 do _G["BonusActionButton"..i.."HotKey"]:SetAlpha(0) end /run for i = 1, 12 do _G["MultiBarBottomLeftButton"..i.."HotKey"]:SetAlpha(0) end /run for i = 1, 12 do _G["MultiBarBottomRightButton"..i.."HotKey"]:SetAlpha(0) end /run for i = 1, 12 do _G["ActionButton"..i.."HotKey"]:SetAlpha(0) end /run for i = 1, 12 do _G["MultiBarLeftButton"..i.."HotKey"]:SetAlpha(0) end /run for i = 1, 12 do _G["MultiBarRightButton"..i.."HotKey"]:SetAlpha(0) end
Remove Macro Text from Action Bars
Код:
/run for i = 1, 12 do _G["BonusActionButton"..i.."Name"]:Hide() end
/run for i = 1, 12 do _G["ActionButton"..i.."Name"]:Hide() end /run for i = 1, 12 do _G["MultiBarBottomLeftButton"..i.."Name"]:Hide() end /run for i = 1, 12 do _G["MultiBarBottomRightButton"..i.."Name"]:Hide() end
Show Percent HP AND Health Number on Target and Focus Frame
Move Arena Enemy Cast Bars (all at once). This also resizes the Enemy Arena Frame to 1.23 scale.
Код:
/run V={B="ArenaEnemyFrame"} for i=1,5 do _G[V.B..i]:SetScale(1.23); _G[V.B..i.."CastingBar"]:SetPoint("RIGHT",95,0); end;
Determine Your Current Map Coordinates
Код:
/run px,py=GetPlayerMapPosition("player"); DEFAULT_CHAT_FRAME:AddMessage(format("You are at: %s (%0.1f, %0.1f)",GetZoneText(),px*100,py*100));
---by Xandyn---
Bartender Like Action Bars
Код:
/run MultiBarBottomRight:SetScale(0.72);MultiBarBottomLeft:SetScale(0.72);MainMenuBar:ClearAllPoints();MainMenuBar:SetPoint("CENTER", UIParent, "CENTER", 0, -800);MainMenuBar.SetPoint = function() end /run for i=1,12 do local s,t=_G["MultiBarBottomRightButton"..i],_G["MultiBarBottomLeftButton"..i];s[CA](s);s[SP](s,"CENTER",-310+i*38.5,625);t[CA](t);t[SP](t,"CENTER",200+i*38.5,662) end
Improved Chat Window (prat-like)
Код:
/run for i = 1, NUM_CHAT_WINDOWS do local eb = _G['ChatFrame'..i..'EditBox'] eb:Hide()eb:HookScript('OnEnterPressed', function(s)s:Hide() end)end;ChatFrame1:SetClampedToScreen(nil) /run ChatFrame1EditBox:SetPoint("TOPLEFT",GeneralDockManager,"TOPLEFT");ChatFrame1EditBox:EnableMouse(false);ChatFrame1:EnableMouse(false) /run ChatFrame1Tab:ClearAllPoints();ChatFrame1Tab:SetPoint("CENTER", UIParent, "CENTER", -990, -990);ChatFrame1Tab.SetPoint = function() end /run ChatFrame1:SetFont("Fonts\\ARIALN.TTF", 13, "OUTLINE");MinimapCluster:Hide();BuffButton1:SetScale(1.05);for i=1,16 do CreateFrame("Button", "TargetFrameBuff"..i, TargetFrame, "FrameTemplate"):SetScale(1.3) end
Casting Bar Colors (target/focus)
Код:
/run SetStatusBarColor(0,0.45,0.9); CastingBarFrame.SetStatusBarColor = function() end /run FocusFrameSpellBar:SetStatusBarColor(0,0.45,0.9); FocusFrameSpellBar.SetStatusBarColor = function() end
target and focus frame - show class icon AND changes background of the frame to class color, looks like pitbull
Код:
-- Class colors in target name background
local frame = CreateFrame("FRAME") frame:RegisterEvent("PLAYER_ENTERING_WORLD") frame:RegisterEvent("PARTY_MEMBERS_CHANGED") frame:RegisterEvent("PLAYER_TARGET_CHANGED") frame:RegisterEvent("PLAYER_FOCUS_CHANGED") frame:RegisterEvent("UNIT_FACTION")
local function eventHandler(self, event, ...) local unitid = ...
if (event == "UNIT_FACTION" and unitid ~= "target" and unitid ~= "focus") then return end
if UnitIsPlayer("target") then _, class = UnitClass("target") c = RAID_CLASS_COLORS[class] TargetFrameNameBackground:SetVertexColor(c.r, c.g, c.b ) end if UnitIsPlayer("focus") then _, class = UnitClass("focus") c = RAID_CLASS_COLORS[class] FocusFrameNameBackground:SetVertexColor(c.r, c.g, c.b ) end end
frame:SetScript("OnEvent", eventHandler)
-- Class colors in focus name background
local frame = CreateFrame("FRAME") frame:RegisterEvent("PLAYER_ENTERING_WORLD") frame:RegisterEvent("PARTY_MEMBERS_CHANGED") frame:RegisterEvent("PLAYER_FOCUS_CHANGED") frame:RegisterEvent("UNIT_FACTION")
local function eventHandler(self, event, ...) local unitid = ...
if (event == "UNIT_FACTION" and unitid ~= "focus") then return end
if UnitIsPlayer("focus") then _, class = UnitClass("focus") c = RAID_CLASS_COLORS[class] FocusFrameNameBackground:SetVertexColor(c.r, c.g, c.b) end end frame:SetScript("OnEvent", eventHandler)
-- Brighter targetname and focusname textures (fix)
for _, BarTextures in pairs({TargetFrameNameBackground, FocusFrameNameBackground}) do BarTextures:SetTexture("Interface\\TargetingFrame\\UI-StatusBar") end
/run AEF="ArenaEnemyFrame";C="CENTER";Ui=UIParent;R="RIGHT";CB="CastingBar";N="Name";CBI="CastingBarIcon";PF="PetFrame"; for i=1,3 do _G[AEF..i]:ClearAllPoints();_G[AEF..i]:ClearAllPoints();_G[AEF..i]:SetScale(1.64); end; /run for i=1,3 do _G[AEF..i..PF]:Hide();_G[AEF..i..N]:Hide();_G[AEF..i..CB]:SetWidth(71);_G[AEF..i..CBI]:SetPoint("right", -71, 0);_G[AEF..i..CBI]:SetHeight(14);_G[AEF..i..CB]:SetStatusBarColor(0,0.45,0.9); end /run _G[AEF.."1"]:SetPoint(C,Ui,C,175,-3);_G[AEF.."2"]:SetPoint(C,Ui,C,175,-38);_G[AEF.."3"]:SetPoint(C,Ui,C,175,-73); for i=1,3 do _G[AEF..i].SetPoint = function() end; _G[AEF..i..CB].SetStatusBarcolor = function() end end /run ArenaEnemyFrame1CastingBar:SetPoint(R,-30,-20.5);ArenaEnemyFrame2CastingBar:SetPoint(R,-30,-20);ArenaEnemyFrame3CastingBar:SetPoint(R,-30,-19.5);for i=1,3 do _G[AEF..i..PF].Show = function() end end /run for i=1,3 do _G[AEF..i..PF].Show = function() end _G[AEF..i.."ManaBarText"]:Hide();_G[AEF..i.."HealthBarText"]:Hide() _G[AEF..i.."ManaBarText"].Show = function() end _G[AEF..i.."HealthBarText"].Show = function() end end
/run hooksecurefunc("TargetFrame_UpdateAuraPositions",function(self) local g=_G["TargetFrameBuff1"] if g then g:ClearAllPoints();g:SetPoint("CENTER",TargetFrame,"CENTER",67,10)end end); TargetFrame.maxBuffs = 16 /run TargetFrameBuff1:SetScale(1.2) /run TargetFrameDebuff1:SetScale(1.2) etc
hooksecurefunc("CastingBarFrame_OnUpdate",function(self, elapsed) if not self.timer then return end if self.update and self.update < elapsed then if self.casting then self.timer:SetText(format("%2.1f/%1.1f", max(self.maxValue -self.value,0),self.maxValue)) elseif self.channeling then self.timer:SetText(format("%.1f", max(self.value,0))) else self.timer:SetText("") end self.update =.1 else self.update =self.update - elapsed end end)
Arena Team Statistics
Код:
/script for i=0,1 do teamName,oldTeamRating,newTeamRating, teamRating=GetBattlefieldTeamInfo(i);SendChatMessage(teamName .. " (now: " .. newTeamRating .. "; before: " .. oldTeamRating .. "; mmr: " .. teamRating .. ")", "PARTY"); end
Name Change Scripts
Код:
local frame = CreateFrame("FRAME", "NameChangeScripts") frame:RegisterEvent("PLAYER_ENTERING_WORLD") local function eventHandler(self, event, ...)
-- EDIT THIS LINE BELOW TO CHANGE YOUR NAME NewName = " " PN = GetUnitName("player")
-- Change Player UnitFrame Name PFNC = CreateFrame("Frame", "PlayerFrameNameChange") local function ChangePlayerName(self) PlayerFrame.name:SetText(NewName) end PFNC:SetScript("OnUpdate", ChangePlayerName)
-- Change Target UnitFrame Name TFNC = CreateFrame("Frame", "TargetFrameNameChange") local function ChangeTargetName(self) local TN = GetUnitName("target") if PN == TN then TargetFrame.name:SetText(NewName) end end TFNC:SetScript("OnUpdate", ChangeTargetName)
-- Change Target's Target UnitFrame Name TFTNC = CreateFrame("Frame", "TargetFrameTargetNameChange") local function ChangeTargetofTargetName(self) local TTN = GetUnitName("targettarget") if PN == TTN then TargetFrameToT.name:SetText(NewName) end end TFTNC:SetScript("OnUpdate", ChangeTargetofTargetName)
-- Change Focus UnitFrame Name FFNC = CreateFrame("Frame", "FocusFrameNameChange") local function ChangeFocusName(self) local FN = GetUnitName("focus") if PN == FN then FocusFrame.name:SetText(NewName) end end FFNC:SetScript("OnUpdate", ChangeFocusName)
-- Change Focus' Target UnitFrame Name FFTNC = CreateFrame("Frame", "FocusFrameTargetNameChange") local function ChangeFocusTargetName(self) local FTN = GetUnitName("focustarget") if PN == FTN then FocusFrameToT.name:SetText(NewName) end end FFTNC:SetScript("OnUpdate", ChangeFocusTargetName)
end frame:SetScript("OnEvent", eventHandler)
Хелз бары по цвету класса
Код:
local UnitIsPlayer, UnitIsConnected, UnitClass, RAID_CLASS_COLORS = UnitIsPlayer, UnitIsConnected, UnitClass, RAID_CLASS_COLORS local _, class, c
local function colour(statusbar, unit) if UnitIsPlayer(unit) and UnitIsConnected(unit) and unit == statusbar.unit and UnitClass(unit) then _, class = UnitClass(unit) c = CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS[class] or RAID_CLASS_COLORS[class] statusbar:SetStatusBarColor(c.r, c.g, c.b) end end
:: insert "elseif(e>0)then" -> "elseif(e>1)" in macro 3
-- disable to show 0.x sec with enabling red text
:: insert "return"%.1f",e" -> "return"%d",e" in macro 3
-- DEATH KNIGHT RUNE COOLDOWN DISABLE
instead of macro 6, use this two macro
/run function gct(f)if not cDB[f]then local c=gict(f)c:SetSize(c.s*crt,c.s*crt)sf(c,1)cDB[f]=c;end return cDB[f]end
/run function cvf(f,s,d)if(string.find(f:GetName(),"Rune") ~= nil)then return end local c=gct(f)if(s and d)then c.b=s;c.d=d;if(s>0 and d>1.5)then c.c=0;c.r=d-(GetTime()-s);suc(c)else rt(c)end end end
/run function rt(f)f.e=nil f.t:SetText("")f:SetScript(co,nil)end function sf(f,v)f.t:SetFont(ct,f.s*v,ol)end function acv(b)local x=b.cooldown x.a=b.action action[x]=x end function scv(p,f,po,s)if(s>1)then f.t:SetPoint(po,p)end f.s=s;end
/run function sr(f,e)if(e>60)then sf(f,0.7)if(f.s==cs)then return"%d:%02d",e,e else return"%dm",e+60,e end elseif(e>=cp)then sf(f,1)f.t:SetTextColor(1,1,0,1)return"%d",e elseif(e>0)then sf(f,0.9)f.t:SetTextColor(1,0,0,1)return"%.1f",e else return end end
/run function suc(f)if not f.e then f.e=1;f:SetScript(co,function(s,e)f.c=f.c+e;local fo,v1,v2=sr(f,f.r-f.c)if not fo then rt(f)elseif not v2 then f.t:SetFormattedText(fo,v1)else f.t:SetTextColor(1,1,1,1)f.t:SetFormattedText(fo,v1/60,v2%60)end end)end end
/run function scs(p,f)if(p:GetSize()<35)then scv(p,f,ptp,ps)else scv(p,f,ctp,cs)end end function gict(f)local c=ccf("Frame",nil,f)c:SetFrameLevel(f:GetFrameLevel()+5)c.t=c:CreateFontString(nil,"OVERLAY")c.t:SetAllPoints(c)scs(f:GetParent(),c)return c;end
/run function gct(f)if not cDB[f]then local c=gict(f)c:SetSize(c.s*crt,c.s*crt)sf(c,1)cDB[f]=c;end return cDB[f]end function cvf(f,s,d)local c=gct(f)if(s and d)then c.b=s;c.d=d;if(s>0 and d>1.5)then c.c=0;c.r=d-(GetTime()-s);suc(c)else rt(c)end end end
/run function cvc(DB)for c in pairs(DB)do if c.a then local s,d=gac(c.a)cvf(c,s,d)end end end function pcv(_,e)if e==cau then cvc(action)else cvc(cDB)end end for _,b in pairs(ActionBarButtonEventsFrame.frames)do acv(b)end
/run function cf(i,s,x,y)local _,_,t=gsi(s)local f=crf("Frame",nil,up)f:SetPoint("CENTER",x,y)f:SetSize(ic,ic)f.t = f:CreateTexture(nil,"BORDER")f.t:SetAllPoints(true)f.t:SetTexture(t)f.c=CreateFrame(cdf,nil,f)f.c:SetAllPoints(f)return f;end
/run function ud(f,ls,lc)f:SetScript("OnEvent",function(_,_,_,e,_,_,_,b,_,_,_,_,_,s)if((bit.band(b,0x40) == 0x40)and e=="SPELL_CAST_SUCCESS"and s==ls)then sfc(f.c,GetTime(),lc,1)end end)f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")end
/run for i,s in ipairs(li)do _G["ib"..i] = cf(i,s,xp+(ic+5)*ce((i-1)%n),yp-(ic+5)*ce(i/n))ud(_G["ib"..i],s,cd[i])end
/run ik=crf("Frame")ik:SetScript("OnEvent",function()local _,t=ih()for i,s in ipairs(li)do local f=_G["ib"..i]if(t=="arena"or fl==0)then f:Show()f.c:Show()else f:Hide()f.c:Hide()end end end)ik:RegisterEvent(pe)
buff Tracker
Код:
--[[ Buff Tracker
bl = icon list bs = icon size xb = x positon of buff Tracker yb = y positon of buff Tracker
/run function Cb(i,s)local _,_,t3=gi(s)local f=cbf("Frame")f:SetSize(bs,bs)f.t=f:CreateTexture(nil,bdr)f.t:SetAllPoints(true)f.t:SetTexture(t3)f.f=f:CreateFontString(nil,bdr)f.f:SetFont(st,12,"OUTLINE")f.f:SetPoint("BOTTOMRIGHT",0,0)return f;end
/run function vb(s,i,row)local b1,_,_,b4=cu(s)local f=_G["B"..i]if b1 then f:Show()f:SetPoint("CENTER",xb+(bs+5)*bm((row-1)%br),yb-(bs+10)*bm(row/br))if(b4>1)then f.f:SetText(b4)end row=row+1;end return row;end
/run function ub()for i,s in ipairs(bl)do local b,_,_,_,_,_,k=cu(s)if b then local vt=fm(k-GetTime())if (vt>=60)then vt=bm(vt/60)_G["B"..i].c:SetText(vt.."m")elseif vt >= 0 then _G["B"..i].c:SetText(vt.."s")end end end end
/run function Cc(f)f.c=f:CreateFontString(nil,bdr)f.c:SetFont(st,12,"OUTLINE")f.c:SetPoint("CENTER",0,-20)end function db()for i in ipairs(bl)do _G["B"..i]:Hide()end end
/run for i,s in ipairs(bl)do _G["B"..i]=Cb(i,s)Cc(_G["B"..i])_G["B"..i]:Hide()end function bb()db()local bw=1;for i,s in ipairs(bl)do bw=vb(s,i,bw)end end bk=cbf("Frame")bk:SetScript("OnEvent",bb)bk:SetScript("OnUpdate",ub)bk:RegisterEvent(be)
/run function rDR(f)f.e=1;f.t:SetTexture(nil)f.c:Hide()end function sDR(f)f.e=f.e+1;f.c:Show()end function gDRt(i,j)return _G["drc"..i..":"..j]end function runDR(f,n)CooldownFrame_SetTimer(f.c,GetTime(),18,1)eDR(f,n)sDR(f)oDR(n)end
/run function eDR(f,n)local t=1;f:SetScript("OnUpdate",function(s,e)t=t+e;if(t>=18)then f:SetScript("OnUpdate",nil)rDR(f)oDR(n)end end)end function cDR(f,n,s)if f.e<4 then local _,_,t=GetSpellInfo(s)f.t:SetTexture(t)runDR(f,n)end end
/run function oDR(n)local r=1;for j in ipairs(DRt)do local f=gDRt(n,j)f:SetPoint(dp,gaef(f,n),dp,drx+(r-1)*50,0)r=r+1;end end function uDR(n,s)for i,t in ipairs(DRt)do for _,j in ipairs(t)do if s==j then cDR(gDRt(n,i),n,s)end end end end
/run function DRc(i,j)local f=CreateFrame("Frame",nil,UIParent)f:SetSize(drs,drs)f.t=f:CreateTexture(nil,"BORDER")f.t:SetAllPoints(true)f.c=CreateFrame("Cooldown",nil,f)f.c:SetAllPoints(f)f.e=1 return f end
/run function clDR(_,e,_,_,_,_,_,d,_,_,_,s)if(e=="SPELL_AURA_REMOVED" or e=="SPELL_AURA_REFRESH")then for i=1,5 do local ag=UnitGUID("arena"..i)if(ag ~= nil and d==ag)then uDR(i,s)end end end end
/run function iDRt(o,m)for i=1,m do for j in ipairs(DRt)do local f=gDRt(i,j)rDR(f)if o then f:Show()end end end end for i=1,5 do for j in ipairs(DRt)do _G["drc"..i..":"..j]=DRc(i,j)end end
/run dt=CreateFrame("Frame")dt:SetScript("OnEvent",function(_,e,...)if e==dre then clDR(...)elseif e==dra then iDRt(1,GetNumArenaOpponents())else iDRt(nil,5)end end)dt:RegisterEvent(dra)dt:RegisterEvent(drp)dt:RegisterEvent(dre)
Macro 1: /run t=CreateFrame("Frame") t:SetPoint("CENTER",0,0) t:SetSize(40,40) t.c=CreateFrame("Cooldown","cd1") t.c:SetAllPoints(t) t.t=t:CreateTexture(nil,"BORDER") t.t:SetAllPoints() t.t:SetTexture("Interface\\Icons\\inv_potion_85") Macro 2: /run t:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") t:SetScript("OnEvent",function(...)local _,_,_,_,x=select(3, ...) if x==UnitName("Player")then local _,_,y=select(12, ...) if y==109721 then CooldownFrame_SetTimer(cd1,GetTime(),30,1)end end end)
You only need to change 3 things: inv_potion_85, 109721 and 30(cooldown). Check out the list below.
Vial of Shadows inv_potion_85
LFR 109721
Normal 107994
Heroic 109724
Cunning of the Cruel inv_misc_coin_09
LFR 109798
Normal 108005
Heroic 109800
Bone-Link Fetish inv_misc_coin_12
LFR 109752
Normal 107997
Heroic 109754
Insignia of the Corrupted Mind inv_bijou_purple
LFR 109787
Normal 107982
Heroic 109789
Creche of the Final Dragon creatureportrait_twilightshammer_dragonegg_01
LFR 109742
Normal 107988
Heroic 109744
Starcatcher Compass inv_relics_sundial
LFR 109709
Normal 107982
Heroic 109711
Seal of the Seven Signs inv_relics_runestone
LFR 109802
Normal 107982
Heroic 109804
How do I move the icon? change -- t:SetPoint("CENTER",0,0) -- in Macro 1 to your likings
OR
use this Macro to drag the icon: /run local f=t; f:SetMovable(true); f:EnableMouse(true); f:SetUserPlaced(true); f:SetScript("OnMouseDown", f.StartMoving); f:SetScript("OnMouseUp", f.StopMovingOrSizing);
Аддон PartyCooldowns отображает кулдауны игроков, находящихся в вашей группе. Все настраивается самостоятельно, настройки аналогичны EnemyCooldowns(вы выбираете спеллы, координаты и т.п.).
Значения t не меняйте, так и начинайте с t100. Например, если будет 20 пати абилок, то значения переименовывайте в t100 по t120.
local f = CreateFrame("Frame") local function Update(self, event, ...) local RECUP = GetSpellInfo(73651) local SLICE = GetSpellInfo(5171) if event == "PLAYER_ENTERING_WORLD" then Frame="Frame";CreateFrame=CreateFrame;Border="Border" REC=CreateFrame(Frame)REC.c=CreateFrame("Cooldown","RC",REC.t)REC.c:SetAllPoints(REC) REC:SetPoint("BOTTOMRIGHT",PlayerFrame,-3,6)REC:SetSize(26,26)REC.t=REC:CreateTexture(nil,Border) REC.t:SetAllPoints()REC.t:SetTexture("Interface\\Icons\\ability_rogue_recuperate") SND=CreateFrame(Frame)SND.c=CreateFrame("Cooldown","SN",SND.t)SND.c:SetAllPoints(SND) SND:SetPoint("BOTTOMRIGHT",PlayerFrame,-29,6)SND:SetSize(26,26)SND.t=SND:CreateTexture(nil,Border) SND.t:SetAllPoints()SND.t:SetTexture("Interface\\Icons\\ability_rogue_slicedice") end if event == "UNIT_AURA" then local maxx = 0 local _, name, d, D, x for i = 1, 40 do name, _, icon, _, _, d, x = UnitBuff("player", i) if not name then break end if name == RECUP then maxx = x D = d if D > 0 then RC:SetCooldown(maxx - D - 0.5, D) end elseif name == SLICE then maxx = x D = d if D > 0 then SN:SetCooldown(maxx-D - 0.5,D) end end end end end f:RegisterEvent("PLAYER_ENTERING_WORLD") f:RegisterEvent("UNIT_AURA") f:SetScript("OnEvent", Update)
Русифицированная версия аддона SafeQueue
#899
Благодаря пользователю портала Отрицаниеудалось локализовать аддон для русского клиента WoW.
По моей просьбе он сделал две версии аддона. В light-версии вырезаны все настройки и есть только самое
необходимое (скрытие кнопки "Leave Queue" и таймер очереди). Обсуждение можно найти в этой теме.
hooksecurefunc("PlayerFrame_UpdateStatus", function() if IsResting("player") then PlayerStatusTexture:Hide() PlayerRestIcon:Hide() PlayerRestGlow:Hide() PlayerStatusGlow:Hide() elseif PlayerFrame.inCombat then PlayerStatusTexture:Hide() PlayerAttackIcon:Hide() PlayerRestIcon:Hide() PlayerAttackGlow:Hide() PlayerRestGlow:Hide() PlayerStatusGlow:Hide() PlayerAttackBackground:Hide() end end)
Прозрачный бэкграунд у таргета и фокуса
Скрытый текст
Код:
hooksecurefunc('TargetFrame_CheckFaction', function(self) if ( not UnitPlayerControlled(self.unit) and UnitIsTapped(self.unit) and not UnitIsTappedByPlayer(self.unit) and not UnitIsTappedByAllThreatList(self.unit) ) then self.nameBackground:SetVertexColor(0.0, 0.0, 0.0, 0.5); if ( self.portrait ) then self.portrait:SetVertexColor(0.5, 0.5, 0.5); end else self.nameBackground:SetVertexColor(0.0, 0.0, 0.0, 0.5); if ( self.portrait ) then self.portrait:SetVertexColor(1.0, 1.0, 1.0); end end end)
---By Fernir---
Как менять текстуру хп баров
Код:
hooksecurefunc(getmetatable(PlayerFrameHealthBar).__index,"Show",function(s) if s:GetParent().healthbar then if s.st == nil then s:SetStatusBarTexture("Interface\\TokenFrame\\UI-TokenFrame-CategoryButton") s:GetStatusBarTexture():SetDesaturated(1) s:GetStatusBarTexture():SetTexCoord(0, 1, .609375, .796875) s:GetStatusBarTexture():SetHorizTile(true) s.st = true end end end)
текстуру меняем в SetStatusBarTexture
Map Tweaks
Скрипт на карту (большую) - работают мышь, кнопки, убирается черный фон. карта лучшеет
local shadowdancebar = 2 -- внимание! это номер панели для шд local f = CreateFrame('frame', 'myownstatedriver', UIParent, 'SecureHandlerStateTemplate') for i=1,12 do f:SetFrameRef('ActionButton'..i, _G['ActionButton'..i]) end f:Execute([[ buttons = table.new() for i = 1, 12 do table.insert(buttons, self:GetFrameRef('ActionButton'..i)) end ]]) f:SetAttribute('_onstate-page', [[ for i, button in ipairs(buttons) do button:SetAttribute('actionpage', tonumber(newstate)) end ]]) local getBar = function() local class, spec = select(2, UnitClass('player')), GetSpecialization() local pages = { ['DRUID'] = '[bonusbar:1,nostealth] 7; [bonusbar:1,stealth] 8; [bonusbar:2] 8; [bonusbar:3] 9; [bonusbar:4] 10;', ['WARRIOR'] = '[bonusbar:1] 7; [bonusbar:2] 8; [bonusbar:3] 9;', ['PRIEST'] = '[bonusbar:1] 7;', ['ROGUE'] = '[form:1][form:'..(spec==3 and 3 or 2)..',stealth] 7; [form:'..(spec==3 and 3 or 2)..',nostealth]'..shadowdancebar..';', ['WARLOCK'] = '[form:2] 10;', ['MONK'] = '[form:1] '..(spec == 1 and 8 or spec == 2 and 9 or spec == 3 and 7 or 9)..'; [form:2] 7;', ['DEFAULT'] = '[vehicleui] 12; [bar:2] 2; [bar:3] 3; [bar:4] 4; [bar:5] 5; [bar:6] 6;', } local condition, page = pages['DEFAULT'], pages[class] if page then condition = condition..' '..page end condition = condition..' 1' return condition end RegisterStateDriver(f, 'page', getBar())
как прятать всякие штуки в бою и отображать вне боя автоматически
(название штуки можно узнать командой /fstack)
в данном случае это минимапа, список задач, чат идея: заменяем ф-цию создания окна своей, в ней добавляем темплейт SecureHandlerShowHideTemplate и потом используем кондишн драйвер. в нем можно использовать не только [combat], но и многие другие условия макросов, такие как [target=focus,exists] и прочее
Код:
local mcf, fth = CreateFrame, {'MinimapCluster', 'WatchFrame', 'ChatFrame1'} CreateFrame = function(f,n,p,t) for _,v in pairs(fth) do t = (n == v) and t..',SecureHandlerShowHideTemplate' or t end return mcf(f,n,p,t) end for _,v in pairs(fth) do RegisterStateDriver(_G[v],'visibility','[combat]hide;show') end
Прозрачный бэкграунд как у фрейма игрока
Код:
UnitSelectionColor = function(unit) if not UnitExists(unit) then return 1,1,1,1 end
local color = UnitIsPlayer(unit) and RAID_CLASS_COLORS[select(2, UnitClass(unit))] or FACTION_BAR_COLORS[UnitReaction(unit, 'player')] if color then if not UnitIsConnected(unit) then return .5, .5, .5, 1 else return 0, 0, 0, 0.5 end else if UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) then return .5, .5, .5, 1 end end end
hooksecurefunc('ActionButton_UpdateHotkeys', function(self) local macro, hotkey = _G[self:GetName()..'Name'], _G[self:GetName()..'HotKey'] if macro and hotkey then macro:Hide() hotkey:Hide() end end)
local LARGE_AURA_SIZE = 27 -- развер ВАШИХ баффов/дебаффов.
local SMALL_AURA_SIZE = 15 -- развер чужих баффов/дебаффов.
local size
local offsetY = AURA_OFFSET_Y
local rowWidth = 0
local firstBuffOnRow = 1
for i=1, numAuras do
if ( largeAuraList[i] ) then
size = LARGE_AURA_SIZE
offsetY = AURA_OFFSET_Y + AURA_OFFSET_Y
else
size = SMALL_AURA_SIZE
end
if ( i == 1 ) then
rowWidth = size
self.auraRows = self.auraRows + 1
else
rowWidth = rowWidth + size + offsetX
end
if ( rowWidth > maxRowWidth ) then
updateFunc(self, auraName, i, numOppositeAuras, firstBuffOnRow, size, offsetX, offsetY)
rowWidth = size
self.auraRows = self.auraRows + 1
firstBuffOnRow = i
offsetY = AURA_OFFSET_Y
else
updateFunc(self, auraName, i, numOppositeAuras, i - 1, size, offsetX, offsetY)
end
end
end)
черные фреймы повсюду
Код:
local ocolor = {0, 0, 0, 1} local eventframe=CreateFrame("Frame") eventframe:RegisterEvent("ADDON_LOADED") eventframe:RegisterEvent("PLAYER_ENTERING_WORLD") eventframe:SetScript("OnEvent", function(self, event, addon) for _, obj in ipairs({Minimap:GetChildren()}) do if (obj and (obj:GetObjectType() == "Frame" or obj:GetObjectType() == "Button")) then for _, tex in ipairs({obj:GetRegions()}) do if (tex and tex:GetObjectType() == "Texture") then if tex:GetTexture() == "Interface\\Minimap\\MiniMap-TrackingBorder" then tex:SetDesaturated(true) tex:SetVertexColor(unpack(ocolor)) end end end end end
for i,v in pairs({ PlayerFrameTexture, TargetFrameTextureFrameTexture, PetFrameTexture, PartyMemberFrame1Texture, PartyMemberFrame2Texture, PartyMemberFrame3Texture, PartyMemberFrame4Texture, PartyMemberFrame1PetFrameTexture, PartyMemberFrame2PetFrameTexture, PartyMemberFrame3PetFrameTexture, PartyMemberFrame4PetFrameTexture, FocusFrameTextureFrameTexture, TargetFrameToTTextureFrameTexture, FocusFrameToTTextureFrameTexture,
}) do if v and v:GetObjectType() == "Texture" then v:SetDesaturated(true) v:SetVertexColor(unpack(ocolor)) end end
for i=1,19 do _G["MainMenuXPBarDiv"..i]:SetVertexColor(unpack(ocolor)) end
if TimeManagerClockButton then for i,v in pairs({ select(1, TimeManagerClockButton:GetRegions()), select(1, GameTimeFrame:GetRegions()), }) do if v and v:GetObjectType() == "Texture" then v:SetDesaturated(true) v:SetVertexColor(unpack(ocolor)) end end end
for i,v in pairs({ ArenaEnemyFrame1Texture, ArenaEnemyFrame2Texture, ArenaEnemyFrame3Texture, ArenaEnemyFrame4Texture, ArenaEnemyFrame5Texture, }) do v:SetDesaturated(true) v:SetVertexColor(unpack(ocolor)) end end)
local dispelCD = CreateFrame('frame') dispelCD:RegisterEvent('PLAYER_ENTERING_WORLD')
local updateDispelFrames = function() dispelFrames = wipe(dispelFrames) for i = 1, MAX_ARENA_ENEMIES do arenaFrame = 'ArenaEnemyFrame'..i local dispel = _G[arenaFrame..'Dispel'] or CreateFrame('Cooldown', arenaFrame..'Dispel', ArenaEnemyFrames) dispel:SetPoint('RIGHT', arenaFrame, 'LEFT', -30, 0) dispel:SetSize(24, 24) dispel.icon = dispel.icon or dispel:CreateTexture(nil, 'BACKGROUND') dispel.icon:SetAllPoints() dispel.icon:SetTexture(select(3, GetSpellInfo(527))) dispelFrames[UnitGUID('arena'..i)] = dispel end end
dispelCD:SetScript('OnEvent',function(self,event,...) if event == 'PLAYER_ENTERING_WORLD' then updateDispelFrames() local _, instanceType = IsInInstance() if instanceType == "arena" then self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") elseif self:IsEventRegistered("COMBAT_LOG_EVENT_UNFILTERED") then self:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED") for _, df in pairs(dispelFrames) do df:SetCooldown(0, 0) end end elseif event == 'COMBAT_LOG_EVENT_UNFILTERED' then local _, subevent, _, unit, _, _, _, _, _, _, _, spell
if (not(UnitGUID('arena1')==unit or UnitGUID('arena2')==unit or UnitGUID('arena3')==unit or UnitGUID('arena4')==unit or UnitGUID('arena5')==unit)) then return end if subevent == 'SPELL_DISPEL' then updateDispelFrames() if dispellID[spell] then dispelFrames[unit].icon:SetTexture(select(3, GetSpellInfo(spell))) CooldownFrame_SetTimer(dispelFrames[unit], GetTime(), 8, 1) end end end end)
значения хп на дефолт неймплейтах
Код:
local fixvalue = function(val) if(val >= 1e6) then return ('%.2f'..SECOND_NUMBER_CAP):format(val / 1e6):gsub('%.?0+(['..FIRST_NUMBER_CAP..SECOND_NUMBER_CAP..'])$', '%1') elseif(val >= 1e4) then return ('%.1f'..FIRST_NUMBER_CAP):format(val / 1e3):gsub('%.?0+(['..FIRST_NUMBER_CAP..SECOND_NUMBER_CAP..'])$', '%1') else return val end end
CreateFrame('frame'):SetScript('OnUpdate', function(self, elapsed) for index = 1, select('#', WorldFrame:GetChildren()) do local f = select(index, WorldFrame:GetChildren()) if f:GetName() and f:GetName():find('NamePlate%d') then f.h = select(1, select(1, f:GetChildren()):GetChildren()) if f.h then if not f.h.v then f.h.v = f.h:CreateFontString(nil, "ARTWORK") f.h.v:SetPoint("CENTER", f.h, 'CENTER') f.h.v:SetFont(STANDARD_TEXT_FONT, 9, 'OUTLINE') else local _, maxh = f.h:GetMinMaxValues() local val = f.h:GetValue() f.h.v:SetText(string.format("%s - %d%%", fixvalue(val), math.floor((val/maxh)*100))) end end end end end)
Чтобы оставить только проценты хп, замените строку
Например хочу подвинуть Арена фреймы, но в вбивая наугад координаты, 100500 раз выходя/заходя игру это не ок.
/fstack
28 фев 2012, 00:36
Muchachaz
[0.3]
0
Скрипты Neilyo
Fiction писал(а):
Как координаты узнать ?
Например хочу подвинуть Арена фреймы, но в вбивая наугад координаты, 100500 раз выходя/заходя игру это не ок.
Все намного проще:
1. Скачать AddOn Studio for World of Warcraft
2. Установить 3. Открыть в ней lua файл
4. Изменить координаты/местоположение итп
5. Нажать Сейв
Прописать в игре /reload и у тебя сразу подгрузит этот измененный луа файл. Скорее всего есть более легкий способ сразу загружать обновленный луа, но мне известен только этот. Ну или на крайняк двигать в ручную через /run
Всегда думал, что пвп тринкеты это тринкеты юзающиеся на + к силе, ловкости и прочему и мне нужно отображение именно этих тринкетов (+пве тринкетов которые абузят), а не тринкеты снимающие контроль...
28 фев 2012, 09:42
Ривера
[-1.8]
2
Скрипты Neilyo
гладиус , нормальные фреймы и PoWa - уже не торт ? Тут либо ты играешь вообще без всего этого , претендуешь на солотоп и ездишь по ланам , либо сидишь дома и нагружай как хочешь , причем давно же придумали аддоны с удобной интерфейсной частью в плане настройки , не ?
Все эти понты по поводу стандартного UI - да кому они нужны , если ты раб системы ММРа и гладов сидящих на 2.2 , которые дальше тебя не пускают ? Сидишь дома - ставь , что хочешь .
На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.