Creating and addon and some nice ui tweak menu

User Tag List

Results 1 to 3 of 3
  1. #1
    Shalitas's Avatar Active Member CoreCoins Purchaser
    Reputation
    27
    Join Date
    Dec 2006
    Posts
    108
    Thanks G/R
    1/0
    Trade Feedback
    2 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Creating and addon and some nice ui tweak

    Creating Addon and Ui Tweaks

    Hello everyone, I've been a Ownedcore member since the start of World of Warcraft, but never really contributed.
    I've learned so much from this website that I decided to share a few guides with all of you. This is the first one I'm releasing,
    I did not write this, it as been taken from ArenaJunkies.com but I've searched a lot for these tweak and finally learn how to do these.

    If you want to use the easy way, I've already compiled an addon for you guys, it does include:

    -Disable damage/healing spam in floating text
    -
    Darken all the graphics Ibo/Lorti UI style
    -
    Hide the error frame (red text in top middle)
    -
    Class colors in hp bars
    -
    Class colors behind names
    -
    Disable healing/damage spam over player/pet frame
    -
    Change the format of hp/mana text to absolute values ("140k")
    -
    Hide faction/PvP icon
    -
    Disable the group number frame

    To see what it look like:
    Attachment 13587

    Click here to download the addon


    To install all you need to do is extract all the folder in World of Warcraft/Interface/Addons
    It is already updated for patch 5.2

    For you guys who wish to create theire own addon, Here is the guide:

    Table of contents

    • How to use scripts
    • General/uncategorized scripts
      • Disable damage/healing spam in floating text
      • Add more "power auras"
      • Darken all the graphics Ibo/Lorti UI style
      • Hide the error frame (red text in top middle)

    • Unit frame scripts
      • Class icons instead of portraits
      • Class colors in hp bars
      • Class colors behind names
      • Disable healing/damage spam over player/pet frame
      • Flashy spellsteal border for non-mages and/or enrage effects
      • Change the format of hp/mana text to absolute values ("140k")
      • Hide the faction/PvP icon
      • Disable the group number frame
      • Scaling/moving unitframes

    • Arena frame scripts
      • Show frames outside of arena (macro)
      • Scaling/moving arenaframes and castbars
      • Arena trinkets tracker

    • Action bar scripts
      • Hide graphics
      • Hide macro labels
      • Hide hotkeys

    • Cast bar scripts
      • Text cast timer ("0.8 / 1.5")
      • Scaling/moving castbars

    • Quality of life scripts
      • Autosell grey trash and repair
      • Minimap tweaks
      • Extra slash commands



    1. How to use scripts

    You either need to create your own addon, add the code to an existing addon (I don't recommend this), or run it in-game via the /run command. The latter, in most cases, requires a condensed form of the script to fit the 255 character limit of input/macros; macros often need to be executed after every reload or zone. Unless you're going to Blizzcon tomorrow, there's really no reason to use macros - just create an addon. I will, however, add macros where available (i.e. those I already have in macro form).

    Download this template: http://www.mediafire...b4cj4r0fcqcwquj

    This already has the folder structure and the .toc file, at this point you only need to open the .lua file as a text file (with notepad/wordpad or anything that works with raw text), and simply copy/paste the code you want from below.

    You don't need to relog every time you edit a .lua file if the addon is loaded, a /reloadui is enough.

    Comments start with "--", multi-line comments look like this:

    Code:
    --[[
    This code
    won't execute.
    ]]
    
    -- This is a single-line comment
    This way you can enable/disable certain features, or just add comments to organize your code better.

    If you're a do it yourself type, here's how you create an addon:
    1. Create YourAddon folder in Interface/Addons
    2. Create a text file called YourAddon.toc (has to be the same name as the folder), content should be:

    Code:
    ## Title: YourAddon
    ## Interface: 50001
    
    YourAddon.lua
    3. Create YourAddon.lua (can be any filename, but it has to be mentioned in the .toc file to load), copy scripts into that file.

    Make sure that you see the actual extensions of files - this is disabled by default in Windows. So the files you are looking at might actually be YourAddon.toc.txt and YourAddon.lua.txt, and of course it doesn't work in this case.

    2. General/uncategorized scripts


    2.1. Disable damage/healing spam in floating text:
    Code:
    LoadAddOn("Blizzard_CombatText")
    
    COMBAT_TEXT_TYPE_INFO["PERIODIC_HEAL"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["HEAL_CRIT"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["HEAL"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["PERIODIC_HEAL_ABSORB"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["HEAL_CRIT_ABSORB"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["HEAL_ABSORB"] = {var = nil, show = nil}
    
    COMBAT_TEXT_TYPE_INFO["DAMAGE_CRIT"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["DAMAGE"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["SPELL_DAMAGE_CRIT"] = {var = nil, show = nil}
    COMBAT_TEXT_TYPE_INFO["SPELL_DAMAGE"] = {var = nil, show = nil}
    Macros:
    Code:
    /run CTTI=COMBAT_TEXT_TYPE_INFO CTTI.PERIODIC_HEAL={var=nil,show=nil} CTTI.HEAL_CRIT={var=nil,show=nil} CTTI.HEAL={var=nil,show=nil} CTTI.PERIODIC_HEAL_ABSORB={var=nil,show=nil} CTTI.HEAL_CRIT_ABSORB={var=nil,show=nil} CTTI.HEAL_ABSORB={var=nil,show=nil} 
    /run CTTI.DAMAGE_CRIT={var=nil,show=nil} CTTI.DAMAGE={var=nil,show=nil} CTTI.SPELL_DAMAGE_CRIT={var=nil,show=nil} CTTI.SPELL_DAMAGE={var=nil,show=nil}
    2.2. Add more "power auras":
    Code:
    local frame = CreateFrame("FRAME")
    frame:RegisterEvent("UNIT_AURA")
    
    frame:SetScript("OnEvent", function(self, event, ...)
            local unitid = ... if unitid ~= "player" then return end
    
            if UnitBuff("player", "Eradication") then
                    SpellActivationOverlay_ShowOverlay(SpellActivationOverlayFrame, 64371, "TEXTURES\\SPELLACTIVATIONOVERLAYS\\GENERICTOP_01.BLP", "TOP", 1.2, 139, 65, 239, false, false)
            else
                    SpellActivationOverlay_HideOverlays(SpellActivationOverlayFrame, 64371)
            end
    end)
    First, change "Eradication" to whatever you need. (Use the locale/language you actually play on.)

    Next, here's how you configure this whole thing:
    SpellActivationOverlay_ShowOverlay(self, spellID, texturePath, location, scale, r, g, b, info.vFlip, info.hFlip)
    It's all pretty self-explanatory. Keep the first argument as it is in the script above, everything else you can change/edit as you wish to. The last two arguments are vertical and horizontal flips, "r, g, b" are red/green/blue color codes (0-255).

    To get the spellID, find your spell/aura on wowhead and look at the address bar. The number is the spellID. Keep in mind you need the spellID of the buff, not the spell that triggers it - they are sometimes different.

    Textures created for the default UI and available in the game files:
    Spoiler
    Just change the last part of the texture path provided in the example above to any of these.

    If that's not enough, you can always steal a file from Power Auras or other addons. To specify an external texture: "Interface\\AddOns\\YourAddon\\yourtexture.tga" - you can use .tga files; in general, you can use any texture/picture available to the game (anything in the game files and anything in addon folders).

    2.3. Darken all the graphics Ibo/Lorti UI style:

    This particular script is stolen from Ibo UI. You'll also need some textures to make it look right, simply put them into the /Interface/ folder alongside the Addons folder:
    http://www.mediafire...mpaxe6jfllwa5q8

    Code:
    local frame=CreateFrame("Frame")
    frame:RegisterEvent("ADDON_LOADED")
    
    frame:SetScript("OnEvent", function(self, event, addon)
            if (addon == "Blizzard_TimeManager") then
                    for i, v in pairs({PlayerFrameTexture, TargetFrameTextureFrameTexture, PetFrameTexture, PartyMemberFrame1Texture, PartyMemberFrame2Texture, PartyMemberFrame3Texture, PartyMemberFrame4Texture,
                            PartyMemberFrame1PetFrameTexture, PartyMemberFrame2PetFrameTexture, PartyMemberFrame3PetFrameTexture, PartyMemberFrame4PetFrameTexture, FocusFrameTextureFrameTexture,
                            TargetFrameToTTextureFrameTexture, FocusFrameToTTextureFrameTexture, BonusActionBarFrameTexture0, BonusActionBarFrameTexture1, BonusActionBarFrameTexture2, BonusActionBarFrameTexture3,
                            BonusActionBarFrameTexture4, MainMenuBarTexture0, MainMenuBarTexture1, MainMenuBarTexture2, MainMenuBarTexture3, MainMenuMaxLevelBar0, MainMenuMaxLevelBar1, MainMenuMaxLevelBar2,
                            MainMenuMaxLevelBar3, MinimapBorder, CastingBarFrameBorder, FocusFrameSpellBarBorder, TargetFrameSpellBarBorder, MiniMapTrackingButtonBorder, MiniMapLFGFrameBorder, MiniMapBattlefieldBorder,
                            MiniMapMailBorder, MinimapBorderTop,
                            select(1, TimeManagerClockButton:GetRegions())
                    }) do
                            v:SetVertexColor(.4, .4, .4)
                    end
    
                    for i,v in pairs({ select(2, TimeManagerClockButton:GetRegions()) }) do
                            v:SetVertexColor(1, 1, 1)
                    end
    
                    self:UnregisterEvent("ADDON_LOADED")
                    frame:SetScript("OnEvent", nil)
            end
    end)
    
    for i, v in pairs({ MainMenuBarLeftEndCap, MainMenuBarRightEndCap }) do
            v:SetVertexColor(.35, .35, .35)
    end
    2.4. Hide the error frame (red text in top middle):
    Code:
    UIErrorsFrame:SetAlpha(0)
    3. Unit frame scripts

    3.1. Class icons instead of portraits:

    Code:
    hooksecurefunc("UnitFramePortrait_Update",function(self)
            if self.portrait then
                    if UnitIsPlayer(self.unit) then                         
                            local t = CLASS_ICON_TCOORDS[select(2, UnitClass(self.unit))]
                            if t then
                                    self.portrait:SetTexture("Interface\\TargetingFrame\\UI-Classes-Circles")
                                    self.portrait:SetTexCoord(unpack(t))
                            end
                    else
                            self.portrait:SetTexCoord(0,1,0,1)
                    end
            end
    end)
    Macros:
    Code:
    /run UFP="UnitFramePortrait_Update" UICC="Interface\\TargetingFrame\\UI-Classes-Circles" CIT=CLASS_ICON_TCOORDS UC=UnitClass 
    /run hooksecurefunc(UFP,function(self) if self.portrait then t=CIT[select(2,UC(self.unit))] if t and UnitIsPlayer(self.unit) then self.portrait:SetTexture(UICC) self.portrait:SetTexCoord(unpack(t)) else self.portrait:SetTexCoord(0,1,0,1) end end end)

    3.2. Class colors in hp bars:

    Code:
    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)
    Macros:
    Code:
    /run UIP=UnitIsPlayer UIC=UnitIsConnected RCC=RAID_CLASS_COLORS PFHB=PlayerFrameHealthBar UC=UnitClass 
    /run function colour(sb,unit) if UIP(unit) and UIC(unit) and unit==sb.unit and UC(unit) then _,cl=UC(unit) c=RAID_CLASS_COLORS[cl] sb:SetStatusBarColor(c.r,c.g,c.b) PFHB:SetStatusBarColor(0,1,0) end end 
    /run hooksecurefunc("UnitFrameHealthBar_Update", colour) hooksecurefunc("HealthBar_OnValueChanged", function(self) colour(self, self.unit) end)
    3.3. Class colors behind names:
    Code:
    local frame = CreateFrame("FRAME")
    frame:RegisterEvent("GROUP_ROSTER_UPDATE")
    frame:RegisterEvent("PLAYER_TARGET_CHANGED")
    frame:RegisterEvent("PLAYER_FOCUS_CHANGED")
    frame:RegisterEvent("UNIT_FACTION")
    
    local function eventHandler(self, event, ...)
            if UnitIsPlayer("target") then
                    c = RAID_CLASS_COLORS[select(2, UnitClass("target"))]
                    TargetFrameNameBackground:SetVertexColor(c.r, c.g, c.b)
            end
            if UnitIsPlayer("focus") then
                    c = RAID_CLASS_COLORS[select(2, UnitClass("focus"))]
                    FocusFrameNameBackground:SetVertexColor(c.r, c.g, c.b)
            end
    end
    
    frame:SetScript("OnEvent", eventHandler)
    
    for _, BarTextures in pairs({TargetFrameNameBackground, FocusFrameNameBackground}) do
            BarTextures:SetTexture("Interface\\TargetingFrame\\UI-StatusBar")
    end
    Macros:
    Code:
    /run UIP=UnitIsPlayer RCC=RAID_CLASS_COLORS UC=UnitClass TFNB=TargetFrameNameBackground FFNB=FocusFrameNameBackground 
    /run f=CreateFrame("FRAME") f:RegisterEvent("PARTY_MEMBERS_CHANGED") f:RegisterEvent("PLAYER_TARGET_CHANGED") f:RegisterEvent("PLAYER_FOCUS_CHANGED") f:RegisterEvent("UNIT_FACTION") 
    /run function e(self,event,...) if UIP("target") then c=RCC[select(2,UC("target"))] TFNB:SetVertexColor(c.r,c.g,c.b) end if UIP("focus") then c=RCC[select(2,UC("focus"))] FFNB:SetVertexColor(c.r,c.g,c.b) end end f:SetScript("OnEvent",e)
    3.4. Disable healing/damage spam over player/pet frame:
    Code:
    PlayerHitIndicator:SetText(nil)
    PlayerHitIndicator.SetText = function() end
    
    PetHitIndicator:SetText(nil)
    PetHitIndicator.SetText = function() end
    3.5. Flashy spellsteal border for non-mages and/or enrage effects:
    Code:
    hooksecurefunc("TargetFrame_UpdateAuras", function(s)
            for i = 1, MAX_TARGET_BUFFS do
                    _, _, ic, _, dT = UnitBuff(s.unit, i)
                    if(ic and (not s.maxBuffs or i<=s.maxBuffs)) then
                            fS=_G[s:GetName()..'Buff'..i..'Stealable']
                            if(UnitIsEnemy(PlayerFrame.unit, s.unit) and dT=='Magic') then
                                    fS:Show()
                            else
                                    fS:Hide()
                            end
                    end
            end
    end)
    Macros:
    Code:
    /run b = 'Buff' st = 'Stealable' mM = 'Magic' mB = maxBuffs TFUA = 'TargetFrame_UpdateAuras' PFu = PlayerFrame.unit MTB = MAX_TARGET_BUFFS UB = UnitBuff UIE = UnitIsEnemy 
    /run hooksecurefunc(TFUA,function(s) for i=1,MTB do _,_,ic,_,dT=UB(s.unit,i) if(ic and (not s.mB or i<=s.mB)) then fS=_G[s:GetName()..b..i..st] if (UIE(PFu,s.unit) and dT==mM) then fS:Show() else fS:Hide() end end end end)
    You can adapt this to enrages by changing the dT=='Magic' line to dT='' (or in the macro, mM='' instead of mM='Magic'). For an unknown reason, enrage effects return an empty string as their debuff type.

    3.6. Change the format of hp/mana text to absolute values ("140k"):
    Code:
    hooksecurefunc("TextStatusBar_UpdateTextStringWithValues", function()
            PlayerFrameHealthBar.TextString:SetText(AbbreviateLargeNumbers(UnitHealth("player")))
            PlayerFrameManaBar.TextString:SetText(AbbreviateLargeNumbers(UnitMana("player")))
    
            TargetFrameHealthBar.TextString:SetText(AbbreviateLargeNumbers(UnitHealth("target")))
            TargetFrameManaBar.TextString:SetText(AbbreviateLargeNumbers(UnitMana("target")))
    
            FocusFrameHealthBar.TextString:SetText(AbbreviateLargeNumbers(UnitHealth("focus")))
            FocusFrameManaBar.TextString:SetText(AbbreviateLargeNumbers(UnitMana("focus")))
    end)
    3.7. Hide faction/PvP icon:
    Code:
    PlayerPVPIcon:SetAlpha(0)
    TargetFrameTextureFramePVPIcon:SetAlpha(0)
    FocusFrameTextureFramePVPIcon:SetAlpha(0)
    3.8. Disable the group number frame:
    Code:
    PlayerFrameGroupIndicator.Show = function() return end
    3.9. Scaling/moving frames:
    Code:
    framename:SetScale(1.1)
    You can find the frame name by using /fstack. Value is in %, i.e. 1.1 is 110%.

    Move most frames on the default UI:
    Code:
    /run local f=framename; f:SetMovable(true); f:EnableMouse(true); f:SetUserPlaced(true); f:SetScript("OnMouseDown", f.StartMoving); f:SetScript("OnMouseUp", f.StopMovingOrSizing);
    You can find the frame name by using /fstack. Drag the frame where you want it to be, reload. (If it doesn't save, type /console synchronizeSettings 0 and try again.)

    I personally recommend to move the TargetFrameToT (target of target) frame at least, because it often overlaps the last debuff. Just move it a little bit to the right. This method works for sure for the ToT frame.

    If the above method doesn't work or doesn't save position for the frame you're trying to move (doesn't for pet frame, for example), paste this into your addon:
    Code:
    framename:ClearAllPoints()
    framename:SetPoint("CENTER", x, y)
    framename.SetPoint = function() end
    Also, you can move the player, target and focus frames within the default UI by right clicking on it and unlocking/locking. That's much better than moving it with scripts due to some weird interactions with vehicle UI if you move those frames with scripts.

    4. Arena frame scripts

    4.1. Show frames outside of arena (macro):
    Code:
    /run LoadAddOn("Blizzard_ArenaUI") ArenaEnemyFrames:Show() ArenaEnemyFrame1:Show() ArenaEnemyFrame2:Show() ArenaEnemyFrame3:Show() ArenaEnemyFrame1CastingBar:Show() ArenaEnemyFrame2CastingBar:Show() ArenaEnemyFrame3CastingBar:Show()
    This will display frames 1, 2 and 3 with the cast bars.

    4.2. Scaling/moving arenaframes and castbars:
    Code:
    LoadAddOn("Blizzard_ArenaUI") -- You only need to run this once. You can safely delete any copies of this line.
    
    ArenaEnemyFrame1:ClearAllPoints()
    ArenaEnemyFrame2:ClearAllPoints()
    ArenaEnemyFrame3:ClearAllPoints()
    ArenaEnemyFrame4:ClearAllPoints()
    ArenaEnemyFrame5:ClearAllPoints()
    
    ArenaEnemyFrame1:SetPoint("CENTER",UIParent,"CENTER",350,50)
    ArenaEnemyFrame2:SetPoint("CENTER",UIParent,"CENTER",350,0)
    ArenaEnemyFrame3:SetPoint("CENTER",UIParent,"CENTER",350,-50)
    ArenaEnemyFrame4:SetPoint("CENTER",UIParent,"CENTER",350,-100)
    ArenaEnemyFrame5:SetPoint("CENTER",UIParent,"CENTER",350,-150)
    
    ArenaEnemyFrame1.SetPoint = function() end
    ArenaEnemyFrame2.SetPoint = function() end
    ArenaEnemyFrame3.SetPoint = function() end
    ArenaEnemyFrame4.SetPoint = function() end
    ArenaEnemyFrame5.SetPoint = function() end
    Frames have to be moved separately now. ClearAllPoints and blanketing the SetPoint method are both mandatory now for it to work properly. The only way to fit this in a macro is to loop it, I'll add this in later.

    Code:
    ArenaEnemyFrames:SetScale(1.3)
    This scales up the whole thing, everything in the frames will be scaled up equally. Make sure this is after LoadAddOn("Blizzard_ArenaUI").

    Code:
    for i=1, 5 do
            _G["ArenaEnemyFrame"..i]:SetScale(1.3)
            _G["ArenaEnemyFrame"..i.."CastingBar"]:SetScale(1.3)
            -- _G["ArenaEnemyFrame"..i.."CastingBar"]:SetPoint("RIGHT", 95, 0)
    end
    This lets you scale things up separately if you want to. First line changes the scale of arena frames themselves. Second line changes the scale of the cast bar. Third line moves the cast bar to the right of the frame - its disabled here, just remove the "--" to enable it (just an example of using comments in code).

    4.3. Arena trinkets tracker:

    Code:
    LoadAddOn("Blizzard_ArenaUI") -- You only need to run this once. You can safely delete any copies of this line.
    
    trinkets = {}
    local arenaFrame, trinket
    for i = 1, 5 do
            arenaFrame = "ArenaEnemyFrame"..i
            trinket = CreateFrame("Cooldown", arenaFrame.."Trinket", ArenaEnemyFrames)
            trinket:SetPoint("TOPRIGHT", arenaFrame, 30, -6)
            trinket:SetSize(24, 24)
            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
    
    local events = CreateFrame("Frame")
    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")
            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
    events:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end)
    events:RegisterEvent("PLAYER_ENTERING_WORLD")
    This puts icons to the right of the arena frames. Does not track WotF - it now simply shares 30 seconds CD with trinkets, so it's impossible to track with just 1 icon. Only enables in arenas.

    5. Action bar scripts

    5.1. Hide graphics:
    I will just list all the options in one block, you can choose which you want. You can enter them separately with /run if you want to see each individually.
    Code:
    MainMenuBarLeftEndCap:Hide()
    MainMenuBarRightEndCap:Hide() -- hide the gryphons
    
    MainMenuExpBar:Hide()
    MainMenuBarMaxLevelBar:SetAlpha(0) -- hide the xp bar
    
    MainMenuBarTexture0:Hide() -- hide all the background textures.
    MainMenuBarTexture1:Hide() -- leaving them on looks better,
    MainMenuBarTexture2:Hide() -- unless you are going to hide the
    MainMenuBarTexture3:Hide() -- micromenu and bag buttons too.
    
    BonusActionBarFrameTexture1:SetAlpha(0)
    BonusActionBarFrameTexture2:SetAlpha(0) -- this is for druids/rogues/warriors.
    BonusActionBarFrameTexture3:SetAlpha(0) -- their stances cause this to show up
    BonusActionBarFrameTexture4:SetAlpha(0) -- over the normal bar.
    
    SlidingActionBarTexture0:SetAlpha(0)
    SlidingActionBarTexture1:SetAlpha(0) -- hide pet bar background
    
    -- These hide individual elements of the menu bar. Its easy to figure out what is what.
    ActionBarUpButton:Hide()
    ActionBarDownButton:Hide()
    MainMenuBarPageNumber:SetAlpha(0)
    
    CharacterMicroButton:Hide()
    SpellbookMicroButton:Hide()
    TalentMicroButton:Hide()
    AchievementMicroButton:Hide()
    QuestLogMicroButton:Hide()
    GuildMicroButton:Hide()
    PVPMicroButton:Hide()
    LFDMicroButton:Hide()
    CompanionsMicroButton:Hide()
    EJMicroButton:Hide()
    MainMenuMicroButton:Hide()
    HelpMicroButton:Hide()
    
    CharacterBag3Slot:Hide()
    CharacterBag2Slot:Hide()
    CharacterBag1Slot:Hide()
    CharacterBag0Slot:Hide()
    MainMenuBarBackpackButton:Hide()
    5.2. Hide macro labels:
    Code:
    for i=1, 12 do
            _G["ActionButton"..i.."Name"]:SetAlpha(0) -- main bar
            _G["MultiBarBottomRightButton"..i.."Name"]:SetAlpha(0) -- bottom right bar
            _G["MultiBarBottomLeftButton"..i.."Name"]:SetAlpha(0) -- bottom left bar
            _G["MultiBarRightButton"..i.."Name"]:SetAlpha(0) -- right bar
            _G["MultiBarLeftButton"..i.."Name"]:SetAlpha(0) -- left bar
    end
    5.3. Hide hotkeys:
    Code:
    for i=1, 12 do
            _G["ActionButton"..i.."HotKey"]:SetAlpha(0) -- main bar
            _G["MultiBarBottomRightButton"..i.."HotKey"]:SetAlpha(0) -- bottom right bar
            _G["MultiBarBottomLeftButton"..i.."HotKey"]:SetAlpha(0) -- bottom left bar
            _G["MultiBarRightButton"..i.."HotKey"]:SetAlpha(0) -- right bar
            _G["MultiBarLeftButton"..i.."HotKey"]:SetAlpha(0) -- left bar
    end
    6. Cast bar scripts

    6.1. Text cast timer ("0.8 / 1.5"):
    Code:
    CastingBarFrame.timer = CastingBarFrame:CreateFontString(nil);
    CastingBarFrame.timer:SetFont(STANDARD_TEXT_FONT,12,"OUTLINE");
    CastingBarFrame.timer:SetPoint("TOP", CastingBarFrame, "BOTTOM", 0, 0);
    CastingBarFrame.update = .1;
    
    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)
    6.2. Scaling/moving castbars
    Player cast bar:
    Code:
    CastingBarFrame:ClearAllPoints()
    CastingBarFrame:SetPoint("CENTER",UIParent,"CENTER", 0, -235)
    CastingBarFrame.SetPoint = function() end
    CastingBarFrame:SetScale(1.0) 
    Target cast bar. This one is attached to the target unit frame by  default, this script will unattach it and place it in the center:
    
    TargetFrameSpellBar:ClearAllPoints()
    TargetFrameSpellBar:SetPoint("CENTER", UIParent, "CENTER", 0, -140)
    TargetFrameSpellBar.SetPoint = function() end
    TargetFrameSpellBar:SetScale(1.0) Focus cast bar functions the exact same way as the target cast bar, just that the frame is called FocusFrameSpellBar.
    
    Set the cast bar above the frame instead of under the auras:
    
    TargetFrameSpellBar:ClearAllPoints()
    TargetFrameSpellBar:SetPoint("BOTTOM", TargetFrame, "TOP", -15, 0)
    TargetFrameSpellBar.SetPoint = function() end
    It will still remain attached to the target frame if you decide to move the target frame. Change "Target" to "Focus" everywhere and you'll get the same script for focus frame.

    Spoiler

    7. Quality of life scripts


    7.1. Autosell grey trash and repair:
    Code:
    local g = CreateFrame("Frame")
    g:RegisterEvent("MERCHANT_SHOW")
    
    g:SetScript("OnEvent", function()  
            local bag, slot
            for bag = 0, 4 do
                    for slot = 0, GetContainerNumSlots(bag) do
                            local link = GetContainerItemLink(bag, slot)
                            if link and (select(3, GetItemInfo(link)) == 0) then
                                    UseContainerItem(bag, slot)
                            end
                    end
            end
    
            if(CanMerchantRepair()) then
                    local cost = GetRepairAllCost()
                    if cost > 0 then
                            local money = GetMoney()
                            if IsInGuild() then
                                    local guildMoney = GetGuildBankWithdrawMoney()
                                    if guildMoney > GetGuildBankMoney() then
                                            guildMoney = GetGuildBankMoney()
                                    end
                                    if guildMoney > cost and CanGuildBankRepair() then
                                            RepairAllItems(1)
                                            print(format("|cfff07100Repair cost covered by G-Bank: %.1fg|r", cost * 0.0001))
                                            return
                                    end
                            end
                            if money > cost then
                                    RepairAllItems()
                                    print(format("|cffead000Repair cost: %.1fg|r", cost * 0.0001))
                            else
                                    print("Not enough gold to cover the repair cost.")
                            end
                    end
            end
    end)
    Will use guild bank if available.

    7.1. Minimap tweaks:
    Code:
    MinimapZoomIn:Hide()
    MinimapZoomOut:Hide()
    Minimap:EnableMouseWheel(true)
    Minimap:SetScript('OnMouseWheel', function(self, delta)
            if delta > 0 then
                    Minimap_ZoomIn()
            else
                    Minimap_ZoomOut()
            end
    end)
    MiniMapTracking:ClearAllPoints()
    MiniMapTracking:SetPoint("TOPRIGHT", -26, 7)
    Hides zoom in/out buttons, enables mousewheel zoom, and moves the tracking button to top right near the calendar button.

    7.3. Extra slash commands:
    Code:
    SlashCmdList["CLCE"] = function() CombatLogClearEntries() end
    SLASH_CLCE1 = "/clc"
    
    SlashCmdList["TICKET"] = function() ToggleHelpFrame() end
    SLASH_TICKET1 = "/gm"
    
    SlashCmdList["READYCHECK"] = function() DoReadyCheck() end
    SLASH_READYCHECK1 = '/rc'
    
    SlashCmdList["CHECKROLE"] = function() InitiateRolePoll() end
    SLASH_CHECKROLE1 = '/cr'
    - /clc to clear combat log
    - /gm to open a GM ticket
    - /rc for readycheck
    - /cr for check role
    Follow me @ Twitch.tv/ShalitasWins

    Creating and addon and some nice ui tweak
  2. #2
    Watcher's Avatar Former Staff CoreCoins Purchaser
    Reputation
    1149
    Join Date
    Nov 2010
    Posts
    3,775
    Thanks G/R
    37/58
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanx for sharing +7 Rep

  3. #3
    Lemour's Avatar Elite User CoreCoins Purchaser
    Reputation
    354
    Join Date
    Apr 2009
    Posts
    335
    Thanks G/R
    27/53
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Holy.... Awesome! 5+!

Similar Threads

  1. [Buying] Account with some nice mounts, and or titles.
    By jesse7892 in forum WoW-US Account Buy Sell Trade
    Replies: 9
    Last Post: 09-02-2019, 05:39 AM
  2. [Selling] WoD account with Druid -100, alts and some nice mounts CHEAP
    By sparkyiezz in forum WoW-EU Account Buy Sell Trade
    Replies: 4
    Last Post: 06-15-2015, 10:02 PM
  3. [Selling] GW2 EU Account with 5* LVL80, some nice stuff and own Email-adress
    By desperato84 in forum GW2 Buy Sell Trade
    Replies: 1
    Last Post: 02-02-2014, 12:02 PM
All times are GMT -5. The time now is 02:00 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search