Код:
-- Contents
-- Hide faction/PvP icon (НЕАКТИВНО)
-- Scaling/moving castbars
-- PaladinPowerBar Hide
-- Shado-Pan Trinket 138702
-- Proc PVP Trinket 126702
-- Paladin Wings (НЕАКТИВНО)
-- Прожимной ПВП Trinket 92224
-- Xuen Relic 128984
-- Дознание
-- Scaling
-- Align (координатная сетка)
-- Pet Frame
-- PVE фреймы без драконов (НЕАКТИВНО)
-- Экшн бары
-- Прозрачный бэкграунд фрейма цели как у фрейма игрока (НЕАКТИВНО)
-- Хелз бары по цвету класса (НЕАКТИВНО)
-- Цвет бэкграунда по цвету класса
-- Hide the error (red text) frame
-- ToT Focus Frame
-- ToT Target Frame
-- Big Debuffs
-- Выбор позиции всплывающего текста
-- Focuser
-- CD Tracker
-- Disable combat text (damage/healing spam) over your and your pets frame
-- Arena Trinkets
-- Hide faction/PvP icon
-- PlayerPVPIcon:SetAlpha(0)
-- TargetFrameTextureFramePVPIcon:SetAlpha(0)
-- FocusFrameTextureFramePVPIcon:SetAlpha(0)
-- Scaling/moving castbars
CastingBarFrame:ClearAllPoints()
CastingBarFrame:SetPoint("CENTER",UIParent,"CENTER", 0, -235)
CastingBarFrame.SetPoint = function() end
CastingBarFrame:SetScale(1.0)
-- PaladinPowerBar Hide
-- PaladinPowerBar:ClearAllPoints()
-- PaladinPowerBar:SetPoint("CENTER", 330, -180)
-- PaladinPowerBar.SetPoint = function() end
-- PaladinPowerBar:SetScale(1.2)
PaladinPowerBar:Hide()
PaladinPowerBar.Show = function() end
-- Shado-Pan Trinket 138702
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("UNIT_AURA")
f:RegisterEvent("ZONE_CHANGED_NEW_AREA")
f:SetScript("OnEvent", function(self, event, ...)
local SE = GetSpellInfo(138702)
if event=="PLAYER_ENTERING_WORLD" then
local ELIC = _G["ELIC"] or CreateFrame("Frame", "ELIC", UIParent)
ELIC.c = ELIC.c or CreateFrame("Cooldown","$parentCooldown", ELIC)
ELIC.c:SetAllPoints(ELIC)
ELIC:SetPoint("CENTER", -164,-170)
ELIC:SetSize(40,40)
ELIC.t = ELIC.t or ELIC:CreateTexture("$parentIcon","BORDER")
ELIC.t:SetAllPoints()
end
if event=="UNIT_AURA" or event=="ZONE_CHANGED_NEW_AREA" then
local found = false
for i=1,40 do
local N,_,t, _, _,d,x = UnitBuff("player", i)
if not N then break end
if N==SE then found = true ELIC:Show() ELIC.t:SetTexture(t) if d>0 then ELIC.c:SetCooldown(x-d-0.5,d) end end
if not found then ELIC:Hide() end
end
end
end)
-- Proc PVP Trinket 126702
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("UNIT_AURA")
f:RegisterEvent("ZONE_CHANGED_NEW_AREA")
f:SetScript("OnEvent", function(self, event, ...)
local SE = GetSpellInfo(126702)
if event=="PLAYER_ENTERING_WORLD" then
local PVPTRINKET = _G["PVPTRINKET"] or CreateFrame("Frame", "PVPTRINKET", UIParent)
PVPTRINKET.c = PVPTRINKET.c or CreateFrame("Cooldown","$parentCooldown", PVPTRINKET)
PVPTRINKET.c:SetAllPoints(PVPTRINKET)
PVPTRINKET:SetPoint("CENTER", -164,-170)
PVPTRINKET:SetSize(40,40)
PVPTRINKET.t = PVPTRINKET.t or PVPTRINKET:CreateTexture("$parentIcon","BORDER")
PVPTRINKET.t:SetAllPoints()
end
if event=="UNIT_AURA" or event=="ZONE_CHANGED_NEW_AREA" then
local found = false
for i=1,40 do
local N,_,t, _, _,d,x = UnitBuff("player", i)
if not N then break end
if N==SE then found = true PVPTRINKET:Show() PVPTRINKET.t:SetTexture(t) if d>0 then PVPTRINKET.c:SetCooldown(x-d-0.5,d) end end
if not found then PVPTRINKET:Hide() end
end
end
end)
-- Paladin Wings
-- local f = CreateFrame("Frame")
-- f:RegisterEvent("PLAYER_ENTERING_WORLD")
-- f:RegisterEvent("UNIT_AURA")
-- f:RegisterEvent("ZONE_CHANGED_NEW_AREA")
-- f:SetScript("OnEvent", function(self, event, ...)
-- local SE = GetSpellInfo(31884)
-- if event=="PLAYER_ENTERING_WORLD" then
-- local WINGS = _G["WINGS"] or CreateFrame("Frame", "WINGS", UIParent)
-- WINGS.c = WINGS.c or CreateFrame("Cooldown","$parentCooldown", WINGS)
-- WINGS.c:SetAllPoints(WINGS)
-- WINGS:SetPoint("CENTER", -275,125)
-- WINGS:SetSize(40,40)
-- WINGS.t = WINGS.t or WINGS:CreateTexture("$parentIcon","BORDER")
-- WINGS.t:SetAllPoints()
-- end
-- if event=="UNIT_AURA" or event=="ZONE_CHANGED_NEW_AREA" then
-- local found = false
-- for i=1,40 do
-- local N,_,t, _, _,d,x = UnitBuff("player", i)
-- if not N then break end
-- if N==SE then found = true WINGS:Show() WINGS.t:SetTexture(t) if d>0 then WINGS.c:SetCooldown(x-d-0.5,d) end end
-- if not found then WINGS:Hide() end
-- end
-- end
-- end)
-- Прожимной ПВП Trinket 92224
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("UNIT_AURA")
f:RegisterEvent("ZONE_CHANGED_NEW_AREA")
f:SetScript("OnEvent", function(self, event, ...)
local SE = GetSpellInfo(92224)
if event=="PLAYER_ENTERING_WORLD" then
local TRINKET3 = _G["TRINKET3"] or CreateFrame("Frame", "TRINKET3", UIParent)
TRINKET3.c = TRINKET3.c or CreateFrame("Cooldown","$parentCooldown", TRINKET3)
TRINKET3.c:SetAllPoints(TRINKET3)
TRINKET3:SetPoint("CENTER", -205,-170)
TRINKET3:SetSize(40,40)
TRINKET3.t = TRINKET3.t or TRINKET3:CreateTexture("$parentIcon","BORDER")
TRINKET3.t:SetAllPoints()
end
if event=="UNIT_AURA" or event=="ZONE_CHANGED_NEW_AREA" then
local found = false
for i=1,40 do
local N,_,t, _, _,d,x = UnitBuff("player", i)
if not N then break end
if N==SE then found = true TRINKET3:Show() TRINKET3.t:SetTexture(t) if d>0 then TRINKET3.c:SetCooldown(x-d-0.5,d) end end
if not found then TRINKET3:Hide() end
end
end
end)
-- Xuen Relic 128984
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("UNIT_AURA")
f:RegisterEvent("ZONE_CHANGED_NEW_AREA")
f:SetScript("OnEvent", function(self, event, ...)
local SE = GetSpellInfo(128984)
if event=="PLAYER_ENTERING_WORLD" then
local TRINKET4 = _G["TRINKET4"] or CreateFrame("Frame", "TRINKET4", UIParent)
TRINKET4.c = TRINKET4.c or CreateFrame("Cooldown","$parentCooldown", TRINKET4)
TRINKET4.c:SetAllPoints(TRINKET4)
TRINKET4:SetPoint("CENTER", -205,-170)
TRINKET4:SetSize(40,40)
TRINKET4.t = TRINKET4.t or TRINKET4:CreateTexture("$parentIcon","BORDER")
TRINKET4.t:SetAllPoints()
end
if event=="UNIT_AURA" or event=="ZONE_CHANGED_NEW_AREA" then
local found = false
for i=1,40 do
local N,_,t, _, _,d,x = UnitBuff("player", i)
if not N then break end
if N==SE then found = true TRINKET4:Show() TRINKET4.t:SetTexture(t) if d>0 then TRINKET4.c:SetCooldown(x-d-0.5,d) end end
if not found then TRINKET4:Hide() end
end
end
end)
-- Дознание
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("UNIT_AURA")
f:RegisterEvent("ZONE_CHANGED_NEW_AREA")
f:SetScript("OnEvent", function(self, event, ...)
local SE = GetSpellInfo(84963)
if event=="PLAYER_ENTERING_WORLD" then
local DOZNANIE = _G["DOZNANIE"] or CreateFrame("Frame", "DOZNANIE", UIParent)
DOZNANIE.c = DOZNANIE.c or CreateFrame("Cooldown","$parentCooldown", DOZNANIE)
DOZNANIE.c:SetAllPoints(DOZNANIE)
DOZNANIE:SetPoint("CENTER", -205,207)
DOZNANIE:SetSize(37,37)
DOZNANIE.t = DOZNANIE.t or DOZNANIE:CreateTexture("$parentIcon","BORDER")
DOZNANIE.t:SetAllPoints()
end
if event=="UNIT_AURA" or event=="ZONE_CHANGED_NEW_AREA" then
local found = false
for i=1,40 do
local N,_,t, _, _,d,x = UnitBuff("player", i)
if not N then break end
if N==SE then found = true DOZNANIE:Show() DOZNANIE.t:SetTexture(t) if d>0 then DOZNANIE.c:SetCooldown(x-d-0.5,d) end end
if not found then DOZNANIE:Hide() end
end
end
end)
-- Scaling
FocusFrame:SetScale(0.91)
TargetFrame:SetScale(0.91)
PlayerFrame:SetScale(0.90)
PartyMemberFrame1:SetScale(1.25)
PartyMemberFrame2:SetScale(1.25)
TargetFrameSpellBar:SetScale(1.1)
FocusFrameSpellBar:SetScale(1.1)
GameTooltip:SetScale(0.92)
-- Align (координатная сетка)
SLASH_EA1 = "/align"
local f
SlashCmdList["EA"] = function()
if f then
f:Hide()
f = nil
else
f = CreateFrame('Frame', nil, UIParent)
f:SetAllPoints(UIParent)
local w = GetScreenWidth() / 64
local h = GetScreenHeight() / 36
for i = 0, 64 do
local t = f:CreateTexture(nil, 'BACKGROUND')
if i == 32 then
t:SetTexture(1, 0, 0, 0.5)
else
t:SetTexture(0, 0, 0, 0.5)
end
t:SetPoint('TOPLEFT', f, 'TOPLEFT', i * w - 1, 0)
t:SetPoint('BOTTOMRIGHT', f, 'BOTTOMLEFT', i * w + 1, 0)
end
for i = 0, 36 do
local t = f:CreateTexture(nil, 'BACKGROUND')
if i == 18 then
t:SetTexture(1, 0, 0, 0.5)
else
t:SetTexture(0, 0, 0, 0.5)
end
t:SetPoint('TOPLEFT', f, 'TOPLEFT', 0, -i * h + 1)
t:SetPoint('BOTTOMRIGHT', f, 'TOPRIGHT', 0, -i * h - 1)
end
end
end
-- Pet Frame
PetFrame:ClearAllPoints() PetFrame:SetPoint("LEFT",PlayerFrame,"RIGHT",-155, 43)
-- PVE фреймы без драконов
-- hooksecurefunc('TargetFrame_CheckClassification', function(self, fnt) self.borderTexture:SetTexture("Interface\\TargetingFrame\\UI-TargetingFrame") end)
-- Экшн бары
-- if things seem odd you can adjust here
-- scale of action bars
local SCALE = 0.95 -- 0.5 / 0.64
-- height of exp and rep bars
local HEIGHT = 4
-- fade micro buttons and bags
local FADE_BOX = 1
-- end of config
do
local Y_OFFSET = 55 -- сдвиг по вертикали
for i=1,12 do
_G['ActionButton'..i]:ClearAllPoints()
_G['ActionButton'..i]:SetPoint('BOTTOMLEFT', MainMenuBar, 'BOTTOMLEFT', i*42, Y_OFFSET)
end
-- two rows MultiBarBottomRight
MultiBarBottomRightButton7:ClearAllPoints()
MultiBarBottomRightButton7:SetPoint("BOTTOMLEFT", ActionButton12, "BOTTOMRIGHT", 12, 0)
-- adjusts MultiBarRight and MultiBarLeft
-- MultiBarRightButton1:ClearAllPoints()
-- MultiBarRightButton1:SetPoint("TOPRIGHT", MultiBarRight, x, y)
-- MultiBarLeftButton1:ClearAllPoints()
-- MultiBarLeftButton1:SetPoint("TOPRIGHT", MultiBarLeft, x, y)
-- PetActionButtons on the right side
PetActionButton1:ClearAllPoints()
PetActionButton1:SetPoint("BOTTOMLEFT", MultiBarBottomRightButton3, "TOPRIGHT", -404, 10) -- 372 + 32
-- StanceButtons on the left side
StanceButton1:ClearAllPoints()
StanceButton1:SetPoint("BOTTOMLEFT", MultiBarBottomLeftButton2, "TOPRIGHT", 3, 10)
-- concerned things with MainMenuBar
MainMenuExpBar:SetWidth(761 - 5 )
MainMenuExpBar:SetHeight(HEIGHT)
MainMenuExpBar:ClearAllPoints()
MainMenuExpBar:SetPoint("CENTER", MainMenuBar, "TOP", 0, -4.5)
local fontFile, fontHeight, fontFlags = MainMenuBarExpText:GetFont()
MainMenuBarExpText:SetFont(fontFile, floor(fontHeight / SCALE + 0.5), fontFlags)
ExhaustionLevelFillBar:SetHeight(HEIGHT)
ReputationWatchBar:SetWidth(761 - 5)
ReputationWatchBar:SetHeight(HEIGHT)
ReputationWatchStatusBar:SetWidth(761 - 5)
local fontFile, fontHeight, fontFlags = ReputationWatchStatusBarText:GetFont()
ReputationWatchStatusBarText:SetFont(fontFile, floor(fontHeight / SCALE + 0.5), fontFlags)
-- re-reconfigure ReputationWatchBar
-- we can't use events because of the delay issue
local function ReputationWatchBar_Update_posthook(...)
local name, reaction, _, _, value = GetWatchedFactionInfo()
local hasExpBar = MainMenuExpBar:IsShown()
if ( not name ) then
if ( hasExpBar and MainMenuBarExpText:GetPoint() ~= "CENTER" ) then
MainMenuBarExpText:ClearAllPoints()
MainMenuBarExpText:SetPoint("CENTER", MainMenuExpBar, 0, 1)
end
return ...
end
ReputationWatchStatusBar:SetHeight(HEIGHT)
ReputationWatchStatusBarText:SetText(ReputationWatchStatusBarText:GetText() .. " " .. GetText("FACTION_STANDING_LABEL" .. reaction, UnitSex("player"))) -- adds standing label
if ( hasExpBar ) then
ReputationWatchBar:ClearAllPoints()
ReputationWatchBar:SetPoint("CENTER", MainMenuBar, "TOP", 0, 4.5)
if ( ReputationWatchStatusBarText:GetPoint() ~= "RIGHT" ) then
ReputationWatchStatusBarText:ClearAllPoints()
ReputationWatchStatusBarText:SetPoint("RIGHT", ReputationWatchBarOverlayFrame, -128, 1)
end
if ( MainMenuBarExpText:GetPoint() ~= "LEFT" ) then
MainMenuBarExpText:ClearAllPoints()
MainMenuBarExpText:SetPoint("LEFT", MainMenuExpBar, 128, 1)
end
else
ReputationWatchBar:ClearAllPoints()
ReputationWatchBar:SetPoint("CENTER", MainMenuBar, "TOP", 0, -4.5)
if ( ReputationWatchStatusBarText:GetPoint() ~= "CENTER" ) then
ReputationWatchStatusBarText:ClearAllPoints()
ReputationWatchStatusBarText:SetPoint("CENTER", ReputationWatchBarOverlayFrame, 0, 1)
end
end
-- removes watched faction if we ware exalted
if ( value == 42999 ) then
SetWatchedFactionIndex(0)
end
return ...
end
local ReputationWatchBar_Update_original = ReputationWatchBar_Update
function ReputationWatchBar_Update(...)
return ReputationWatchBar_Update_posthook(ReputationWatchBar_Update_original(...))
end
-- actual new MainMenuBar's width
MainMenuBar:SetWidth(777 - 5) -- 761 + 8 * 2
-- who cares? but i do
MainMenuBar:EnableMouse(false)
-- unloads un-wanted textures
for _, texture in next, {
MainMenuXPBarTextureLeftCap,MainMenuXPBarTextureRightCap,MainMenuXPBarTextureMid, MainMenuMaxLevelBar0, MainMenuMaxLevelBar1, MainMenuMaxLevelBar2, MainMenuMaxLevelBar3, MainMenuBarTexture0, MainMenuBarTexture1, --[[MainMenuBarTexture2, MainMenuBarTexture3,]] MainMenuBarLeftEndCap, MainMenuBarRightEndCap,
ReputationWatchBarTexture0, ReputationWatchBarTexture1, ReputationWatchBarTexture2, ReputationWatchBarTexture3, ReputationXPBarTexture0, ReputationXPBarTexture1, ReputationXPBarTexture2, ReputationXPBarTexture3,
BonusActionBarTexture0, BonusActionBarTexture1, ShapeshiftBarLeft, ShapeshiftBarMiddle, ShapeshiftBarRight, PossessBackground1, PossessBackground2,
SlidingActionBarTexture0, SlidingActionBarTexture1,
} do
texture:SetTexture(nil)
end
-- scales these bars
for _, bar in next, {
MainMenuBar, --[[ VehicleMenuBar,]] MultiBarRight
} do
bar:SetScale(SCALE)
end
end
-- modified by smaltore @2011-11-16
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
-- hide the art frames from bonus action bar
hooksecurefunc("UIParent_ManageFramePosition", function ()
for _,frame in next, {
MainMenuBarTexture0,MainMenuBarTexture1,--Цч¶ЇЧчМх±іѕ°
MainMenuBarTexture2,MainMenuBarTexture3, --ФїіЧєН±і°ь±іѕ°
MainMenuBarLeftEndCap, MainMenuBarRightEndCap, --Цч¶ЇЧчМхБЅ¶ЛµДУҐ
MainMenuBarPageNumber,ActionBarUpButton,ActionBarDownButton, --·Ті°ґЕҐ
}
do frame:Hide() end
for i=1,19 do _G["MainMenuXPBarDiv"..i]:SetTexture(nil) end --ѕСйМхµДёсёс
end)
-------------------------------------bags and micro menu----------------------------------
--create fade function
function fade(frame,button)
local function showhide(alpha)
frame:SetAlpha(alpha)
end
frame:EnableMouse(true)
frame:SetAlpha(0.1)
frame:SetScript("OnEnter", function(self) showhide(1) end)
frame:SetScript("OnLeave", function(self) showhide(0.1) end)
button:HookScript("OnEnter", function(self) showhide(1) end)
button:HookScript("OnLeave", function(self) showhide(0.1) end)
end
--bags and micromenu buttons
local MicroButtons = {
CharacterMicroButton,
SpellbookMicroButton,
TalentMicroButton,
AchievementMicroButton,
QuestLogMicroButton,
GuildMicroButton,
PVPMicroButton,
LFDMicroButton,
CompanionsMicroButton,
EJMicroButton,
MainMenuMicroButton,
HelpMicroButton,
}
local BagButtons = {
MainMenuBarBackpackButton,
CharacterBag0Slot,
CharacterBag1Slot,
CharacterBag2Slot,
CharacterBag3Slot,
--KeyRingButton
}
local box = CreateFrame("Frame","Micro_and_Bags_Frame",UIParent)
box:SetWidth(210)
box:SetHeight(55)
box:SetPoint("BOTTOMRIGHT", UIParent, 0, 0);
box:SetScale(SCALE * 0.8)
local function mybox()
--bags
for _, button in pairs(BagButtons) do
if button ~= MainMenuBarBackpackButton then
button:Hide()
else
MainMenuBarBackpackButton:SetParent(box)
MainMenuBarBackpackButton:SetScale( 2.2 )
end
end
MainMenuBarBackpackButton:ClearAllPoints();
MainMenuBarBackpackButton:SetPoint("BOTTOMRIGHT",box,0,0);
-- micro menu bar ПµНіІЛµҐ
for _, button in pairs(MicroButtons) do
button:SetParent(box);
end
CharacterMicroButton:ClearAllPoints();
CharacterMicroButton:SetPoint("BOTTOMLEFT", MainMenuBarBackpackButton, -155, 30);
PVPMicroButton:ClearAllPoints();
PVPMicroButton:SetPoint("TOPLEFT", CharacterMicroButton, "BOTTOMLEFT", 0, 25);
end
mybox()
hooksecurefunc("UpdateMicroButtons",mybox)
--fade and move the side bars
if FADE_BOX == 1 then
for _,button in pairs(MicroButtons) do fade(box,button) end
for _,button in pairs(BagButtons) do fade(box,button) end
end
--[[
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
--patch from Tidy bar
--fix pet bar bug, it doesn't show sometime
PetActionBarFrame:SetAttribute("unit", "pet")
RegisterUnitWatch(PetActionBarFrame)
--]]
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
--OverRideBar patch from rActionBarStyler
local textureList = {
"_BG",
"EndCapL",
"EndCapR",
"_Border",
"Divider1",
"Divider2",
"Divider3",
"ExitBG",
"MicroBGL",
"MicroBGR",
"_MicroBGMid",
"ButtonBGL",
"ButtonBGR",
"_ButtonBGMid",
}
for _,tex in pairs(textureList) do
OverrideActionBar[tex]:SetAlpha(0)
end
local hideor = CreateFrame("frame")
hideor:Hide()
for _,f in next,{
OverrideActionBarExpBar,
OverrideActionBarHealthBar,
OverrideActionBarPowerBar,
OverrideActionBarPitchFrame,
} do
f:SetParent(hideor)
end
for i=1, 6 do
local button = _G["OverrideActionBarButton"..i]
if not button then break end
button:SetSize(40, 40)
button:ClearAllPoints()
if i == 1 then
button:SetPoint("BOTTOMLEFT",ActionButton1)
else
local previous = _G["OverrideActionBarButton"..i-1]
button:SetPoint("LEFT", previous, "RIGHT", 10, 0)
end
end
OverrideActionBar.LeaveButton:SetSize(40, 40)
OverrideActionBar.LeaveButton:ClearAllPoints()
OverrideActionBar.LeaveButton:SetPoint("BOTTOMRIGHT",ActionButton12)
-- Прозрачный бэкграунд фрейма цели как у фрейма игрока
-- 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
-- Хелз бары по цвету класса
-- local function colour(statusbar, unit)
-- local _, class, c
-- 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)
-- PlayerFrameHealthBar:SetStatusBarColor(0,1,0)
-- end
-- end
-- hooksecurefunc("UnitFrameHealthBar_Update", colour)
-- hooksecurefunc("HealthBar_OnValueChanged", function(self)
-- colour(self, self.unit)
-- 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 color.r*.8, color.g*.8, color.b*.8, 1
end
else
if UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) then
return .5, .5, .5, 1
end
end
end
-- Hide the error (red text) frame
UIErrorsFrame:SetAlpha(0)
-- ToT Focus Frame
FocusFrameToT:ClearAllPoints() FocusFrameToT:SetPoint("TOP",FocusFrame,"TOP",-110, 20)
-- ToT Target Frame
TargetFrameToT:ClearAllPoints() TargetFrameToT:SetPoint("RIGHT",TargetFrame,"RIGHT",-10, 62)
-- Big Debuffs
local numIcons = 6
hooksecurefunc("TargetFrame_UpdateAuraPositions", function(self, auraName, numAuras, numOppositeAuras,largeAuraList, updateFunc, maxRowWidth, offsetX)
local AURA_OFFSET_Y = 3
local LARGE_AURA_SIZE = 23.5 -- развер ВАШИХ баффов/дебаффов.
local SMALL_AURA_SIZE = 21 -- развер чужих баффов/дебаффов.
local size
local offsetY = AURA_OFFSET_Y
local rowWidth = 0
local firstBuffOnRow = 1
maxRowWidth = LARGE_AURA_SIZE * numIcons
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 f = CreateFrame("FRAME");
f:SetScript("OnEvent", function(self,event,...)
local arg1 =...;
if (arg1=="Blizzard_CombatText") then
f:UnregisterEvent("ADDON_LOADED");
hooksecurefunc("CombatText_UpdateDisplayedMessages",
function ()
COMBAT_TEXT_LOCATIONS =
{startX = -350,
startY = 750 * COMBAT_TEXT_Y_SCALE,
endX =-350,
endY = 790 * COMBAT_TEXT_Y_SCALE};
end);
end
end);
f:RegisterEvent("ADDON_LOADED");
-- Focuser
local modifier = "alt"
local mouseButton = "1"
local function SetFocusHotkey(frame)
frame:SetAttribute(modifier.."-type"..mouseButton,"focus")
end
local function CreateFrame_Hook(type, name, parent, template)
if template == "SecureUnitButtonTemplate" then
SetFocusHotkey(_G[name])
end
end
hooksecurefunc("CreateFrame", CreateFrame_Hook)
local f = CreateFrame("CheckButton", "FocuserButton", UIParent, "SecureActionButtonTemplate")
f:SetAttribute("type1","macro")
f:SetAttribute("macrotext","/focus mouseover")
SetOverrideBindingClick(FocuserButton,true,modifier.."-BUTTON"..mouseButton,"FocuserButton")
local duf = {
PlayerFrame,
PetFrame,
PartyMemberFrame1,
PartyMemberFrame2,
PartyMemberFrame3,
PartyMemberFrame4,
PartyMemberFrame1PetFrame,
PartyMemberFrame2PetFrame,
PartyMemberFrame3PetFrame,
PartyMemberFrame4PetFrame,
TargetFrame,
TargetofTargetFrame,
ArenaEnemyFrame1,
ArenaEnemyFrame2,
ArenaEnemyFrame3,
ArenaEnemyFrame4,
ArenaEnemyFrame5,
ArenaEnemyFrame1PetFrame,
ArenaEnemyFrame2PetFrame,
ArenaEnemyFrame3PetFrame,
ArenaEnemyFrame4PetFrame,
ArenaEnemyFrame5PetFrame,
}
for i,frame in pairs(duf) do
SetFocusHotkey(frame)
end
-- CD Tracker
local cdtracker = CreateFrame('frame', 'cdtracker', UIParent) -- общее окно трекера
local xOffset, yOffset = 0, -115 -- позиция фрейма с кд на экране
cdtracker.iconSize = 30 -- размер иконки
cdtracker:SetSize(160, 150) -- размер общего окна дефолт
cdtracker:SetPoint('CENTER', xOffset, yOffset)
cdtracker:RegisterEvent('UNIT_SPELLCAST_SUCCEEDED')
-- спеллы за которыми следим
cdtracker.spells = {
-- Интерапты
--[47528] = 15, --Заморозка разума (кик ДК)
[55021] = 24, --КС мага
--[96231] = 15, --Укор (кик пала)
--[116705] = 15, --Рука копье (кик монаха)
--[1766] = 15, --Пинок (кик роги)
[34490] = 24, --Глушащий выстрел
--[6552] = 15, --Зуботычина (кик вара)
[15487] = 45, --Безмолвие (сало ШП)
--[80964] = 15, --Лобовая атака (кик друида)
[115782] = 24, --Оптический удар (кик варлока)
[24259] = 24, --Запрет чар (кик варлока)
--[57994] = 12, --Пронизывающий ветер (кик шамана)
-- CD
-- Rogue
[1856] = 120, --Ванишь
[51713] = 60, --Шадоуденс
[79140] = 120, --Вендетта
--[2094] = 120, --Блаинд
[14185] = 300, --Преп роги
--[5277] = 180, --Эвейжн
[31224] = 60, --КОШ
[121471] = 180, --Теневые клинки
--[74001] = 120, --ШВ
-- Hunter
[19503] = 30, --Скаттер
[23989] = 300, --Преп ханта
[34692] = 60, --Озверин
-- Druid
[132158] = 60, --НСка друида
--[99] = 30, --Дизориентирующий рык
--[5211] = 60, --Баш
-- Shaman
[51514] = 45, --Хекс
[114050] = 180, --Перерождение (стихии)
[114051] = 180, --Перерождеие (соверженствование)
[16188] = 90, --НСка шамана
-- Paladin
[6940] = 120, --Сакра паладина
--[642] = 300, --Бабл
[105593] = 30, --Кулак правосудия
[853] = 60, --Молот правосудия
[31884] = 120, --Гнев карателя (Крылья)
-- Priest
[8122] = 27, --Ментальный крик (фир приста)
[33206] = 180, --Зубы
-- Mage
[12043] = 90, --ПОМ
[44572] = 30, --Дип фриз
--[11958] = 180, --Холодная хватка (Преп мага)
-- Death Knight
[108194] = 30, --Асфиксия
--[77606] = 60, --Симулякр ДК
-- Warrior
[3411] = 30, --Вмешательство
[114029] =30, --Охрана
--[1719] = 180, --Рекла
[46968] = 40, --Шоквейв
-- Monk
[119381] = 45, --Круговой удар ногой (стан монка)
[116844] = 45, --Круг мира
--[122783] = 90, --Распыление магии
[137562] = 120, --Отвар проворства
[122470] = 90, --Закон кармы
--Warlock
--[104773] = 180, --Твердая решимость (МА у варлока)
--[113860] = 120, --Черная душа: Страдание
--[113861] = 120, --Черная душа: Знание
--[113858] = 120, --Черная душа: Изменчивость
--[110913] = 180, --Темная сделка
[108482] = 60, --Свободная воля (второй тринкет)
--[6789] = 45, --Лик тлена
--[108359] = 120, --Темное восстановление
[30283] = 30, --Шадоуфьюри
--[108505] = 120, --Месть Архимонда
[5484] = 40, --Вой ужаса
}
cdtracker.icons = {}
local relayout = function(self)
local col, row, gap = 0, 0, 3 -- (3 - отступ иконок)
local sizex = self.iconSize + 3 -- (3 - отступ иконок)
local sizey = self.iconSize + 3 -- (3 - отступ иконок)
local cols = math.floor(self:GetWidth() / sizex + .5)
for _, button in pairs(self.icons) do
if button and button:IsShown() then
if gap then
if (col > 0) then row = row + 1 end
col = 0
gap = false
end
if col >= cols then
col = 0
row = row + 1
end
button:ClearAllPoints()
button:SetSize(self.iconSize, self.iconSize)
button:SetPoint('TOPLEFT', self, 'TOPLEFT', col * sizex * 1, row * sizey * -1)
col = col + 1
elseif (not button) then
break
end
end
self:SetSize(self:GetWidth(), (col>0) and abs((row+1)* sizey * -1) or -3)
end
cdtracker:SetScript('OnEvent', function(self, event, unit, _, _, _, spellId)
if unit and (unit:find('arena%d') or unit:find('arenapet%d')) then -- если ареначисло или аренапетчисло или таргет или фокус то следим
if self.spells[spellId] then
local button
local name, _ ,icon = GetSpellInfo(spellId)
if self.icons[name] then
button = self.icons[name]
else
self.icons[name] = CreateFrame('frame', nil, self)
button = self.icons[name]
button:SetSize(self.iconSize, self.iconSize)
button.cd = CreateFrame('Cooldown', nil, button)
button.cd:SetAllPoints()
button.icon = button:CreateTexture(nil, 'OVERLAY')
button.icon:SetAllPoints()
button.icon:SetTexCoord(.1, .9, .1, .9)
end
button:SetScript('OnUpdate', nil)
button.icon:SetTexture(icon)
button.expire = self.spells[spellId]
button.timer = 0
CooldownFrame_SetTimer(button.cd, GetTime(), button.expire, 1)
button:Show()
relayout(self)
button:SetScript('OnUpdate', function(self, elapsed)
self.timer = self.timer + elapsed
if self.timer > self.expire then
self:SetScript('OnUpdate', nil)
self.expire = 0
self.timer = 0
self:Hide()
relayout(self:GetParent())
end
end)
end
end
end)
-- Disable combat text (damage/healing spam) over your and your pets frame
PlayerHitIndicator:SetText(nil)
PlayerHitIndicator.SetText = function() end
PetHitIndicator:SetText(nil)
PetHitIndicator.SetText = function() end
-- Arena Trinkets
local trinkets = {}
local events = CreateFrame("Frame")
function events:ADDON_LOADED(addonName)
if addonName ~= "Blizzard_ArenaUI" then
return
end
ArenaEnemyFrame1:ClearAllPoints()
ArenaEnemyFrame1:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", -275, -340)
ArenaEnemyFrame1.SetPoint = function() end
ArenaEnemyFrame2:ClearAllPoints()
ArenaEnemyFrame2:SetPoint("BOTTOMLEFT", ArenaEnemyFrame1, "BOTTOMLEFT", 0, -50)
ArenaEnemyFrame2.SetPoint = function() end
ArenaEnemyFrame3:ClearAllPoints()
ArenaEnemyFrame3:SetPoint("BOTTOMLEFT", ArenaEnemyFrame1, "BOTTOMLEFT", 0, -100)
ArenaEnemyFrame3.SetPoint = function() end
ArenaEnemyFrame4:ClearAllPoints()
ArenaEnemyFrame4:SetPoint("BOTTOMLEFT", ArenaEnemyFrame1, "BOTTOMLEFT", 0, -150)
ArenaEnemyFrame4.SetPoint = function() end
ArenaEnemyFrame5:ClearAllPoints()
ArenaEnemyFrame5:SetPoint("BOTTOMLEFT", ArenaEnemyFrame1, "BOTTOMLEFT", 0, -200)
ArenaEnemyFrame5.SetPoint = function() end
ArenaPrepFrame1:ClearAllPoints()
ArenaPrepFrame1:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", -310, -340)
ArenaPrepFrame1.SetPoint = function() end
ArenaPrepFrame2:ClearAllPoints()
ArenaPrepFrame2:SetPoint("TOPRIGHT", ArenaPrepFrame1, "TOPRIGHT", 0, -50)
ArenaPrepFrame2.SetPoint = function() end
ArenaPrepFrame3:ClearAllPoints()
ArenaPrepFrame3:SetPoint("TOPRIGHT", ArenaPrepFrame1, "TOPRIGHT", 0, -100)
ArenaPrepFrame3.SetPoint = function() end
ArenaPrepFrame4:ClearAllPoints()
ArenaPrepFrame4:SetPoint("TOPRIGHT", ArenaPrepFrame1, "TOPRIGHT", 0, -150)
ArenaPrepFrame4.SetPoint = function() end
ArenaPrepFrame5:ClearAllPoints()
ArenaPrepFrame5:SetPoint("TOPRIGHT", ArenaPrepFrame1, "TOPRIGHT", 0, -200)
ArenaPrepFrame5.SetPoint = function() end
ArenaPrepFrames:SetScale(1.20)
ArenaEnemyFrames:SetScale(1.20)
local arenaFrame, trinket
for i = 1, MAX_ARENA_ENEMIES do
arenaFrame = "ArenaEnemyFrame"..i
trinket = CreateFrame("Cooldown", arenaFrame.."Trinket", ArenaEnemyFrames)
trinket:SetPoint("TOPRIGHT", arenaFrame, 25, 0)
trinket:SetSize(30, 30)
trinket.icon = trinket:CreateTexture(nil, "BACKGROUND")
trinket.icon:SetAllPoints()
trinket.icon:SetTexture("Interface\\Icons\\inv_jewelry_trinketpvp_01")
trinket:Hide()
trinkets["arena"..i] = trinket
end
self:UnregisterEvent("ADDON_LOADED")
end
function events:UNIT_SPELLCAST_SUCCEEDED(unitID, spell, rank, lineID, spellID)
if not trinkets[unitID] then
return
end
if spellID == 59752 or spellID == 42292 then
CooldownFrame_SetTimer(trinkets[unitID], GetTime(), 120, 1)
SendChatMessage("Trinket used by: "..GetUnitName(unitID, true), "PARTY")
elseif spellID == 7744 then
CooldownFrame_SetTimer(trinkets[unitID], GetTime(), 45, 1)
SendChatMessage("WotF used by: "..GetUnitName(unitID, true), "PARTY")
end
end
function events:PLAYER_ENTERING_WORLD()
local _, instanceType = IsInInstance()
if instanceType == "arena" then
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
elseif self:IsEventRegistered("UNIT_SPELLCAST_SUCCEEDED") then
self:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
for _, trinket in pairs(trinkets) do
trinket:SetCooldown(0, 0)
trinket:Hide()
end
end
end
SLASH_TESTAEF1 = "/testaef"
SlashCmdList["TESTAEF"] = function(msg, editBox)
if not IsAddOnLoaded("Blizzard_ArenaUI") then
LoadAddOn("Blizzard_ArenaUI")
end
ArenaEnemyFrames:Show()
local arenaFrame
for i = 1, 3 do
arenaFrame = _G["ArenaEnemyFrame"..i]
arenaFrame.classPortrait:SetTexture("Interface\\TargetingFrame\\UI-Classes-Circles")
arenaFrame.classPortrait:SetTexCoord(unpack(CLASS_ICON_TCOORDS["WARRIOR"]))
arenaFrame.name:SetText("Dispelme")
arenaFrame:Show()
CooldownFrame_SetTimer(trinkets["arena"..i], GetTime(), 120, 1)
end
end
events:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end)
events:RegisterEvent("ADDON_LOADED")
events:RegisterEvent("PLAYER_ENTERING_WORLD")