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).

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:

--[[
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:

## 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.

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.

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

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)

/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)

/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 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)

/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.

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:

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.

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.

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").

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).

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

Just so you understand how this works: obj:SetPoint(point, relativeFrame, relativePoint, ofsx, ofsy)
- point is the point of the object that'll be considered its anchor when adjusting;
- relativeFrame is the frame we are attaching it to (use UIParent when you don't want to attach it to anything - that's the whole fullscreen UI frame);
- relativePoint is the point we attach the object to
- ofsx and ofsy are x and y offsets

So, in this case we tell it to attach TargetFrameSpellBar with its "BOTTOM" to the "TOP" of TargetFrame, and move it 15 pixels to the left (x offset).

7. Quality of life scripts

7.1. Autosell grey trash and repair:

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)

This thread is a work in progress. I'm posting it before its done because if I don't post it, I'll never finish it and it will just rot on my desktop in a .txt for eternity like all my other unfinished articles.

Scripts to add:
- Scale up buffs/debuffs on target/focus frames - still looking for a decent script for this
- Raid/party buff/debuff tweaks for healers. I got some scripts lying about like prioritizing UA debuff, moving debuffs to the right of the frame etc, but I have no idea how useful this actually is. Need a healer PoV/opinion on these
- hp/mana text on arena frames - not sure if this shows by default or not (couldn't test)
- move/resize action bars scripts. Same as with pvp trinkets - I just didn't get around to it, don't bother linking me those
- Change status bar color of uninterruptable casts - wonder if this is at all possible?
- Stopwatch stuff. Will look at Xandyns scripts, just haven't gotten around to it yet
- Hidden cooldown tracker for things like hamstring or mage frostbolt. Got a script for hamstring, just wonder if I can adapt it to other stuff, maybe even proc trinkets
- Hide chat tab highlight on whispers - saw Navariums script for this, but it just hides the buttons for me (not even clickable). Like the idea though

What I don't want to do with this thread, at least not now:
- Miniports of other addons, such as omnicc, losecontrol, spellalert, etc. If you want that functionality, you might as well just use the addons, there's really no reason not to unless you're going to LAN. Don't bother posting these. Otherwise I'm open to any suggestions.

If you can find the Class Portraits post that involves changing druid portraits by druid form and add it to your compilation, that would be awesome (it's somewhere here on the forums, but I have no idea where it was posted)...

I've seen that portrait macro in a recent Arena video and must say it was very nice in action.

/run for i = 1, 12 do _G["BonusActionButton"..i.."HotKey"]:Hide() end
/run for i = 1, 12 do _G["MultiBarBottomLeftButton"..i.."HotKey"]:Hide() end
/run for i = 1, 12 do _G["MultiBarBottomRightButton"..i.."HotKey"]:Hide() end

These will reappear in combat, using SetAlpha(0) circumvents this problem. =)

Blackafrican, on 23 May 2011 - 05:45 PM, said:

I think you guys need to realize that shamans are not the problem, and are probably less powerful than you think.

Corrected a spacing error that was throwing an error in game. Thanks for posting the script.

wit4er, on 17 April 2012 - 04:37 PM, said:

Spoiler

UFP ="UnitFramePortrait_Update"
UICC ="Interface\\TargetingFrame\\UI-Classes-Circles"
CIT = CLASS_ICON_TCOORDS
hooksecurefunc(UFP,function(self)
if self.portrait then
if select(2,UnitClass(self.unit))=="DRUID"then
local i, flag=1,false
while UnitBuff(self.unit, i)do
local id =select(11,UnitBuff(self.unit, i))
--768(CatForm) 783(TravelForm)1066(AquaticForm)5487(BearForm)24858(MoonkinForm)33891(Tree of Life)33943(FlightForm)40120(SwiftFlightForm)
if id ==768 or id ==783 or id ==1066 or id ==5487 or id ==24858 or id ==33891 or id ==33943 or id ==40120 then
SetPortraitToTexture(self.portrait,GetSpellTexture(id));
self.portrait:SetTexCoord(0,1,0,1)
flag =true
end
i = i +1
end
if not flag then
self.portrait:SetTexture(UICC)
self.portrait:SetTexCoord(unpack(CIT.DRUID))
end
else
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
end)

This thread is a work in progress. I'm posting it way before its done because if I don't post it, I'll never finish it and it will just rot on my desktop in a .txt for eternity like all the other unfinished articles. And yes, I want it to be a sticky - doubt Kollektiv is planning to ever update the current thread.

Known issues/to-do list:
- I haven't tested some of the scripts. Namely the action bar scripts (I use dominos myself), arena scripts (nobody to wargame with to test them in actual arena, although I did test them with forced display).
- Order is random.
- Table of contents. (Can I create anchors with bb code? or will it have to be plain text Ctrl+F kind of thing)
- I'll add (small) screenshots and spoilertag some/all of the scripts, just improve format in general.

Scripts to add:
- Scale up buffs/debuffs on target/focus frames - still looking for a decent script for this
- Raid/party buff/debuff tweaks for healers. I got some scripts lying about like prioritizing UA debuff, moving debuffs to the right of the frame etc, but I have no idea how useful this actually is. Need a healer PoV/opinion on these.
- PvP trinket tracking. Several variants flowing about, don't bother linking them to me. I just want to test it properly first.
- hp/mana text on arena frames - not sure if this shows by default or not (couldn't test).
- move/resize action bars scripts. Same as with pvp trinkets - I just didn't get around to it, don't bother linking me those.
- Change status bar color of uninterruptable casts - wonder if this is at all possible?
- Stopwatch stuff. Will look at Xandyns scripts, just haven't gotten around to it yet.
- Hidden cooldown tracker for things like hamstring or mage frostbolt. Got a script for hamstring, just wonder if I can adapt it to other stuff, maybe even proc trinkets.
- Hide chat tab highlight on whispers - saw Navariums script for this, but it just hides the buttons for me (not even clickable). Like the idea though

What I don't want to do with this thread, at least not now: miniports of other addons, such as omnicc, losecontrol, spellalert, etc. If you want that functionality, you might as well just use the addons, there's really no reason not to unless you're going to Blizzcon tomorrow. Don't bother posting these. Otherwise I'm open to suggestions/contributions/optimizations.

I'm also sure there are some inconsistencies or errors in this current version since I'm too tired to proofread it properly, so do speak up if you notice mistakes.

/run for i=1,16 do _G["FocusFrameDebuff"..i]:SetScale(2)end
/run for i=1,16 do _G["TargetFrameDebuff"..i]:SetScale(2)end
/run for i=1,16 do _G["FocusFrameBuff"..i]:SetScale(2)end
/run for i=1,16 do _G["TargetFrameBuff"..i]:SetScale(2)end

This will increase the buff and debuff sizes, just take LUA errors off, as it seems to put up errors. =) Still works fine for me, though.

/run for j=1,40 do for i=1,3 do local f=_G["CompactRaidFrame"..j.."DispelDebuff"..i]if f then f:SetAlpha(0)local f=_G["CompactRaidFrame"..j.."Debuff"..i]if f then f:ClearAllPoints()end end end end
/run for j=1,40 do for i=1,3 do local f=_G["CompactRaidFrame"..j.."Debuff"..i.."Cooldown"]if f then f:SetScale(0.6)end end end
/run for j=1,40 do for i=1,3 do local f=_G["CompactRaidFrame"..j.."Debuff"..i]if f then f:SetPoint("BOTTOMRIGHT",0+i*13,0)local f=_G["CompactRaidFrame"..j.."Debuff"..i]if f then f:SetScale(2)end end end end

These scripts will hide the raid frame DispelDebuff icon, resize the debuffs and move them to the right of the frame, amazing for RBGs. <3 For party buffs just use Kollektiv's script in sticky, my personal preference is that I don't like it though, too much clutter.

For the chat, while my script hides them, you can simply make a SetBindingClick call to ChatFramen<n>Tab to click them. =)

Blackafrican, on 23 May 2011 - 05:45 PM, said:

I think you guys need to realize that shamans are not the problem, and are probably less powerful than you think.

- Wrote table of contents (ctrl+f ghetto search possible);
- Ordered the scripts by what I think is more relevant/useful/popular;- Changed the "absolute value on unitframes" script to a more efficient version. New version uses much much less cpu cycles. I urge you to switch to it if you're using the old script that runs on every OnUpdate event (ctrl+f 3.6);
- Added Novoz horizontal arena frames as an example for arena frame scaling/position script (ctrl+f 4.2);
- Action bar scripts actually work now (hotkey hide script didn't work at all), and expanded the hide graphic section (scripts to hide pretty much everything if you want to).

Just need to add screenshots to everything now and I'm done with the tedious/boring part of it. Will add the scripts I promised to add after that. Got very limited time this week, and none this weekend most likely.

Would like to ask you something if you dont mind - is it possible to change the scale and/or position of the default blizzard combat text through scripts?

I found this to work for scaling:

CombatText:SetScale(1.5)

But the interaction is a bit weird since that resizes the frame with the floating text, not increases the font size. So basically the more you increase it, the higher up the text will pop. Default scale is 1, obviously.

COMBAT_TEXT_HEIGHT = 25

This will increase font size (25 is the default value). This will make the text itself look worse, though.

As for position: that'll be a lot harder. It seems that the position is hardcoded directly into the function that creates messages, it'll be hard to modify it, the solution definitely won't look pretty.

But the interaction is a bit weird since that resizes the frame with the floating text, not increases the font size. So basically the more you increase it, the higher up the text will pop. Default scale is 1, obviously.

COMBAT_TEXT_HEIGHT = 25

This will increase font size (25 is the default value). This will make the text itself look worse, though.

As for position: that'll be a lot harder. It seems that the position is hardcoded directly into the function that creates messages, it'll be hard to modify it, the solution definitely won't look pretty.