# Forum > World of Warcraft > World of Warcraft Exploits >  Use Blizzard UI-Protected Functions

## rljohn

Found this little gem today on Arena Junkies...

As of right now you can use /dump to do any Blizzard-Protected function...move your character, jump, cast a spell only if there are diseases on the target, etc. The possibilities are near endless.




> Not sure if this was intended or not, but as I was updating the wowwiki Macro API, I noticed the new /dump command in Blizzard_DebugTools allows users to execute PROTECTED functions from the command line.
> 
> For instance, if I type the following:
> /script JumpOrAscendStart()
> 
> I get an error saying that I can't do that due to it is a function only available to the UI.
> 
> Now, if I type this:
> /dump JumpOrAscendStart()
> ...

----------


## Robske

Elite this

----------


## whitekidney

omg +4rep !

----------


## rljohn

This will probably be hotfixed soon.

----------


## Sychotix

probably. And it cant be kept quiet since i guess everyone knows of it. It was posted twice in 2 or 3 minutes. I'm guessing it was released somewhere and these two people are trying to share it.

----------


## Hunterplay

*Elite this (Filler)*

----------


## xxreaper008

cant find any use of this, im trying a bunch of API functions but no luck

----------


## deinvaddha

doenst work, get an UI error

----------


## Krillere

Already fixed? Fastest hotfix ever :O

----------


## Apoc

Heh. Gotta love Blizzard messing up their own protection.

Don't get too used to it.

----------


## xxreaper008

it works, just kinda useless

----------


## Professor Banana

I'm not very good at this stuff, but would there be some way to use this to speak in colors?

----------


## Nonominator

I don't know what you would use this for...?

----------


## Otsegolectric

> doenst work, get an UI error


same here. seems already fixed

----------


## Professor Banana

I'm using it right now... make sure you disable all your addons

----------


## Kazique

what fun can we do with this? except jump?

----------


## earthFlower

*works perfectly for me on eu servers.*

----------


## madsherlock

I think I heard somewhere that macros are server side. This means that Blizzard can see them.
If blizzard think of this as an exploit, which I am sure they do, I would not recommend putting this /dump command in any macros. Actually, I wouldn't recommend using it, because it will probably be very bannable to use this. I don't know though...

As to when they fix this, can they "hotfix" something like this? I mean, it's in game files, so they would have to change a lot, wouldn't they? Like.. with a patch or something.

----------


## eids

what does it do?XD

----------


## i2lurchi

> As to when they fix this, can they "hotfix" something like this? I mean, it's in game files, so they would have to change a lot, wouldn't they? Like.. with a patch or something.


I think they will release a client-side patch next week to fix this.

----------


## Esset

Some idiot have already reported this to blizzard.

Source: World of Warcraft - English (NA) Forums -> /dump command protected function execution

Edit: What fun commands can you use? I suck at macros xD.

----------


## Martin240

This works like a charm and protected functions are very good to automate processes like simple macro bots.

----------


## Oconline

This will be SO hotfixed! Shit!

----------


## Ssateneth

Damnit, now I wish I was fluent in scripting/macros. I can't even figure out how to automate heroic strike if rage > 50 because "if", "and", and "then" dont seem to work with /dump. Can someone help me please?

----------


## i2lurchi

would be REALLY nice to see some* working* macros (addons?!) using /dump

----------


## bind

World of Warcraft API - WoWWiki - Your guide to the World of Warcraft

----------


## Kubiatsu

This is sick, still working for me EU. Now to learn how to exploit it ^^

----------


## Ssateneth

> World of Warcraft API - WoWWiki - Your guide to the World of Warcraft


I've been looking at that for the past hour. I got the unitpower and castspellbyname thing down, I just can't figure out how to link the two because I get an error about 'if'



```
/dump if UnitPower("player") > 50 then CastSpellByName("Heroic Strike")
```

And error..



```
Dump: value=if UnitPower("player") > 50 then CastSpellByName("Heroic Strike")
Dump: ERROR: [string "return if UnitPower("player") > 50 then CastSpellByName("Heroic..."]:1: unexpected symbol near 'if'
```

It's like /dump doesn't allow conditions, or I'm doing something horribly wrong. Help me out please  :Smile:

----------


## Ventrix

Save your actual rage into a variable?


```
/dump local rage = UnitPower("player"); if (rage > 50) then CastSpellByName("Heroic Strike")
```

Would be my suggest

----------


## thickwick

still doesn't work. does anyone know the correct usage for if and then statements for api server side functions?

----------


## Ssateneth

> Save your actual rage into a variable?
> 
> 
> ```
> /dump local rage = UnitPower("player"); if (rage > 50) then CastSpellByName("Heroic Strike")
> ```
> 
> Would be my suggest


Sorry.. no go >.<



```
Dump: value=local rage = UnitPower("player"); if (rage > 50) then CastSpellByName("Heroic Strike")
Dump: ERROR: [string "return local rage = UnitPower("player"); if (rage > 50) then Ca..."]:1: unexpected symbol near 'local'
```

Can you tell I'm really hyper about this exploit? :X All I need is a working "If rage/energy/mana is this much, then do this ability" macro and I'm golden. would be able to modify for just about anything. Also trying to figure out an enhance shaman macro.. "if maelstrom weapon buff is at 5 stacks, cast Lightning Bolt"

----------


## 1337pyro

before bc (patch 2.03??) there were macros/addon that allowed full automated healing....
something like always heal people with most health deficit, taking the fitting cast and so on..
anyone knows where to find this old stuff?

----------


## Ssateneth

> before bc (patch 2.03??) there were macros/addon that allowed full automated healing....
> something like always heal people with most health deficit, taking the fitting cast and so on..
> anyone knows where to find this old stuff?


Nope.. Presumably you can write your own using the API list at World of Warcraft API - WoWWiki - Your guide to the World of Warcraft but you might end up having the same trouble as me. Also shameless bump. I'm really excited about abusing this exploit, but only if I can get it to do what I want.

----------


## Kubiatsu

Yeah I'm trying to piece together some macros, but I have absolutely no knowledge of the WoW API. Also I keep getting disconnected from flooding with the /dump command  :Frown: 
Found this command funny because It actually trys to perform it.

*GrantLevel("target",1)

* But I receive the error *'You were not referred by that player'* lol

----------


## Ssateneth

> Yeah I'm trying to piece together some macros, but I have absolutely no knowledge of the WoW API. Also I keep getting disconnected from flooding with the /dump command


Thank you, keep us informed. I'll be spamming F5 on this thread to see where it leads.

----------


## Itzelsnitch

Works for me, got all addons on ;o But blizzard actionbar UI

----------


## kyle2194

> Sorry.. no go >.<
> 
> 
> 
> ```
> Dump: value=local rage = UnitPower("player"); if (rage > 50) then CastSpellByName("Heroic Strike")
> Dump: ERROR: [string "return local rage = UnitPower("player"); if (rage > 50) then Ca..."]:1: unexpected symbol near 'local'
> ```
> 
> Can you tell I'm really hyper about this exploit? :X All I need is a working "If rage/energy/mana is this much, then do this ability" macro and I'm golden. would be able to modify for just about anything. Also trying to figure out an enhance shaman macro.. "if maelstrom weapon buff is at 5 stacks, cast Lightning Bolt"


This entry looks curious "RunScript("script") - Execute "script" as a block of Lua code. "

Would it be possible to have a /dump RunScript("") type syntax to execute script without the restrictions?

----------


## idusy

Way back when, you could make a macro to jump then logout and you'd get stuck in the air, and spamming the macro you could go as high as you wanted. It broke when they removed /jump, but now that it's possible... logging doesn't freeze you in the air anymore  :Frown:

----------


## idusy

/dump ForceLogout()
comes up with the permission error. Why?

----------


## Ssateneth

> This entry looks curious "RunScript("script") - Execute "script" as a block of Lua code. "
> 
> Would it be possible to have a /dump RunScript("") type syntax to execute script without the restrictions?


It looks interesting, but still no go. This is without storing current rage as a variable using this macro.



```
/dump RunScript("if UnitPower("player") > 50 then CastSpellByName("Heroic Strike")")

Dump: value=RunScript("if UnitPower("player") > 50 then CastSpellByName("Heroic Strike")")
Dump: ERROR: [string "return RunScript("if UnitPower("player") > 50 then CastSpellByN..."]:1: ')' expected near 'player'
```

This is with the variable.



```
/dump RunScript("local rage = UnitPower("player"); if (rage > 50) then CastSpellByName("Heroic Strike")")

Dump: value=RunScript("local rage = UnitPower("player"); if (rage > 50) then CastSpellByName("Heroic Strike")")
Dump: ERROR: [string "return RunScript("local rage = UnitPower("player"); if (rage > ..."]:1: ')' expected near 'player'
```

Both want end parenthesis by player.. hmm.. Kinda feels like it doesn't like ()'s inside the runscript.




> /dump ForceLogout()
> comes up with the permission error. Why?


Could be a server-side initiated effect, like when banning people's accounts while they are online, but don't know if that gives you "you have been disconnected from the server". I love all these theories that we're throwing out here, because I didn't start the thread asking questions. Such an annoying loophole to get around.

----------


## idusy

/dump Stuck() is the only other I've found that works so far (uses unstuck)

Well these all seem to work.




> PROTECTED CameraOrSelectOrMoveStart() - Begin "Left click" in the 3D world. (1.10 - Protected) 
> PROTECTED CameraOrSelectOrMoveStop([stickyFlag]) - End "Left click" in the 3D world. (1.10 - Protected) 
> FollowUnit("unit") - Follow an ally with the specified UnitID 
> PROTECTED JumpOrAscendStart() - Makes the player jump. 
> PROTECTED AscendStop() - Called when you release the jump key. 
> PROTECTED MoveBackwardStart - The player begins moving backward at the specified time. 
> PROTECTED MoveBackwardStop - The player stops moving backward at the specified time. 
> PROTECTED MoveForwardStart - The player begins moving forward at the specified time. 
> PROTECTED MoveForwardStop - The player stops moving forward at the specified time. 
> ...

----------


## henhouse

World of Warcraft API/Protected Functions - WoWWiki - Your guide to the World of Warcraft

I really don't think we're gonna get much out of this, guys...

----------


## idusy

```
/dump MoveForwardStart()
/dump JumpOrAscendStart()
/dump MoveForwardStop()
```

A perfect forward jump, could come in handy lol.

----------


## Ssateneth

> World of Warcraft API/Protected Functions - WoWWiki - Your guide to the World of Warcraft
> 
> I really don't think we're gonna get much out of this, guys...


Whatcha talking about? Get some hardware or software that spams abilities for you, make some macros with conditionals that cast spells only when the conditions are met, and you have automated play baby. That's why I'm so excited about this.

----------


## idusy

> Whatcha talking about? Get some hardware or software that spams abilities for you, make some macros with conditionals that cast spells only when the conditions are met, and you have automated play baby. That's why I'm so excited about this.


But that's too much work for such little pay off imo, as this will be patched ASAP.

----------


## Ssateneth

```
/dump RunScript("if UnitPower('player') > 50 then CastSpellByName('Heroic Strike')end")
```

Using 's in place of "s throws an error box "A macro script has been blocked from an action only available to the Blizzard UI" which leads me to believe RunScript inside /dump is not secure. Still hard at work on this though.



```
/dump RunScript("local rage = UnitPower('player'); if (rage < 50) then StopMacro()end")
/cast Heroic Strike
```

Confirmed, any protected functions inside a RunScript, even after a /dump, are still protected and will make the macro no longer work.

----------


## Blizzhaxer

The auto attacking command works too. 

PROTECTED AttackTarget() - Attacks the targetted unit.

----------


## jordansterk

Yeah.. the grant level thing would have been amazing if it worked.

----------


## Ssateneth

> The auto attacking command works too. 
> 
> PROTECTED AttackTarget() - Attacks the targetted unit.


I just use /startattack in one of my ability macros. As long as I spam it, I'll have something (relatively close, 20 yards or so.. doesn't matter cos I'm melee) I'm attacking.

----------


## idusy

> Yeah.. the grant level thing would have been amazing if it worked.


That's not even a protected command. It's completely functional. It's for recruit a friend, you sillys.

----------


## DankWoW

this is fun trying to find one that work thx for posting this

----------


## Edder

Nice find, there're no other useful commands than jump or move foreward?

----------


## mmhelm

This cant be patched for long. The code can be replicated and placed in another patch to be forced to run. bad job on blizzard's part giving us this forever.

----------


## huldran

Using it with all my addons.. Working as intended

----------


## Riokou

This is NOT useless. If we could access protected functions like this all the time, it would be possible to completely automate your character with an addon. An addon could move you and cast for you and do it intelligently. Obviously this will be fixed ASAP though.

----------


## beephoenix

> ```
> /dump RunScript("local rage = UnitPower('player'); if (rage < 50) then StopMacro()end")
> /cast Heroic Strike
> ```
> 
> Confirmed, any protected functions inside a RunScript, even after a /dump, are still protected and will make the macro no longer work.


You need to wrap the if...else... statement inside an anonymous function.

This code works:


```
/dump (function() if UnitPower('player') >= 40 then CastSpellByName('Death Coil') else CastSpellByName("Death Strike") end end)()
```

----------


## Galinda

> You need to wrap the if...else... statement inside an anonymous function.
> 
> This code works:
> 
> 
> ```
> /dump (function() if UnitPower('player') >= 40 then CastSpellByName('Death Coil') else CastSpellByName("Death Strike") end end)()
> ```


Second does indeed work, but it spams chat window. Any way to stop this?

----------


## Edder

> You need to wrap the if...else... statement inside an anonymous function.
> 
> This code works:
> 
> 
> ```
> /dump (function() if UnitPower('player') >= 40 then CastSpellByName('Death Coil') else CastSpellByName("Death Strike") end end)()
> ```


Nice works, thanks.

----------


## idusy

> Second does indeed work, but it spams chat window. Any way to stop this?


This is what the /dump function is designed to do, I doubt you can just turn it off.

----------


## Sazxo

Gogo
/dump SetMultiCastSpell

Have fun and make cookies

----------


## Ssateneth

OMG OMG OMG OMG OMG IT WORKSSSSSSSS. EXPLOIT BLOWN WIDE OPEN! Oh my god.

Now to abuse it to the max. Hello automated gameplay.

Edit: lol I got slam and heroic strike set to their own lower limits of rage for casting. Now how bout some love for casting a spell when looking for a debuff is present/not present? Such as..

If your rend debuff does not exist on target, cast rend

edit2: Another good automate macro would be... (Shaman) If you have 5 stacks of Maelstrom Weapon, cast Lightning Bolt, else do nothing. Nothing sucks more than doing it too early and losing out on autoattacks, do it too late and you lose out on maelstrom procs. Both of these ideas are assuming you are spamming the nuts out of that macro, either with an autoclicker, g15, xpadder, or something similar.

----------


## kyle2194

> OMG OMG OMG OMG OMG IT WORKSSSSSSSS. EXPLOIT BLOWN WIDE OPEN! Oh my god.
> 
> Now to abuse it to the max. Hello automated gameplay.
> 
> Edit: lol I got slam and heroic strike set to their own lower limits of rage for casting. Now how bout some love for casting a spell when looking for a debuff is present/not present? Such as..
> 
> If your rend debuff does not exist on target, cast rend
> 
> edit2: Another good automate macro would be... (Shaman) If you have 5 stacks of Maelstrom Weapon, cast Lightning Bolt, else do nothing. Nothing sucks more than doing it too early and losing out on autoattacks, do it too late and you lose out on maelstrom procs. Both of these ideas are assuming you are spamming the nuts out of that macro, either with an autoclicker, g15, xpadder, or something similar.


Would you mind posting your slam or heroic strike macro? A couple of us were trying to figure out how to use conditionals with the dump command, however we were unsuccessful.

----------


## MaiN

For you guys where it messes up, it's because you have an ACE addon installed. ACE-Console has a command called "/dump" which is used for debugging, but now Blizzard has one aswell in their interface files.

Anyways, this works just like an addon/script.
World of Warcraft API - WoWWiki - Your guide to the World of Warcraft

So to check for a present buff:


```
/dump if not UnitBuff("player", "Mark of the Wild) then CastSpellByName("Mark of the Wild", true) end
```

That would cast Mark of the Wild on yourself if you didn't have the buff already.
Anyways, a list of some functions you can play around with:
UnitHealth(unit) (unit is a string, for instance "target" or "player")
UnitPower(unit[,type]) (use "UnitPower("player", UnitPowerType("player")) to get the current power (mana, rage, energy etc.) of the player)
CastSpellByName(spellName[,onSelf]) to cast a spell by a spell name. Use CastSpellByName(spellName, true) to cast something on yourself.
(Oh and for targeting, go here: World of Warcraft API - WoWWiki - Your guide to the World of Warcraft)

Anyways, the only limit is that it can only be 255 characters max, and that it must be on one line (unless you create global variables and use multiple /dump's (which would be stupid))

EDIT: Hmm, ok, weird, I thought that was how you would use it, but it seems like /dump only dumps out a variable. (d'oh, of course it only does that) - in that case you can probably use normal macro conditions only (/dump [swimming] CastSpellByName("Aquatic Form", true))

EDIT 2: Ok, I found out how you can run a script and still have access to normal LUA.
You need to use the loadstring() function, like this:


```
/dump loadstring("if (not UnitBuff(\"player\", \"Arcane Intellect\")) then TargetUnit(\"player\") CastSpellByName(\"Arcane Intellect\") TargetLastTarget() end")()
```

That would cast Arcane Intellect on the player if it was'nt existing already and target the last target again. Tested and working 100%.

----------


## Legolas58

```
/dump if not UnitBuff("player", "Seal of Righteousness) then CastSpellByName("Seal of Righteousness", true) end

/dump (function() if UnitHealth('player') >= 30 then CastSpellByName('Holy Light') else TargetNearestEnemy() AttackTarget() end end) ()
```

that is where I am at for the top part i get error that symbol is too close to "if"

The second part has no errors except I need to figure out how to make it approach the. and when i have 79/79 health it still wants to heal

----------


## kyle2194

/dump loadstring() you are a god

----------


## MaiN

> ```
> /dump if not UnitBuff("player", "Seal of Righteousness) then CastSpellByName("Seal of Righteousness", true) end
> 
> /dump (function() if UnitHealth('player') >= 30 then CastSpellByName('Holy Light') else TargetNearestEnemy() AttackTarget() end end) ()
> ```
> 
> that is where I am at for the top part i get error that symbol is too close to "if"
> 
> The second part has no errors except I need to figure out how to make it approach the. and when i have 79/79 health it still wants to heal


>= means greater than or equal to. You want <= which is lesser than or equal to.

----------


## Legolas58

Oh yah my bad, thanks ha
Do you know how to make it approach the target?

----------


## kyle2194

Heres a simple proof of concept for dks. If your target has >1 hp, it will icy touch, else it will chains of ice. To test it out, go to the training dummys, if you target the heroic dummy, it will cast icy touch, any other it will cast chains.


```
/dump loadstring("if UnitHealth(\"Target\") > 1 then CastSpellByName(\"Icy Touch\") else CastSpellByName(\"Chains of Ice\") end")()
```

----------


## Gripen2

How about , Cast spell Kick if the target is casting a spell?

----------


## MaiN

> Oh yah my bad, thanks ha
> Do you know how to make it approach the target?


I do, but it's not as simple as you would think. (I've written a bot capable of doing it though (in LUA))

Basicly you need to create a frame (can be done dynamically with loadstring) and use OnUpdate as a 'hoax' for sleep. It's fairly complicated and really ugly. :P
Basicly you just set some vars to 'true', like "IsTurning", and check for it in OnUpdate.
Then, for instance if IsTurning is true you check if your facing is what you want it to be, and if it is you set IsTurning to false and stop turning.




> How about , Cast spell Kick if the target is casting a spell?


Use UnitCastingInfo("target").


```
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\") if interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
```

----------


## kyle2194

> Use UnitCastingInfo("target").
> 
> 
> ```
> /dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\") if interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
> ```


Well, actullay interruptAble returns true if it can not be interrupted.

----------


## MaiN

> Well, actullay interruptAble returns true if it can not be interrupted.


Ok, but it doesn't really matter.
You can just use "if not interruptAble", or just do it like this:


```
/dump loadstring("if UnitCastingInfo(\"target\") then SpellStopCasting() CastSpellByName(\"Kick\") end")()
```

----------


## kyle2194

> Ok, but it doesn't really matter.
> You can just use "if not interruptAble", or just do it like this:


Well i tried that, but that ends up kicking even if the target isnt casting.

----------


## Gripen2

I think it worked, But i got a "Addon error Ignore / Block". How can i prevent that except deactivating all addons?

----------


## MaiN

> I think it worked, But i got a "Addon error Ignore / Block". How can i prevent that except deactivating all addons?


Go into each of your addons folder, and under "libs" or something there should be a file called "AceConsole.lua" in a folder called AceConsole or something.
Search for 'dump' and replace it with something else, for instance 'acedump'.




> Well i tried that, but that ends up kicking even if the target isnt casting.


Yes, that's normal. That's because 'not nil' returns true, so if interruptAble is nil, it will do the if's body. Just use what I posted.

----------


## jackus

it works.. but what can u use it for? I can just press space and the same thing happen

----------


## NonMagical

> it works.. but what can u use it for? I can just press space and the same thing happen


Can you actually read the thread before making a comment like this? Thanks.

----------


## Kubiatsu

Thanks for the updates guys, looks like finally some people progressed with it  :Smile:

----------


## Pthaos

I've been looking at the one someone posted...




> /dump (function() if UnitPower('player') >= 40 then CastSpellByName('Death Coil') else CastSpellByName("Death Strike") end end)()


I can confirm this works, tried it on level 4 warlock, if I had over 200 mana, casting Immolate and under 200 casting Shadow Bolt. It's looking good.

However, I'm useless with coding macros. Is there any way to apply more than one specific condition to this? Such as Above 200 mana would cast Immolate, under 200 mana would cast Shadow Bolt but below 100 mana would cast Corruption. Just using random spells/mana costs as an example. Is that possible or would that require the creation of multiple macros? If so, how could you make sure it cast the one that was lowest mana requirement as stated by the macros?  :Smile:

----------


## lol553

Thanks, awesome find.

----------


## NonMagical

> I've been looking at the one someone posted...
> 
> 
> 
> I can confirm this works, tried it on level 4 warlock, if I had over 200 mana, casting Immolate and under 200 casting Shadow Bolt. It's looking good.
> 
> However, I'm useless with coding macros. Is there any way to apply more than one specific condition to this? Such as Above 200 mana would cast Immolate, under 200 mana would cast Shadow Bolt but below 100 mana would cast Corruption. Just using random spells/mana costs as an example. Is that possible or would that require the creation of multiple macros? If so, how could you make sure it cast the one that was lowest mana requirement as stated by the macros?





> /dump (function() if UnitPower('player') >= 200 then CastSpellByName('Immolate') else if UnitPower('player') < 100 then CastSpellByName('Corruption') else CastSpellByName('Shadow Bolt') end end)()


Give that a try? Just pulled that out of thin air I have no idea if that will work correctly or not. Not sure if you need single or double quotes..

----------


## Pthaos

I fiddled with it to fit the warlock, but no such luck, it just seems to take into account the Shadowbolt and Immolate part. I'm going to call it a night ^^ Thanks for trying.

----------


## Ssateneth

My variation is probably useless to other people because I use a foot pedal along with a program "Xpadder" and it'll basically spam keyboard keys in sequence very rapidly, so it acts as a priority + spam.



```
#showtooltip Charge
/startattack
/cast Sweeping Strikes
/cast Charge
/cast [combat] Bloodrage
/dump (function() if UnitPower('player') >= 75 then CastSpellByName('Heroic Strike') end end)()
```

That's my all in one 'start' macro for arms. Got sweeping strikes glyphed. This will ONLY cast heroic strike if your rage is over 75. Then I have regular buttons for execute, then overpower, then victory rush, then mortal strike (leveling right now so it hits kinda weak, not talented), then finally a macro'd slam as another rage dumper but only at 40 or more rage.


```
#showtooltip Slam
/dump (function() if UnitPower('player') >= 40 then CastSpellByName('Slam') end end)()
```

Hope this helps. Also, while I'm here, could someone here experienced with the /dump exploit help me with the scenarios above? That is casting a spell if one of your debuffs are not present on the target (Has to be YOUR debuff because some stack, such as moonfire, rend, devouring plague, etc). Also one to cast a spell if you have a certain buff on yourself, such as a reactive spell buff (Good example is Slam for Fury warriors, since if you cast if without the buff, it takes 1.5 sec but it has a short window of opportunity. Also Maelstrom weapon for Shamans, but that requires more work since it has to be at 5 stacks) Will +rep for working /dump macros. Thanks in advance.

----------


## kyle2194

This should work for slam: 

```
/dump loadstring("if (UnitBuff(\"player\", \"Slam!\")) then CastSpellByName(\"Slam\") end")()
```

 I cant figure out how to get maelstrom to work, i keep getting a nil value error.

Edit: If anyone wants to request macros ill be happy to make them, id like to earn myself some rep.

----------


## pyre

/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Mind Freeze\") end")()


Auto Interrupt for DKS (replace the mind freeze with your classes shit.

----------


## eSko

this interrupt or cast-spell-if macros are really cool, but we need to figure out how to use them with addons... yeah, they are cool and useful, but addons > macros

btw, is it possible to make dump command without output? i know that dump without output is useless, but for our purpose it would be better, because it won't flood your chat windows...

----------


## Ssateneth

```
/dump loadstring("if(UnitDebuff('target','Rend'))==exists then CastSpellByName('Rend')end")()
```

Dump macro to apply Rend only when it does not exist, but I do not know if this works in party/raid with multiple rends. It would need to check if any of the rends put up belong to the player first (or something like that). I got another point of rep to give out today, so if you can fit a dump macro into 255 chars with that check along with the original 'cast rend only if it does not exist on target' then +1rep to you.

Edit: Can you tell I'm having fun with /dump yet? I'd do something like this with my paladin but there are no good reactive abilities to use with ret or prot. It's basically priority spam, so I cant think of anything useful. I think I will try this with a moonkin though to (re)apply dots and spam a spell (say wrath) and immediately switch to the other primary spell (starfire in this case) when eclipse procs.

----------


## MaiN

> ```
> /dump loadstring("if(UnitDebuff('target','Rend'))==exists then CastSpellByName('Rend')end")()
> ```
> 
> Dump macro to apply Rend only when it does not exist, but I do not know if this works in party/raid with multiple rends. It would need to check if any of the rends put up belong to the player first (or something like that). I got another point of rep to give out today, so if you can fit a dump macro into 255 chars with that check along with the original 'cast rend only if it does not exist on target' then +1rep to you.
> 
> Edit: Can you tell I'm having fun with /dump yet? I'd do something like this with my paladin but there are no good reactive abilities to use with ret or prot. It's basically priority spam, so I cant think of anything useful. I think I will try this with a moonkin though to (re)apply dots and spam a spell (say wrath) and immediately switch to the other primary spell (starfire in this case) when eclipse procs.



/dump loadstring("local _,_,_,_,_,_,_,caster,_ = UnitDebuff(\"target\", \"Rend\")if(caster~=\"player\")then CastSpellByName(\"Rend\")end")()

That will cast rend on the target if it isn't already applied by the player.

----------


## Mathmech

This isn't fixed yet? :O
They even had restarts to apply hotfixes, and they didn't fix this?

----------


## jackus

this is an epix counterspell.. 

only works when someone is casting a spell

/dump loadstring("if UnitCastingInfo(\"target\") then SpellStopCasting() CastSpellByName(\"Counterspell\") end")()

----------


## Loteeh

the end of fake cast silences?  :Smile:

----------


## atogz

> btw, is it possible to make dump command without output? i know that dump without output is useless, but for our purpose it would be better, because it won't flood your chat windows...


make new chat windom and apply same settings as "General", that should work atleast works for me

----------


## eSko

> This isn't fixed yet? :O
> They even had restarts to apply hotfixes, and they didn't fix this?


omg they can't fix this server-side... they have to upate our clients... have you downloaded any new version of wow? no.. so why are you asking stupid questions?

----------


## ViB

Getting this error:

[13:30:34] Dump: value=loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
[13:30:34] empty result

----------


## eSko

> make new chat windom and apply same settings as "General", that should work atleast works for me


yeah I've had the same idea... now I am trying to make my new chat window as a default, but still output /dump into original, now unused General window  :Roll Eyes (Sarcastic):

----------


## Ssateneth

> Getting this error:
> 
> [13:30:34] Dump: value=loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
> [13:30:34] empty result


This is not an error, this is simply what dump does. Switch to a different chat window and you won't see it. This is normal.




> /dump loadstring("local _,_,_,_,_,_,_,caster,_ = UnitDebuff(\"target\", \"Rend\")if(caster~=\"player\")then CastSpellByName(\"Rend\")end")()
> 
> That will cast rend on the target if it isn't already applied by the player.


Thank you. Rep was given. I'm tapped out for rep today but I will give another rep point once I get the ability to rep again. Another request, this is for moonkins. The aim is a somewhat spammable button but you will need to switch buttons sometime while you have the buff. The purpose is so you get the most out of your eclipse by casting the other nuke as soon as you get the eclipse buff. This will need 2 seperate macros. Both buffs have the same name but different effects. Here we go.

If you have Eclipse (buff ID 48518, increased crit of starfire by 30%), cast Starfire, else cast Wrath.
If you have Eclipse (buff ID 48517, increased damage of wrath by 30%), cast Wrath, else cast Starfire.

Having trouble because I can't seem to figure out how to use a buff ID instead of the name.

Also, here is 2 spammable macros that autocast insect swarm and moonfire only if the current target does not have a copy of these debuffs not cast by you. Shamlessly copy/pasted from a previous post in this thread :P DPS stays high usually if you try to keep your dots on the target.



```
#showtooltip Insect Swarm
/dump loadstring("local _,_,_,_,_,_,_,caster,_ = UnitDebuff(\"target\", \"Insect Swarm\")if(caster~=\"player\")then CastSpellByName(\"Insect Swarm\")end")()
```



```
#showtooltip Moonfire
/dump loadstring("local _,_,_,_,_,_,_,caster,_ = UnitDebuff(\"target\", \"Moonfire\")if(caster~=\"player\")then CastSpellByName(\"Moonfire\")end")()
```

----------


## Mathmech

> omg they can't fix this server-side... they have to upate our clients... have you downloaded any new version of wow? no.. so why are you asking stupid questions?


Jeez, talk about raging.
I was just amazed that they hasn't fixed this yet.

----------


## ViB

> This is not an error, this is simply what dump does. Switch to a different chat window and you won't see it. This is normal.


But it didn't interrupt either.

I heard you should play without addons for this to work? or atleast some block it / make it not work?

----------


## Ssateneth

> But it didn't interrupt either.
> 
> I heard you should play without addons for this to work? or atleast some block it / make it not work?


It was stated that ACE addons interfere with /dump. If you get an error box in the middle of the screen about some addon with the choice to disable or ignore (whatever the 2nd option is) then click the disable button. you'll probably have to do this several times before the error box doesn't come up again. If you don't want to hassle with that, just disable all your addons.

In other news, I don't really play a rogue, so I can't test the /dump macro lol

----------


## eSko

just an idea, but wouldn't it help if somebody creates simple application which would scan ALL (lua/toc/etc) files in the AddOns folder and replace every found "/dump" with "/dmp" so it won't collide anymore?

----------


## i2lurchi

> just an idea, but wouldn't it help if somebody creates simple application which would scan ALL (lua/toc/etc) files in the AddOns folder and replace every found "/dump" with "/dmp" so it won't collide anymore?


that would be soooooo awesome!
trying to create a 1click healing macro  :Smile:

----------


## Kasiosis

I think the moonkin macro would be insanely good and thanks for the insect swarm one
+rep

----------


## Montti

```
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Mind Freeze\") end")()
```

Doesen't work on channeled spells for some reason. Penance, Drain Life, Arcane Missiles etc.

----------


## thickwick

Ok, so the nest one id like to see made is

-Casting shadow word death when pollymorph is being cast at you

----------


## ViB

> Ok, so the nest one id like to see made is
> 
> -Casting shadow word death when pollymorph is being cast at you


Keep in mind that he has to targeting you when casting poly and you have to target him, maybe focus works as well.
Also, he can target you while he focus sheeps your party member or something like that.

----------


## thickwick

yes i know this. but as far as i can tell this is reading server side so there must be a way to simply look for any target within X range casting spell "pollymorph" at you server side

----------


## ViB

Hmm no idea about that, would be great if it's like that.

----------


## Quari

For eclipse thing, you have to use 
h x x p : / / w w w.wowwiki.com/HOWTO:_Identify_Buffs_Using_Textures



```
/dump loadstring("local id=id or 1 while true do local name,_,texture,_,_,_,_ = UnitBuff(\"player\",id) if not name then break end if string.match(texture,\"Spell_Nature_Thorns\") then id=id-1 if id==0 then CastSpellByName(\"Wrath\")break end end end") ()
```

 will cast Wrath if you have thorns.

Change Spell_Nature_Thorns to ability_druid_eclipseorange or ability_druid_eclipse but you can't do it with a macro...

(Sry for bad english)

----------


## mmhelm

Wow, I told you all it could not be fixed for a reason. 

This is an exploit forever.

Filebeam - Beam up that File Scottie!

Patch contains a backup of the debug_tools addon that contains this script. If taken out during a patch a simple update of the TOC file and possibly a rename of the addon's core files will always keep this exploit running.

There? can we stop spamming "OMG THIS ISNT FIXED LOLOLOL?"

----------


## reagansmash94

i just made a macro to Cast Life Tap if my warlock is above a certain amount of health and to not do it if below certain amount. The macro is: /dump loadstring("if UnitHealth(\"Player\") > 6000 then CastSpellByName(\"Life Tap\") end")()

I am trying to make a macro for a pally to cast Falsh of Light if target is below certain amount of health. The macro would be.

/dump loadstring("if UnitHealth(\"Target\") < 30000 then CastSpellByName(\"Flash of Light\") end")()

If anyone knows how to load healths as a percentage it would make this a hell of a lot easier.

----------


## Redos

Hello, I usually speak french but I need some help.
I've try to do all my Arm warrior dps cycle in one button, it works perfectly but ... I want to add the Sunder Armor but have probleme with the detection of stacks.

Macro 1: "1"
/dump loadstring("if (not UnitDebuff(\"target\", \"Rend\")) then CastSpellByName(\"Rend(Rank 10)\") end")()
/dump loadstring("if (UnitBuff(\"player\", \"Taste for Blood\")) then RunMacro(2) end")()
/dump RunMacro(4)

Macro 2: "2"
/cast Overpower

Macro 3: "3"
/cast Execute(Rank 9)

Macro 4: "4"
/dump loadstring("if (UnitBuff(\"player\", \"Sudden Death\")) then RunMacro(3) else CastSpellByName(\"Mortal Strike(Rank  :Cool: \") end")()
/dump RunMacro(5)

Macro 5: "5"
/dump loadstring("if UnitPower(\"Player\") > 90 then CastSpellByName(\"Heroic Strike(Rank 13)\") end")()
/dump loadstring("if UnitPower(\"Player\") < 15 then CastSpellByName(\"Bloodrage\") end")()

So, I need your help for the 6th macro, wich check the amount of Sunder armor and if count < 5 then Sunder armor.

----------


## lolsix

can someone make one for mages that does fireball untill you gain the hot streak buff then it casts pyroblast?

----------


## Redos

*I have found:

Macro 6: "6"
/dump loadstring("local _,_,_,count,_,_,_,_,_ = UnitDebuff(\"target\", \"Sunder Armor\")if(count~=\"5\")then CastSpellByName(\"Sunder Armor\")end")()* 

*Edit : Doesn't Work !*

Macro for Mage:

/dump loadstring("if (UnitBuff(\"player\", \"Hot Streak\")) then SpellStopCasting() CastSpellByName(\"Pyroblast(Rank 12)\") end")()

Just add that in a macro like:

#showtooltips Frostfire Bolt
/cast Frostfire Bolt(rank 2)
/dump loadstring("if (UnitBuff(\"player\", \"Hot Streak\")) then SpellStopCasting() CastSpellByName(\"Pyroblast(Rank 12)\") end")()

----------


## d0ct0r

Hey guys what about Totem Stomper macro?  :Smile:

----------


## xipwnedux

I'll +rep anyone who can make me a /dump that i can add to my abilities in a macro that applies Plague Strike, then Icy Touch, if they arent up, then cast the ability in the macro.

Roatation atm is: (PS+IT, they aren't up) -> DS -> HSx2 -> DS -> HSx4

That's basically it as far as i can remember, for whatever its worth..


EDIT: Also it would be cool to have a runic power dump on death coil to add to macros  :Big Grin:

----------


## Lexodia

this is brilliant for arena aswell, a kick masher basically
if target is casting use kick
but just 1 thing:

by using this script i use shield slam if the target isnt casting and stun when it is
(naturally this is ideal for rogues and such but...)
anyhow my problem is, if the target is casting it'll still attempt to use the hammer
i'll try and see if i can find a way around it by adding a cooldown check and will edit if i succeed, otherwise feel free to help me out here

the macro:

/dump loadstring("if UnitCastingInfo(\"target\") then SpellStopCasting() CastSpellByName(\"Hammer of Justice\") else CastSpellByName(\"Shield of Righteousness\") end")()

----------


## huurka

> I'll +rep anyone who can make me a /dump that i can add to my abilities in a macro that applies Plague Strike, then Icy Touch, if they arent up, then cast the ability in the macro.
> 
> Roatation atm is: (PS+IT, they aren't up) -> DS -> HSx2 -> DS -> HSx4
> 
> That's basically it as far as i can remember, for whatever its worth..
> 
> 
> EDIT: Also it would be cool to have a runic power dump on death coil to add to macros


Just a little clarification on the abbreviatons.
PS = Plague Strike. The disease it gives is named Blood Plague.
IT = Icy Touch. The disease it gives is named Frost Fever
DS = Death Strike
HS = Heart Strike

:wave:

----------


## discobob

just thought i would let everyone know, to interrupt channeled spells (pennance, missiles, etc) this is the code.


/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitChannelInfo(\"target\"); if UnitChannelInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Counterspell\") end")()

----------


## czraptor

anyone able to find the /dump in ace3 addons, I have searched all the folders under the libs and can't find one to replace.

----------


## greenthing

> I'll +rep anyone who can make me a /dump that i can add to my abilities in a macro that applies Plague Strike, then Icy Touch, if they arent up, then cast the ability in the macro.
> 
> Roatation atm is: (PS+IT, they aren't up) -> DS -> HSx2 -> DS -> HSx4
> 
> That's basically it as far as i can remember, for whatever its worth..
> 
> 
> EDIT: Also it would be cool to have a runic power dump on death coil to add to macros


I have been playing with this myself for 5 minutes (immidiatly after checking here basically) and made a very simple rotation for a DK that I just started.

1:
/dump loadstring("if (not UnitDebuff(\"target\", \"Frost Fever\")) then CastSpellByName(\"Icy Touch(Rank 1)\") end")()
/dump loadstring("if (UnitBuff(\"player\", \"Blood Plague\")) then RunMacro(2) end")()

/dump RunMacro(4)


2:
/cast Plague Strike

3:
/dump loadstring("if UnitPower(\"Player\") > 60 then CastSpellByName(\"Death Coil\") end")()

/dump RunMacro(5)

4:
/dump loadstring("if (UnitBuff(\"player\", \"Blood Presence\")) then RunMacro(3) else CastSpellByName(\"Blood Presence\") end")()

5:
/cast Scourge Strike

(requires 5 macros named 1/2/3/4/5)
1st checks if frost fever is up, else it casts icy touch, then it checks if blood plague is up else it casts plague strike, it also checks if blood presence is up, else it changes to it, it casts death coil with 60 or more runic power & at last it does scourge strike.

You should be able to create your own with this.

----------


## satuross

/dump loadstring("if (UnitBuff(\"player\", \"Hot Streak\")) then SpellStopCasting() CastSpellByName(\"Pyroblast(Rank 12)\") end

How can we change "hot strak" for maelstrom weapon 5 charges? :x

----------


## i2lurchi

this is a single button spam macro for resto healing

Warning: You might have to disable ALL your addons and your Chat will be spammed witch dump messages!

you can just spam one key and the macros will keep Lifebloom, Rejuvenation, Regrowth and Nourish on your target, it also uses Innervate!

*Your have to make 5 Macros witch exact the same macro names I use!*
*
UPDATE: please update macro 4 and macro HEAL!
UPDATE: Innervate is FIXED!
UPDATE: fixed all macros, RENAME all your macros!*



*--- DH1 ---* you have to create a macro witch the name *DH1*



```
/dump loadstring("CastSpellByName(\"Lifebloom\")") ()
```

*--- DH2 ---*



```
/dump loadstring("_,_,_,_,_,_,_,s,_=UnitBuff(\"target\",\"Rejuvenation\"); if (s~=\"player\") then CastSpellByName(\"Rejuvenation\") else RunMacro(\"DH3\") end") ()
```

*---DH3 ---*



```
/dump loadstring("local _,_,_,_,_,_,_,o,_=UnitBuff(\"target\",\"Regrowth\"); if (o~=\"player\") then CastSpellByName(\"Regrowth\") else CastSpellByName(\"Nourish\") end") ()
```

*---DH4 ---*



```
/dump loadstring("local _,_,_,c,_,_,_,_,_=UnitBuff(\"target\",\"Lifebloom\"); if (c~=3) then RunMacro(\"DH1\") else RunMacro(\"DH2\") end") ()
```

*---DruidHEAL---*



```
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Innervate\") if ((UnitPower(\"player\") < 9000) and (d == 0)) then TargetUnit(\"player\") CastSpellByName(\"Innervate\") TargetLastTarget()  else RunMacro(\"DH4\") end") ()
```

--------------------------------

now just target someone and spam the HEAL macro! 
have fun


(sry for gramar/spelling)


edit: see updated macros at page 16

----------


## greenthing

Actually, how would I change this: 
/dump loadstring("if UnitPower(\"Player\") > 60 then CastSpellByName(\"Death Coil\") end")()
into casting Gargoyle if it's ready? and is it possible to check if a blood rune is up?

----------


## i2lurchi

> /dump loadstring("if (UnitBuff(\"player\", \"Hot Streak\")) then SpellStopCasting() CastSpellByName(\"Pyroblast(Rank 12)\") end
> 
> How can we change "hot streak" for maelstrom weapon 5 charges? :x




```
/dump loadstring("local _,_,_,c,_,_,_,_,_=UnitBuff(\"player\",\"Maelstrom Weapon\"); if (c=5) then CastSpellByName(\"Lightning Bolt\") end") ()
```

didn't test it, but it should work

----------


## Lexodia

having trouble getting macro's to recognise cooldowns... if i can get that to work then this becomes very usable
if anyone knows...

----------


## xipwnedux

> I have been playing with this myself for 5 minutes (immidiatly after checking here basically) and made a very simple rotation for a DK that I just started.
> 
> 1:
> /dump loadstring("if (not UnitDebuff(\"target\", \"Frost Fever\")) then CastSpellByName(\"Icy Touch(Rank 1)\") end")()
> /dump loadstring("if (UnitBuff(\"player\", \"Blood Plague\")) then RunMacro(2) end")()
> 
> /dump RunMacro(4)
> 
> 
> ...



Thanks but I use Heart Strike AND Death Strike. Is there a way to make it cast both?
Not to mention casting Heart Strike when I have Death Runes up.

----------


## i2lurchi

> having trouble getting macro's to recognise cooldowns... if i can get that to work then this becomes very usable
> if anyone knows...




```
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Innervate\") if ((UnitPower(\"player\") < 10000) and (d == 0)) then CastSpellByName(\"Innervate\") end") ()
```

this works for innervate on low mana and without CD

does anybody know how to change that macro to cast Innervate on me?


```
CastSpellByName(\"Innervate\")
```

is there any way to define the target of "CastSpellByName"? thanks

----------


## Iaccidentallytwink

THERE WAS A COMMAND THAT WORKED ON THE 3.0.8 PTR THAT WAS ABLE TO GET THE PERSONS USERNAME IN CONSOLE MODE? +REP TO FIRST PERSON TO POST THE COMMAND AND CONFIRM IF IT WORKS.

There was also one that GOT THE USERS INFO, but there was no way to display the info. MAYBE THE DUMP WILL POST IT? +REP to whoever can find that command.

----------


## Samzonx

curious i have a 

/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\") if interruptAble then SpellStopCasting() CastSpellByName(\"Wind Shear\") end")()

macro that i copied from your kick macro Main, and i just get an empty result, am i doing somthing wrong?

----------


## Lexodia

> ```
> /dump loadstring("local _, d, _ = GetSpellCooldown(\"Innervate\") if ((UnitPower(\"player\") < 10000) and (d == 0)) then CastSpellByName(\"Innervate\") end") ()
> ```
> 
> this works for innervate on low mana and without CD
> 
> does anybody know how to change that macro to cast Innervate on me?
> 
> 
> ...


TY, FINALLY, +Rep
ive been at this for long enough and ive finally completed my script



```
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Hammer of Justice\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"Hammer of Justice\") else CastSpellByName(\"Shield of Righteousness\") end")()
```

what this will do is it will first check if the target is casting
then it will check whether hammer of justice (can be replaced by kick, pummel, counterspell, all of it) is on cooldown or not
if it isn't on cooldown, and the target is casting, it'll use hammer of justice
if the target isnt casting, or if he IS casting but hammer of justice is on cooldown, then it will use shield of righteousness
this is absolutely brilliant for kick, pummel, all the sort that isn't on a gcd
generally the idea is to copy this macro 5x over, with mortal strike with whirlwind, etc, then adding #showtooltip mortal strike and whirlwind for it
then, while using it as normal abilities, you can spam them, and by 'accident' you'll be able to pummel / kick / shock the target whenever he's casting

so far my only downside is that it doesnt work for channeled spells, and in arena this is especially good for penance, to interrupt it in the first 0.2 seconds but atm u'll have to use the other macro for it

I
LOVE
/DUMP

----------


## deadca7

> I have been playing with myself for 5 minutes (immidiatly after checking here basically) and made a very simple rotation for a DK that I just started.
> 
> 1:
> /dump loadstring("if (not UnitDebuff(\"target\", \"Frost Fever\")) then CastSpellByName(\"Icy Touch(Rank 1)\") end")()
> /dump loadstring("if (UnitBuff(\"player\", \"Blood Plague\")) then RunMacro(2) end")()
> 
> /dump RunMacro(4)
> 
> 
> ...


How can i add [Blood Strike] into this ?

----------


## Samzonx

nm i changed around your macro lex, it works perfectley!

also can i get banned or action taken against my account for using this?  :Smile:

----------


## greenthing

> How can i add [Blood Strike] into this ?


I use this:
/dump loadstring("if UnitHealth(\"Player\") < 1000 then CastSpellByName(\"Death Strike\") else 
/castsequence Scourge Strike, Blood Strike

So in it's last phase it will check if the DK's HP is below 1000 hp (or whatever you want it to be then), if so it does Death Strike else it will do Scourge Strike and the next time Blood Strike so both set of runes are always used.

I also added this:
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Summon Gargoyle\") if ((UnitPower(\"player\") > 59) and (d == 0)) then CastSpellByName(\"Summon Gargoyle\") end") ()
/dump RunMacro(6)

between blood presence & deathcoil, so it first does gargoyle (if ready/not on cooldown) and afterwards the death coil.

Though, anyone who could help me how to get Bone Shield working?
Basically I want it to check if it is off-cooldown and if so check if it's already up and else it casts it.

----------


## Lexodia

i suppose its a dump exploit so i'd say yes, but that i cant really say for sure

----------


## greenthing

It is indeed possible that Blizzard gives punishments later on, but in that case expect the standard 24h ban procedure.

----------


## greenthing

> Thanks but I use Heart Strike AND Death Strike. Is there a way to make it cast both?
> Not to mention casting Heart Strike when I have Death Runes up.


Still hoping to find a way to read the available runes, otherwhise there is always the option of writing a long rotation, but castseq. sucks compared to this  :Frown: . Hopefully someone can help with that (= rune detection).

----------


## Samzonx

thanks for the information guys - i do have one further question though, this is just simple macro scripts.. is there anyway to have a /cast function that has a minimum range (specifically a frostshock i can click that ONLY is cast if the target is beyond 15 yards? (id use a if else - flame shock command or w/e)

----------


## czraptor

just checking again if anyone knows where i can change the /dump in ace3, i looked in every ace folder in each addon and i can't find it. i changed my ace2 ones since they did have it in them.

----------


## madroxic

One button destro rotation


Ok Basically this macro will cast life tap when you have less than 2000 mp else cast COE if its not on the target else cast immolate if you don't have your immolate up else cast conflagrate if not on cd else cast chaos bolt if not on cd else cast incinerate

You will need 6 macro's to do this

1:



```
/dump loadstring("if(UnitDebuff('target','Curse of the Elements'))==exists then CastSpellByName('Curse of the Elements')else RunMacro(2) end") ()
```

2:



```
/dump loadstring("local _,_,_,_,_,_,_,caster,_ = UnitDebuff(\"target\", \"immolate\")if(caster~=\"player\")then CastSpellByName(\"immolate\")else RunMacro(3) end") ()
```

3:



```
/dump loadstring("local _, d, _ = GetSpellCooldown(\"conflagrate\") if (d == 0) then CastSpellByName(\"conflagrate\") else RunMacro(4) end") ()
```

4:

/

```
dump loadstring("local _, d, _ = GetSpellCooldown(\"chaos bolt\") if (d == 0) then CastSpellByName(\"chaos bolt\") else RunMacro(5) end") ()
```

5:


```
/cast incinerate
```

6:



```
/dump loadstring("if ((UnitPower(\"player\") < 4000)) then RunMacro(7) else RunMacro(1) end") ()
```

7:



```
/dump loadstring("if UnitHealth(\"Player\") > 15000 then CastSpellByName(\"Life Tap\") else RunMacro(\"1\") end") ()
```





6 is the spammable macro. Only problems I've had with this is that if you don't wait for the macro to recognize the debuffs in macros 1 and 2 it will run them twice. Basically when your immolate falls off and the macro begins to cast it you must wait a moment before you click it again otherwise you'll double cast immolate.

EDIT: Looking for help on macro 6... I'd really like to have a HP>15000 in there if possible... Anyone think they could tell me how to throw it in. I tried but failed

EDIT: Added functionality to Life tap... Now will only life tap >15000 hp (at the cost of another macro) Still have ideas on how to improve this but don't have all the right knowledge... I'd like to add a conditional IsUsableSpell("spellname") to "1" but haven't figured out how to make it work.

----------


## Iaccidentallytwink

> Wow, I told you all it could not be fixed for a reason. 
> 
> This is an exploit forever.
> 
> Filebeam - Beam up that File Scottie!
> 
> Patch contains a backup of the debug_tools addon that contains this script. If taken out during a patch a simple update of the TOC file and possibly a rename of the addon's core files will always keep this exploit running.
> 
> There? can we stop spamming "OMG THIS ISNT FIXED LOLOLOL?"


I'm pretty retarded when it comes to patching/unpatching exploits such as this, but I understand why this can't be fully removed once backed up. I got excited when I saw this post. Could you or someone explain how one would go about unpatching the exploit after it's removed?

----------


## reagansmash94

> EDIT: Looking for help on macro 6... I'd really like to have a HP>15000 in there if possible... Anyone think they could tell me how to throw it in. I tried but failed


I use this right here:

/dump loadstring("if UnitHealth(\"Player\") > 15000 then CastSpellByName(\"Life Tap\") end")()

That will cast Life Tap only if you are above 15000 health. You can change the amount to a desired level of health.

And if anyone knows how to load health as a percentage that would be fantastic

----------


## madroxic

> I use this right here:
> 
> /dump loadstring("if UnitHealth(\"Player\") > 15000 then CastSpellByName(\"Life Tap\") end")()
> 
> That will cast Life Tap only if you are above 15000 health. You can change the amount to a desired level of health.
> 
> And if anyone knows how to load health as a percentage that would be fantastic


yea I kinda meant <2000mp and >15000hp but i just chained it into 2 macro's. So all is well.

----------


## dirdir207

I cant think of a single thing that would help a resto druid in pvp with this ;(.

----------


## Avionss

ive got both the kick casting and kick channel bound to every single skill lmfao, this is pathetic, but so much fun

also, you can fake cast these macro's if you cast and then move forward/cancel is instantly, but it doesnt allways work.

one other thing, is would it be possible for:

/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()

to be changed to do your focus target as well? is it as simple as changing:

UnitCastingInfo(\"target\")

to

UnitCastingInfo(\"focus\")

i would test it but there is noone online at this time in the morning

----------


## Malmis

Thanks alot for the heads up. This should be interesting...

----------


## kyle2194

> ive got both the kick casting and kick channel bound to every single skill lmfao, this is pathetic, but so much fun
> 
> also, you can fake cast these macro's if you cast and then move forward/cancel is instantly, but it doesnt allways work.
> 
> one other thing, is would it be possible for:
> 
> /dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
> 
> to be changed to do your focus target as well? is it as simple as changing:
> ...


I orginally threw these macros on arenajunkies and started that shitstorm, but you would change both targets to focus, but also change CastSpellByName(\"Kick\") to CastSpellByName(\"Kick\",\"focus\")

----------


## Avionss

/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"focus\"); if UnitCastingInfo(\"focus\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\",\"focus\") end")()


being the end result?

and yeh, i just came from the crazy threads on arenajunkies, mods are trying to delete every post with the macro lmao

----------


## Avionss

For those interested, heres my spammable Mutilate macro that kicks your target, or focus as soon as they cast OR channel a spell.

Its 5 macro's alltogether, obv change the name of trinkets/whatever to suit you.



```
#show Mutilate
/dump RunMacro(1)
/dump RunMacro(2)
/dump RunMacro(3)
/dump RunMacro(4)
/startattack
/use Platinum Disks of Battle
/cast Mutilate
```

Thats the one you spam, then you have to make the following macro's and name them 1, 2, 3 and 4.

*1*



```
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
```

*2*



```
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitChannelInfo(\"target\"); if UnitChannelInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\") end")()
```

*3*



```
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"focus\"); if UnitCastingInfo(\"focus\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\",\"focus\") end")()
```

*4*



```
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitChannelInfo(\"focus\"); if UnitChannelInfo(\"focus\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Kick\",\"focus\") end")()
```


Now, my guess is i have made this more complicated than it is, so if anyway has any improvments/corrections post them  :Smile:  

Also: be warned, i havnt tested this properly yet, it might not work :<

----------


## Facist

I'm having a bit of trouble here...

I've changed all the AceConsole-2.0.lua dump commands to another command (acedump). AceConsole-3.0.lua doesn't have the word 'dump' in it. My addons are preventing this from working. 

Before changing the Ace files, I tried the macro and the chat box displayed 'nil' each time I used it. After changing the Ace files, it displays the standard /dump laksjd in the chat log, like normal. I'm curious why Ace is still blocking this if all indications show that it is not blocking it.

Any other addon solutions I should be aware of?

----------


## Avionss

not really sure, have you tried disabling everything, and seeing if it works then?

----------


## Facist

> not really sure, have you tried disabling everything, and seeing if it works then?


Yes, and it works flawlessly.

Addons that are a problem:
Recount
SCT
Cartographer
Elkanos Buff Bars
Omen3
Gladius

and, save a few, that is all I went down to.

Typing /acedump in chat gives the same 'nil' it gave before.
Typing /dump inc hat gives Dump: value= / empty result. As it should be doing...

----------


## Avionss

strange, i have sct, recount, elkanos buff bars and gladius enabled, the only addons that blocked it for me were chatter, outfitter and quartz.

i changed the dump command for quartz so i have that enabled too, but i couldlnt find it in chatter or outfitter, but their not that important so ive just disabled them for now.

----------


## Facist

> strange, i have sct, recount, elkanos buff bars and gladius enabled, the only addons that blocked it for me were chatter, outfitter and quartz.
> 
> i changed the dump command for quartz so i have that enabled too, but i couldlnt find it in chatter or outfitter, but their not that important so ive just disabled them for now.


I'll look for the dump command in quartz, but if it was just quartz, it wouldn't be giving me an error for the others. The first addon that gives me an error is Gladius. I'm not sure how the addons are listed, but it goes Gladius, Omen3, then Cartographer.

edit: If you could assist, how did you fix Quartz? Also, are your addons up to date?

----------


## Avionss

Interface>Addons>Quartz>libs>AceConsole-2.0

then i just opened AceConsole-2.0.lua with notepad and ctrl+f'd and searched for "dump", and then changed it to "dmp"

----------


## Facist

> Interface>Addons>Quartz>libs>AceAddon-2.0
> 
> then i just opened AceAddon-2.0.lua with notepad and ctrl+f'd and searched for "dump", and then changed it to "dmp"


Oh, I figured it was something unrelated to Ace. I'm confused what other than Ace is giving me errors  :Frown: .

----------


## Avionss

> Oh, I figured it was something unrelated to Ace. I'm confused what other than Ace is giving me errors .


carefull, you saw my post before i edited it, its supposed to be AceConsole, not AceAddon folder, i wrote the wrong thing >.<

----------


## Facist

> carefull, you saw my post before i edited it, its supposed to be AceConsole, not AceAddon folder, i wrote the wrong thing >.<


Yes. I've altered all the Ace-Console files to remove 'dump' from the lua. If I didn't, I wouldn't be able to get the normal chat message of /dump ..., but rather I'd get 'nil'

Do you think Ace Library 3.0 would be the problem with this, seeing as there is no 'dump' command with Ace 3? I'm finding that SCT, Recound, and Omen use 3.0, yet they work for you.

----------


## Avionss

i have no idea, i dont really know enough about this to help  :Smile:

----------


## Facist

> i have no idea, i dont really know enough about this to help


Thanks for trying  :Smile: . I'm going to try updating all my addons to see if that does anything ><.

edit: Nothing.

----------


## Syncness

elite this already

----------


## Avionss

seeing as retards are posing these macro's on the official wow forums, i doubt you will get much from hiding it

----------


## riskymilk

I'm not too good at this coding stuff, tried researching it via the various wowiki links posted and such but....

Anyone got a /dump for blinding immediately once the target has trinketed?

----------


## Facist

> seeing as retards are posing these macro's on the official wow forums, i doubt you will get much from hiding it


Avion, if you aren't busy atm...

Can you give me a list of your addons? Naturally, a screenshot will suffice.

----------


## Avionss

gimmie a min

edit: here

----------


## Facist

> gimmie a min
> 
> edit: here


Thank you very much. The only differences I see is that you have a couple folders that I do not... Ace2 and Ace3; did you change anything in these folders, and did they come with a mod or did you download them?

----------


## Avionss

i havnt changed anything in either of them, and i think they came with a premade ui i started with months ago.

----------


## Facist

> i havnt changed anything in either of them, and i think they came with a premade ui i started with months ago.


I'm completely stumped... thanks again for your time.

----------


## Anotherfox

Anyone up for writing this puppy? +2 Rep if you can.



Sinister Strike to 3 combo points
Slice and Dice (If not applied and =< 9 Seconds left)

Sinister Strike to 5 combo points
Rupture (if not applied and Slice and Slice and Dice has >= 9 Seconds left)

Sinister Strike to 3 combo points
Eviscerate (If Rupture is not applied and Slice and Dice has >= 9 Seconds left)

Use Gloves enchant whenever CD is up (Either Hyperspeed Accelerators or Pyromounted Hand Cannon)

----------


## Avionss

I dont think anyone has found a way to check combopoints/runes yet, im not sure

----------


## Anotherfox

> I dont think anyone has found a way to check combopoints/runes yet, im not sure


Glad I'm not the only one having problems writing it then :P

----------


## Malmis

I made this little macro for using two characters in a party at the same time.
I used my G15 keyboard to make one of my computers click it the entire time, what it does is it will assist the first partymember (UnitID party1) when he/she attacks someone, and when they leave combat the char with the macro will simply follow the other one. It's nothing fancy, but if you add it together with some of the other macros here you could have one char heal the other and stuff.


```
/dump (function() if UnitAffectingCombat("party1") then AssistUnit("party1");  else FollowUnit("party1") end end)()
```

----------


## Malmis

> I dont think anyone has found a way to check combopoints/runes yet, im not sure





> Glad I'm not the only one having problems writing it then :P


API GetComboPoints - WoWWiki - Your guide to the World of Warcraft
Shouldn't be that hard to make it...

----------


## DarkneZZimba

Is it possible to write macro
to interrupt casting only if target is casting, other way ability isn't working?

----------


## Samzonx

> Is it possible to write macro
> to interrupt casting only if target is casting, other way ability isn't working?



/dump loadstring("local _, d, _ = GetSpellCooldown(\"Wind Shear\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"Wind Shear\") else CastSpellByName(\"Frost Shock\") end")()

Casts wind shear IF the target is casting, Frost shock if it is not.
also checks CD so it wont waste wind shear if frost shock is on CD

edit it as you see fit, just put your spells in there

----------


## Malmis

> Anyone up for writing this puppy? +2 Rep if you can.
> 
> 
> 
> Sinister Strike to 3 combo points
> Slice and Dice (If not applied and =< 9 Seconds left)
> 
> Sinister Strike to 5 combo points
> Rupture (if not applied and Slice and Slice and Dice has >= 9 Seconds left)
> ...


Should be something like this... Can probs be done better.


```
1
_,_,_,_,_,_,dur,_,_=UnitBuff("player","Slice and Dice")
_,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture")
p=GetComboPoints("player", "target");
if(p==3 and dur>=9 and c=="player") then CastSpellByName("Eviscerate")
else
RunMacro(2)
end

2
_,_,_,_,_,_,dur,_,_=UnitBuff("player","Slice and Dice")
_,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture")
p=GetComboPoints("player", "target")
if(p==5 and dur>=9 and c~="player") then
CastSpellByName("Rupture")
else
RunMacro("3")
end

3
_,_,_,_,_,_,dur,_,_=UnitBuff("player","Slice and Dice")
p=GetComboPoints("player", "target")
if(p==3 and dur<9) then
CastSpellByName("Slice and Dice")
else
CastSpellByName("Sinister Strike")
end
_,cd,_=GetItemCooldown("Hyperspeed Accelerators")
if(cd==0) then UseAction(slot) end
```

I've had too little sleep tonight, so I didn't find how to use the glove thingy in a simple way, but if you put it in a slot on your actionbar it'll use it if you edit the red part to the correct slot.

----------


## Anotherfox

Well gloves are Slot 10, so I guess its:

UseAction (10) end




Code is good, anyone got a more streamlined version?

----------


## dcduo

Can it keep track of debuffs too? Wouldn't it be possible to make the KING of rogue v rogue macros with this?

IE Trinket if under the effects of kidneyshot, cheapshot or blind, but not gouge or other things like grenades.

Or:

Blind if the target doesn't have cheapshot/kidneyshot effects on them, or is my understanding of this a bit off?

----------


## DarkneZZimba

> /dump loadstring("local _, d, _ = GetSpellCooldown(\"Wind Shear\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"Wind Shear\") else CastSpellByName(\"Frost Shock\") end")()
> 
> Casts wind shear IF the target is casting, Frost shock if it is not.
> also checks CD so it wont waste wind shear if frost shock is on CD
> 
> edit it as you see fit, just put your spells in there


I am DK, when i put Mind Freeze instead of Wind Shear nothing happens...can you help me/ :Smile:

----------


## Avionss

> I am DK, when i put Mind Freeze instead of Wind Shear nothing happens...can you help me/


/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Mind Freeze\") end")()

----------


## Avionss

> Can it keep track of debuffs too? Wouldn't it be possible to make the KING of rogue v rogue macros with this?
> 
> IE Trinket if under the effects of kidneyshot, cheapshot or blind, but not gouge or other things like grenades.
> 
> Or:
> 
> Blind if the target doesn't have cheapshot/kidneyshot effects on them, or is my understanding of this a bit off?


I think there would be way too many variables with what can happen in a rvr duel to make a macro for it. I dont see how you would gain any advantage at all by macro'ing it

----------


## Avionss

Actualy that gives me an idea, could someone who knows what they are doing quickly throw together a macro thats like normal gouge, however it wont fire off if the target is afflicted by cheapshot, kidneyshot or blind.

so basicly, if target is effected by cheapshot, kidneyshot or blind, it wont gouge, otherwise it will gouge like normal.

would be sweet for kidney shotting and expecting the trinket, so you can kidney and spam the macro, and the split second they trinket it gouges

----------


## gradenko2000

I've found a solution to the DK rune problem.

Consider the following code:



```
5:
/dump loadstring("local a = GetRuneType(\"1\") if (a == 1) then CastSpellByName(\"blood strike\") else RunMacro(6) end") ()

6:
/dump loadstring("local a = GetRuneType(\"2\") if (a == 1) then CastSpellByName(\"blood strike\") else RunMacro(7) end") ()

7:
/cast Obliterate
```

If you press 5, it will check if the leftmost rune is a Blood rune. If it is, it will cast Blood Strike. If not, it will run 6.

6 will then check if the next rune to the right is a Blood rune. If it is, it will cast Blood Strike also. If not, it will run 7.

7 simply casts Obliterate, but since you already ran a check earlier for Blood runes, then Obliterate will only cast if you have UF runes available, or if the Blood runes are already Death runes. If the Blood runes haven't been converted to Death runes yet via Blood Strikes, the 5 and 6 macros would catch it.

----------


## Avionss

> Actualy that gives me an idea, could someone who knows what they are doing quickly throw together a macro thats like normal gouge, however it wont fire off if the target is afflicted by cheapshot, kidneyshot or blind.
> 
> so basicly, if target is effected by cheapshot, kidneyshot or blind, it wont gouge, otherwise it will gouge like normal.
> 
> would be sweet for kidney shotting and expecting the trinket, so you can kidney and spam the macro, and the split second they trinket it gouges


Also iceblock if its possible

----------


## Bazetts

> I use this right here:
> 
> /dump loadstring("if UnitHealth(\"Player\") > 15000 then CastSpellByName(\"Life Tap\") end")()
> 
> That will cast Life Tap only if you are above 15000 health. You can change the amount to a desired level of health.
> 
> And if anyone knows how to load health as a percentage that would be fantastic


The percentage will be in variable *p*:


```
/dump loadstring("p=(UnitHealth(\"target\")/UnitHealthMax(\"target\"))*100 If p>80 then CastSpellByName(\"Life Tap\") end")()
```

Just change 80 to whatever percentage you want

Edit: Oh and you might want to change target to player aswell to make it check your hp

----------


## Dragonshadow

Guys we should start compiliing a list of addons that have their own /dump command so we know which addons to avoid.

----------


## i2lurchi

> Guys we should start compiliing a list of addons that have their own /dump command so we know which addons to avoid.


- BigWigs
- Ora2
- Decursive
- Gladius
- Grid
- SmartBuff
- Qutfitter
- Dominos
...
stopped trying after disabling these addons and disabled all



does anyone know a way to change 


```
 CastSpellByName(\"Innervate\")
```

to define a target of the spell?
something like


```
 CastSpellByName(\"Innervate\", target=player)
```

----------


## Joevlol

It's only the WoWAce ones mostly. Maybe a few random ones...

----------


## i2lurchi

finally found one working method to cast a spell on a specific target



```
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Innervate\") if ((UnitPower(\"player\") < 10000) and (d == 0)) then TargetUnit(\"player\") CastSpellByName(\"Innervate\") TargetLastTarget()  else RunMacro(\"4\") end") ()
```

----------


## Lexodia

ive had another breakthrough



```
#showtooltip Consecration
/dump RunMacro("CH")
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Exorcism\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"Exorcism\") end")()
/cast Consecration
```



```
/dump loadstring("local _, _, _, _, _, _, _, _, X = UnitChannelInfo(\"target\"); local _, d, _ = GetSpellCooldown(\"Exorcism\") if UnitChannelInfo(\"target\") and (d == 0) and not X then SpellStopCasting() CastSpellByName(\"Exorcism\") end")()
```

note: for the sake of testing i used exorcism and consecration, these were the shortest names on paladin abilities for me...
what these beauty's do:
the top macro will check whether the target is casting, and check the cooldown of ability A 
IF the target is casting AND ability A is off cooldown, use A
IF the target is casting BUT ability A is on cooldown, use B
IF the target isnt casting BUT ability A is off cooldown, use B
the bottom macro is called upon by the top macro aswell, and this does the same and checks for channeling
what you want to do is replace A with pummel, kick, wind shear - best would be off gcd abilities
then replace B with the abilities you use

i'll take an example for warriors
a warrior would want to make multiple macro's, one of the top one for each ability (mortal strike, whirlwind and the like)
the bottom macro is only needed once, but in this setup it has to be named CH (short for channel)
by making variants of the top macro, changing only the B ability, you can replace just about any damage ability for the macro, then spam it while pvping

what this does is, because you're spamming the macro and pummel is off global cooldown, it will pummel your target AS SOON as he starts a cast or channel

what this concludes: you'll stop a penance with loads of haste in 0.2/0.3 seconds depending on lag

god i love /dump

----------


## faralos

lol this is awsome:;>

----------


## Cickass

any way you can use these macros without having your chat log spammed?

thanks

----------


## i2lurchi

create a new chat window

----------


## Anotherfox

Created a compiled thread without the filler (credit to the coders).

http://www.mmowned.com/forums/ui-mac...on-wip-mo.html

----------


## Trollin

Worked for me. Success!

----------


## Lexodia

hahaha, i noticed AcceptTrade() is a protected command aswell, maybe if u hide it well in a macro u can scam some people some gold

----------


## Aeron`

Silent dump found:

Execute this once per UI (re)load and it will replace the /dump handeling:


```
/dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
```

or


```
/dump (function() DevTools_DumpCommand = (function(msg) loadstring(msg)() end) end)()
```

This version doesn't need a 

```
loadstring("<Lua>")()
```

 or 

```
(function() <Lua> end)()
```

 wrapper. Instead type the lua code directly after /dump. Example:


```
/dump if (UnitHealth("Player") > 15000) then CastSpellByName("Life Tap") end
```

It also doesn't give a warning when there is a syntax error.

Edit: Has the [Crashin' Thrashin' Racer Controller] exploit been posted yet? The one you can get instantly aggro of the targeted mob when you cancel the channeling effect?

----------


## Kassic

Hey, sorry I'm not as familiar with macros as most of you guys seem to be, but if I wanted to make a macro that would overpower whenever the target was casting, would it just be the interrupt macro that was posted earlier in the thread and just substitute overpower?

I tried that today in a few battlegrounds but overpower never went off, the macro I'm using for example is

#showtooltip Hamstring
/cast Hamstring
/dump loadstring("local _, _, _, _, _, _, _, _, interruptAble = UnitCastingInfo(\"target\"); if UnitCastingInfo(\"target\") and not interruptAble then SpellStopCasting() CastSpellByName(\"Overpower\") end")()

Is there something blatantly obvious that I'm doing wrong? Thanks

----------


## Tharmac

Im afraid it its bannable. Any clue?

----------


## civ112

not bannable.


its not breaking ToS, everyone has access to this.

----------


## Lexodia

are you sure? these are blizzard protected commands, accessable by a bypass

----------


## [Kronus]

Then why would blizzard make it if it bypasses protected functions with an easily accessible command to everyone?

----------


## Facist

> It's only the WoWAce ones mostly. Maybe a few random ones...



I'm having a bit of trouble here...

I've changed all the AceConsole-2.0.lua dump commands to another command (acedump). AceConsole-3.0.lua doesn't have the word 'dump' in it. My addons are preventing this from working.

Before changing the Ace files, I tried the macro and the chat box displayed 'nil' each time I used it. After changing the Ace files, it displays the standard /dump laksjd in the chat log, like normal. I'm curious why Ace is still blocking this if all indications show that it is not blocking it.

Any other addon solutions I should be aware of?

By the way, the macro I'm using works flawlessly when all addons are turned off.

----------


## atogz

Paladin
Automatic Exorcism

Switch names in red folowed by (Example) to all spells wich you use.



```
#showtooltips Crusader Strike (Example)
/cast Crusader Strike (Example)
/dump loadstring("if (UnitBuff(\"player\", \"Art of War(Rank 2)\")) then SpellStopCasting() CastSpellByName(\"Exorcism(Rank 9)\") end")()
```

----------


## Kaites

> Paladin
> Automatic Exorcism
> 
> Switch names in red folowed by (Example) to all spells wich you use.
> 
> 
> 
> ```
> #showtooltips Crusader Strike (Example)
> ...


dps loss, because you use exorcism just under specific conditions.

----------


## mmhelm

> Then why would blizzard make it if it bypasses protected functions with an easily accessible command to everyone?


facepalm.

just an unscalable amount of facepalm.

----------


## Avionss

> Actualy that gives me an idea, could someone who knows what they are doing quickly throw together a macro thats like normal gouge, however it wont fire off if the target is afflicted by cheapshot, kidneyshot or blind.
> 
> so basicly, if target is effected by cheapshot, kidneyshot, iceblock or blind, it wont gouge, otherwise it will gouge like normal.
> 
> would be sweet for kidney shotting and expecting the trinket, so you can kidney and spam the macro, and the split second they trinket it gouges


Anyone? would be awsome

----------


## blazingangel

someone should make a totem stomping macro since im sure alot of people would be really happy, i have no clue about macro's so i wouldn't know where to start

----------


## i2lurchi

WARNING! I didn't test it! Please post some feedback if you can! would be great!
Warning: You might have to disable ALL your addons and your Chat will be spammed witch dump messages!
Heal the Player with the lowest HP in your raid!

10 player raid:


```
/dump loadstring(" local ma=0; local mn=0; t=\"raid\"; for n=\"1\",\"10\" do local a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if a > ma then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000 then RunMacro(\"BIG\") else RunMacro(\"SMALL\") end ") ()
```

10 player raid (+RANGE CHECK!)


```
/dump loadstring(" ma=0; mn=0; t=\"raid\"; for n=\"1\",\"10\" do a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if (a > ma) and (UnitInRange(t..n)==1) then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000  then RunMacro(\"B\") else RunMacro(\"S\") end ") ()
```

25 player raid:


```
/dump loadstring(" local ma=0; local mn=0; t=\"raid\"; for n=\"1\",\"25\" do local a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if a > ma then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000 then RunMacro(\"BIG\") else RunMacro(\"SMALL\") end ") ()
```

25 player raid (+RANGE CHECK!)


```
/dump loadstring(" ma=0; mn=0; t=\"raid\"; for n=\"1\",\"25\" do a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if (a > ma) and (UnitInRange(t..n)==1) then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000  then RunMacro(\"B\") else RunMacro(\"S\") end ") ()
```

40 player raid:


```
/dump loadstring(" local ma=0; local mn=0; t=\"raid\"; for n=\"1\",\"40\" do local a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if a > ma then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000 then RunMacro(\"BIG\") else RunMacro(\"SMALL\") end ") ()
```

40 player raid (+RANGE CHECK!)


```
/dump loadstring(" ma=0; mn=0; t=\"raid\"; for n=\"1\",\"40\" do a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if (a > ma) and (UnitInRange(t..n)==1) then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000  then RunMacro(\"B\") else RunMacro(\"S\") end ") ()
```

----SMALL--- (name the macro exact "SMALL")


```
/cast Flash of Light
```

----BIG------ (name the macro exact "BIG")


```
/cast Holy Light
```


this macro will target the player in your raid with the LOWEST HP and it will run the macros "BIG" and "SMALL", the macro "BIG" should contain a big healing spell (Holy light, Nourish, healing Weave), the "SMALL" macro should countain a small healing spell (Flash of Light, Rejuvenation, lesser healing Weave), etc!

the SMALL macro is used if the target has lost more than 8000 HP the BIG macro is used if the target has lost less then 8k HP!

this is NOT really tested!

please post your feedback!

----------


## GRB

Some of this macros are longer then the 255 allowed, how to work around that?

----------


## i2lurchi

> Some of this macros are longer then the 255 allowed, how to work around that?


what macro is longer then 255? o.O

----------


## GRB

This one for exemple



```
/dump loadstring("local _,_,_,_,_,_,dur,_,_=UnitBuff("player","Slice and Dice")
_,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture")
p=GetComboPoints("player", "target");
if(p==3 and dur>=9 and c=="player") then CastSpellByName("Eviscerate")
else
RunMacro(2)
end
```

----------


## traxdata80

can anyone make smth like 

casts cleanse when one of 2 party members is feared, otherwise casts crusader strike?

----------


## i2lurchi

> This one for exemple
> 
> 
> 
> ```
> /dump loadstring("local _,_,_,_,_,_,dur,_,_=UnitBuff("player","Slice and Dice")
> _,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture")
> p=GetComboPoints("player", "target");
> if(p==3 and dur>=9 and c=="player") then CastSpellByName("Eviscerate")
> ...


this one should work:
(254 characters used)


```
/dump loadstring("_,_,_,_,_,_,d,_,_=UnitBuff("player","Slice and Dice")
_,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture")
p=GetComboPoints("player", "target");
if(p==3 and d>=9 and c=="player") then CastSpellByName("Eviscerate") else RunMacro(2) end") ()
```

----------


## Aeron`

Guess my discovery about no Dump spam isn't great :P (See page 14)

----------


## Avionss

> Actualy that gives me an idea, could someone who knows what they are doing quickly throw together a macro thats like normal gouge, however it wont fire off if the target is afflicted by cheapshot, kidneyshot or blind.
> 
> so basicly, if target is effected by cheapshot, kidneyshot, iceblock or blind, it wont gouge, otherwise it will gouge like normal.
> 
> would be sweet for kidney shotting and expecting the trinket, so you can kidney and spam the macro, and the split second they trinket it gouges


Would this be possible then?

----------


## GRB

Getting a dump error!  :Frown:

----------


## i2lurchi

> Getting a dump error!



sry but I don't have a rogue and I can't test it -.-

but try this one:



```
/dump loadstring("_,_,_,_,_,_,d,_,_=UnitBuff("player","Slice and Dice") _,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture") p=GetComboPoints("player", "target");if(p==3 and d>=9 and c=="player") then CastSpellByName("Eviscerate")else RunMacro(2) end end")()
```

----------


## Malmis

> Guess my discovery about no Dump spam isn't great :P (See page 14)


It's a great discovery, it makes the macros a little smaller and with a bit less clutter. Rep+  :Smile:

----------


## Skeetss

Lol Blizzard fail. Once again. I love how people always find a way. Some kid probably like did /dump to poo on some poor kid and discovered it.

----------


## murlocmangina

> sry but I don't have a rogue and I can't test it -.-
> 
> but try this one:
> 
> 
> 
> ```
> /dump loadstring("_,_,_,_,_,_,d,_,_=UnitBuff("player","Slice and Dice") _,_,_,_,_,_,_,c,_=UnitDebuff("target", "Rupture") p=GetComboPoints("player", "target");if(p==3 and d>=9 and c=="player") then CastSpellByName("Eviscerate")else RunMacro(2) end end")()
> ```


im guetting a dump error, but I have a question idk if its going past the 255 limit. I'm pretty sure it's not though

----------


## Procit

Rogues will love this one:

/dump loadstring("if (UnitBuff(\"target\", \"Every Man for Himself\")) then CastSpellByName(\"Blind\") end")()

/dump loadstring("if (UnitBuff(\"target\", \"PvP Trinket\")) then CastSpellByName(\"Blind\") end")()

Put both of those in the same macro, spam it when you think someone is about to trinket.

----------


## poltrigiest

so i'm running into some trouble making a disc priest ezmode heal rotation with macros here is what i got so far:

Macro 1:


```
/dump loadstring(" ma=0; mn=0; t=\"raid\"; for n=\"1\",\"10\" do a=(UnitHealthMax(t..n)-UnitHealth(t..n)); if (a > ma) and (UnitInRange(t..n)==1) then ma=a mn=n end end TargetUnit(t..mn); if ma>=8000  then RunMacro(\"B\") else RunMacro(\"S\") end ") ()
```

this one targets the person with the lowest health and based on that healt cast a quick heal or long duration heal

Macro B:


```
/dump loadstring("if (not UnitDebuff(\"target\", \"Weakend Soul\")) then CastSpellByName(\"Power Word: Shield\") end")()
/dump RunMacro(C)
```

this one checks to see if they have weakend soul if not cast shield then moves to macro C

Macro C:


```
/dump loadstring("local _, 10, _ = GetSpellCooldown(\"Prayer of Mending\") if (d == 0) then  CastSpellByName(\"Prayer of Mending\")  else CastSpellByName(\"Renew\") end")()
```

This one checks to see if prayer of mending is on cool down if not uses it, and if it is on cooldown it cast renew

Macro S:


```
/dump loadstring("if (not UnitDebuff(\"target\", \"Weakend Soul\")) then CastSpellByName(\"Power Word: Shield\") end")()
/dump RunMacro(T)
```

this one is the same as Macro B but instead takes you to a different macro afterwards

Macro T:


```
/dump loadstring("local _, 8, _ = GetSpellCooldown(\"Penance\") if (d == 0) then  CastSpellByName(\"Penance\")  else CastSpellByName(\"Flash Heal\") end")()
```

this one checks to see if penance is on cd and if not will cast it, and if it is on cd uses flash heal instead

When i use Macro 1 it sais that it sais empty field, RunMacro(C), empty field, empty field it won't get past casting power weild: shield. any help on this would be nice!

I've also been messing around with it using percentages with the following macros the ones with * next to them work 



```
Macro Heal:
/dump loadstring(" P=1; mn=0; t=\"party\"; for n=\"1\",\"2\" do p=(UnitHealth(t..n)/UnitHealthMax(t..n)); if (P > p) and (unitInRange(t..n)==1) then P=p mn=n end end Targetunit(t..mn); if P<60% then RunMacro(\"Quick heal\") else RunMacro(\"HOT\") end")()
/dump RunMacro(Shield)

Macro Shield:
/dump loadstring("if (not UnitDebuff(\"target\", \"Weakend Soul\")) then CastSpellByName(\"Power Word: Shield\") end")()

/dump RunMacro(Defecit)

Macro Defecit:
/dump loadstring("ma=0; mn=0; t=\"target\"; do a=(UnitHealthMax(t..n)-Unithealth(t..n)); if (a > ma) and (UnitInRange(t..n)==1) then ma=a mn=n; if ma>=8000 then RunMacro(\"Quick heal\") else RunMacro(\"HOT\") end")()

*Macro Quick heal:
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Penance\") if (d == 0) then  CastSpellByName(\"Penance\")  else CastSpellByName(\"Flash Heal\") end")()


*Macro HOT:
/dump loadstring("local _, d, _ = GetSpellCooldown(\"Prayer of Mending\") if (d == 0) then  CastSpellByName(\"Prayer of Mending\")  else CastSpellByName(\"Renew\") end")()
```

----------


## dirdir207

does anyone think they could add to this druid healing macro? The only thing its really missing is utilizing swiftmend and nature's swiftness. Perhaps it could be made so that the macro checks the targets hp and if it reaches a certain percent it tries to swiftmend, checks cooldown of course, and if swiftmend is down, it uses nature's swiftness/healing touch. If neither of these are up it will use nourish at a certain percentage. Sans this, can anyone think of any other useful macros for a resto druid in pvp using protected commands?

----------


## Ssateneth

> Paladin
> Automatic Exorcism
> 
> Switch names in red folowed by (Example) to all spells wich you use.
> 
> 
> 
> ```
> #showtooltips Crusader Strike (Example)
> ...


This is somewhat of a dps loss, but I can modify it to my uses so it'll cast it at the correct time. I've had a handful of time when my priority spammer casted exorcism with no art of war proc. Big dps loss there... So yeah, this will come in handy. 1 point of rep.

----------


## Braindead1337

Is it possible to make my deathknight cooldown rotation=
oblitx2
heartstrikex2
empower rune weapon when there are 4 death runes up- when they are still on cd
dancing rune weapon
and then heartstrikex8
then finally blow your runic power up on death coil

would really appreciate it if someone could help me  :Smile:

----------


## Professor Banana

> THERE WAS A COMMAND THAT WORKED ON THE 3.0.8 PTR THAT WAS ABLE TO GET THE PERSONS USERNAME IN CONSOLE MODE? +REP TO FIRST PERSON TO POST THE COMMAND AND CONFIRM IF IT WORKS.
> 
> There was also one that GOT THE USERS INFO, but there was no way to display the info. MAYBE THE DUMP WILL POST IT? +REP to whoever can find that command.


whois

that's the command.

you could see the results if you had the console open.

as much as i don't like people who TALK LIKE THIS, this guy actually does have a good idea.

The problem I see with it is that the whois command worked on the PTR because all accounts there had limited GM powers, /dump doesnt give us that. it just gives us access to things that were restricted by the UI.

----------


## Iaccidentallytwink

> whois
> 
> that's the command.
> 
> you could see the results if you had the console open.
> 
> as much as i don't like people who TALK LIKE THIS, this guy actually does have a good idea.
> 
> The problem I see with it is that the whois command worked on the PTR because all accounts there had limited GM powers, /dump doesnt give us that. it just gives us access to things that were restricted by the UI.


I know someone recently posted that executing commands through loadstring doesn't bypass the serverside restrictions, would it be worth trying, if not the console, some other commands through /dump and executing commands within dump?

----------


## dirdir207

The one button resto healing macro doesn't seem to work. When I press the heal macro I get three errors; you must equip that item to use it, and two you cannot attack that target. I noticed that if I press each of the other macros individually 1-4 I always get an empty result and the macro never continues past its primary spell, even if it has already been applied. Anyone know how to fix this? And also would anyone know how to add in a health check function to utilize swiftmend at a certain health percentage?

----------


## Castseven

> not bannable.
> 
> 
> its not breaking ToS, everyone has access to this.


Yes, this is absolutely bannable. Anyone who says "Blizzard can't ban you for this" either has no idea what they're talking about or is delusional.

The common cry of the banned exploiter is "It's not my fault you put the bug in the game, all I did was take advantage of it". You can debate this all you want but in the end, it only matters in the eyes of Blizzard and they will not cut you any slack for saying this if you are caught.

The TOS doesn't protect you, it protects Blizzard. There's nothing in the TOS that says you may not "use a command to use LUA functions that are otherwise secure", but it doesn't have to because it DOES say that Blizzard can ban you for any reason they choose. They're not stupid, they know things they can't predict happen, that's why the TOS is open-ended.

I'm not saying you WILL get banned for doing this, but I'm saying you absolutely can. Anyone who says you "can't" get banned for this is full of it.

----------


## GRB

> Rogues will love this one:
> 
> /dump loadstring("if (UnitBuff(\"target\", \"Every Man for Himself\")) then CastSpellByName(\"Blind\") end")()
> 
> /dump loadstring("if (UnitBuff(\"target\", \"PvP Trinket\")) then CastSpellByName(\"Blind\") end")()
> 
> Put both of those in the same macro, spam it when you think someone is about to trinket.


Didnt test it yet, but ur forgetting the



```
/dump loadstring("if (UnitBuff(\"target\", \"Hand of Freedom\")) then CastSpellByName(\"Blind\") end")()

Dont forget to add a /stopattack in the end if ur using a macro to call this ones, otherwise u will use blind and keep attacking what is not good!
```

Also i have one question, everytime i put /dump RunMacro(1 or 2 or 3, anynumber here) it always load the general macros not the character specific macro. Whats the diference betwen /dump RunMacro(1) and /dump RunMacro("1")?

----------


## i2lurchi

> The one button resto healing macro doesn't seem to work. When I press the heal macro I get three errors; you must equip that item to use it, and two you cannot attack that target. I noticed that if I press each of the other macros individually 1-4 I always get an empty result and the macro never continues past its primary spell, even if it has already been applied. Anyone know how to fix this? And also would anyone know how to add in a health check function to utilize swiftmend at a certain health percentage?


lol sry there's a BIG mistake it these macros -.-
I'll fix it

EDIT: fixed all macros, swiftmend will be added soon

----------


## Malmis

> Also i have one question, everytime i put /dump RunMacro(1 or 2 or 3, anynumber here) it always load the general macros not the character specific macro. Whats the diference betwen /dump RunMacro(1) and /dump RunMacro("1")?


RunMacro("1") will call the macro named 1, RunMacro(1) will call the first macro. If you use the IDs to call a macro I think it's 1-36 for Account-macros and 37-54 for Character-macros. Or the other way around. I haven't tested it yet.  :Stick Out Tongue:

----------


## i2lurchi

this is a single button spam macro for resto healing

Warning: You might have to disable ALL your addons

you get 2 macros, 1 for tank (focus target) healing and one for raidhealing the macros will keep Lifebloom, Rejuvenation, Regrowth, Swiftmend, Wild Growth and Nourish on your target and Innervate will be used!

*Your have to make 6 Macros witch exact the same macro names I use!*
*
*

to use these macros you have to use the following macro everytime you reload your UI or if you relog!


```
/dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
```


*--- DHFOCUS ---* you have to create a macro witch the name *DHFOCUS*



```
/dump TargetUnit("focus") RunMacro("H")
```

*--- DHRAID ---* (note: this is for 25 players, but you can change the "25" in the macro to "10" etc...)



```
/dump _,d,_=GetSpellCooldown("Wild Growth");m=0;w=0;t="raid";for n="1","25" do a=UnitHealthMax(t..n)-UnitHealth(t..n);if a>m and UnitInRange(t..n)==1 then m=a w=n end end;TargetUnit(t..w);if d==0 then CastSpellByName("Wild Growth") else RunMacro("H") end
```

*---DH1 ---*



```
/dump CastSpellByName("Lifebloom")
```

*---H ---*



```
/dump p="player";_,d,_=GetSpellCooldown("Innervate");_,_,_,_,_,_,_,s,_=UnitBuff("target","Rejuvenation");if UnitPower(p)<8000 and d==0 then TargetUnit(p) CastSpellByName("Innervate") elseif s~=p then CastSpellByName("Rejuvenation") else RunMacro("J") end
```

*---DH3---*



```
/dump local _,_,_,_,_,_,_,o,_=UnitBuff("target","Regrowth");if o~="player" then CastSpellByName("Regrowth") else CastSpellByName("Nourish") end
```

*---J---*



```
/dump _,_,_,c,_,_,_,_,_=UnitBuff("target","Lifebloom"); _,e,_ = GetSpellCooldown("Swiftmend");if ((UnitHealthMax("target")-UnitHealth("target"))>=10000 and e==0) then CastSpellByName("Swiftmend") elseif c~=3 then RunMacro("DH1") else RunMacro("DH3") end
```

--------------------------------

you will cast swiftmend if your target has lost more than 10k HP (you can change the "10000" in "J" and you will cast Innervate if you have less than 8000 mana (change the "8000" in "H")

what you do:

1. create all macros with the EXACT names!
2. use the following once per UI reload (or Login)


```
/dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
```

3. put "DHFOCUS" and "DHRAID" in your actionbar
4. /focus your maintank oder main healing target!
5. use "DHFOCUS" to heal your focustarget and "DHRAID" to heal the raid! (spammable!)

6. have fun


(sry for gramar/spelling -.-)
+Rep if I could help you :wave:

----------


## hext

> what macro is longer then 255? o.O


There were some supermacros addons that can give u more space

----------


## GRB

> There were some supermacros addons that can give u more space


tryed some already and they must be disable to /dump work, what is a pain in the axx!

----------


## jt12852

I've read each post in this thread and haven't seen it mentioned. Since WotLK came out, macros by default have been stored on Blizzard's servers.

*This means Blizzard can easily see who is abusing this exploit by using macros.*

Before using any macros which exploit the /dump command, you should disable storing macros on Blizzard's servers. To do so, use the following command:


```
/console synchronizeMacros 0
```

----------


## Aeron`

Good point jt12852.

BackupMacros() and RestoreMacros() might be usefull to test it out with.

----------


## jt12852

The synchronizeMacros console variable setting is persistent. It only ever needs to be done once per account per computer, not at every login.

Also, for those of you whose macros have previously been stored on Blizzard's servers, they have been logged and backed up dutifully by Blizzard, making it trivial for them to investigate your prior use.

----------


## scub

Be pretty good for general in ulduar for lazy people.

Any idea if you can make an interrupt on a certain cast / channel rather than any cast / channel? So far stuck with - 

/dump loadstring("local _, d, _ = GetSpellCooldown(\"kick\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"kick\") else CastSpellByName(\"sinister strike\") end")()

Edit: Also anybody know what id do so it only casts SS at 65>energy so it will reserve kick energy?

----------


## MaiN

> Be pretty good for general in ulduar for lazy people.
> 
> Any idea if you can make an interrupt on a certain cast / channel rather than any cast / channel? So far stuck with - 
> 
> /dump loadstring("local _, d, _ = GetSpellCooldown(\"kick\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"kick\") else CastSpellByName(\"sinister strike\") end")()
> 
> Edit: Also anybody know what id do so it only casts SS at 65>energy so it will reserve kick energy?


/dump loadstring("local _, d, _ = GetSpellCooldown(\"kick\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"kick\") else if UnitPower(\"player\") >= 65 then CastSpellByName(\"sinister strike\") end end")()

----------


## i2lurchi

> Be pretty good for general in ulduar for lazy people.
> 
> Any idea if you can make an interrupt on a certain cast / channel rather than any cast / channel? So far stuck with - 
> 
> /dump loadstring("local _, d, _ = GetSpellCooldown(\"kick\") if UnitCastingInfo(\"target\") and (d == 0) then SpellStopCasting() CastSpellByName(\"kick\") else CastSpellByName(\"sinister strike\") end")()
> 
> Edit: Also anybody know what id do so it only casts SS at 65>energy so it will reserve kick energy?




```
/dump n,_,_,_,_,_,_,_,_=UnitCastingInfo("focus");_,d,_=GetSpellCooldown("Kick"); if n=="Searing Flames" and d==0 then TargetUnit("focus") CastSpellByName("Kick") elseif UnitPower("player")>=65 then CastSpellByName("Sinister Strike") end
```

try it  :Smile: 
(but you have to use 
/dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
everytime you relog/reload UI!)

----------


## MaiN

> Silent dump found:
> 
> Execute this once per UI (re)load and it will replace the /dump handeling:
> 
> 
> ```
> /dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
> ```
> 
> ...


Very nice find.
This means that it is usable through addons, by calling DevTools_DumpCommand("lua").
That's also very weird.
It means that (even though all LUA runs in the main thread), for SOME reason this LUA runs outside the standard protection. Very weird.
Can I ask where you found this?

EDIT: Nvm., I found it myself.

The reason as to why this work, is that /dump is a slash command that is run by a blizzard signed addon (it's in AddOns\Blizzard_DebugTools\Dump.lua) - blizzard signed addons have access to commands like this.
This is a really easy fix, so it's probably fixed really soon.

----------


## Softmod

> Very nice find.
> This means that it is usable through addons, by calling DevTools_DumpCommand("lua").
> That's also very weird.
> It means that (even though all LUA runs in the main thread), for SOME reason this LUA runs outside the standard protection. Very weird.
> Can I ask where you found this?
> 
> EDIT: Nvm., I found it myself.
> 
> The reason as to why this work, is that /dump is a slash command that is run by a blizzard signed addon (it's in AddOns\Blizzard_DebugTools\Dump.lua) - blizzard signed addons have access to commands like this.
> This is a really easy fix, so it's probably fixed really soon.


In that case how would you go about using using these commands with Addons still enabled?

----------


## Vonzom

Sweet...hehe. +rep

----------


## xipwnedux

K here is my problem:
I have the "Death Coil if >60 runic power" bound to my Death Strike and Heart Strike. I also want to bind the macro that casts mind freeze when the opponent is casting bound to HS and DS but putting both /dumps in one macro would exceed the limit. Can someone help me please.

----------


## i2lurchi

> K here is my problem:
> I have the "Death Coil if >60 runic power" bound to my Death Strike and Heart Strike. I also want to bind the macro that casts mind freeze when the opponent is casting bound to HS and DS but putting both /dumps in one macro would exceed the limit. Can someone help me please.




```
/dump _,_,_,_,_,_,_,_,i=UnitCastingInfo("target");c=CastSpellByName;if i==false then c("Mind Freeze") elseif UnitPower("player")>=60 then c("Death Coil") else c("Heart Strike") end
```



```
/dump _,_,_,_,_,_,_,_,i=UnitCastingInfo("target");c=CastSpellByName;if i==false then c("Mind Freeze") elseif UnitPower("player")>=60 then c("Death Coil") else c("Death Strike") end
```

should work

use


```
/dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
```

everytime you relog/reload UI!

----------


## xipwnedux

> ```
> /dump _,_,_,_,_,_,_,_,i=UnitCastingInfo("target");c=CastSpellByName;if i==false then c("Mind Freeze") elseif UnitPower("player")>=60 then c("Death Coil") else c("Heart Strike") end
> ```
> 
> 
> 
> ```
> /dump _,_,_,_,_,_,_,_,i=UnitCastingInfo("target");c=CastSpellByName;if i==false then c("Mind Freeze") elseif UnitPower("player")>=60 then c("Death Coil") else c("Death Strike") end
> ```
> ...



Is the last code necessary every time I log in?

Anyway, thanks!


Also I was wondering if there were any helpful macros for a level 10 paladin twink.

----------


## pyre

I just open a new chat window. Try it out. go to settings and check everything in the first window (BG chat, whispers etc)

----------


## i2lurchi

> Is the last code necessary every time I log in?
> 
> Anyway, thanks!


without using 


```
/dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()
```

my macros won't work

----------


## xipwnedux

yea i tried opening a new window but i find just putting in the code is best.

----------


## blazingangel

Totem Stomping macro anywhere?

----------


## jt12852

> Totem Stomping macro anywhere?


The same protected functions that target units by name will still fail even in a secure codepath for totems. So no, there are no obvious applications for totem stomping, in the traditional sense. You might be able to work something out using nameplates, however.

----------


## Apoc

Note to all;

This 'exploit' will work until the next patch. (Most likely will be a minor patch, just to fix the silly Lua bug you're all exploiting).

I suggest someone with decent Lua knowledge, writes a small addon to hook the PLAYER_ENTER_WORLD event to run some 'setup' commands for you guys. (Killing /dump spam, setting up some other variables, etc) And also register a 1 letter slash command (eg; /d) to use in macros. Possibly shorten some widely used function names so you can get more room in stuff. Or hell; just edit the Lua files to 'bot' with.

Edit:

I'm no Lua expert, but I *believe* this code should work. Just make it an addon or something and test it.



```
-- Handles silencing the /dump command for you. This executes any time the UI is reloaded or we change zones via UI load
-- Also includes after login!
local pewFrame = CreateFrame("dumpFrame")
pewFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
pewFrame:SetScript("OnEvent", function(self,event,...)
        EL("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")
end)

-- ExecuteLua (Truncated to EL)
function EL(lua)
    loadstring(lua);
end

-- CastSpellByName (Truncated to CSBN)
function CSBN(name)
    EL("CastSpellByName(" .. name .. ")"))
end
```

Should automatically silence the /dump shit. Also lets you use EL("lua stuff here") in macros to avoid the loadstring() length, and also CSBN("Smite") to do CastSpellByName. (Just use EL("CSBN("Smite")") for example)

/run EL("CSBN(\"Smite\")")

^ Should cast Smite. You guys may want to test it.

----------


## Comedian

It is possible to make a similar macro with use /dump ?

#showtooltip Spell Reflect
/stopcasting
/equipslot 16 "Mainhend"
/equipslot 17 "Shield"
/cast [stance:3] Deff Stance
/cast [stance:1/2] Spell Reflect

Whether with use /dump spell Spell Reflect will be used with pressing of the button of 1 times

----------


## Aeron`

Apoc made me thinking but his idea isn't possible yet.

Addons are unsigned and everything you do with it makes it unsigned. They only way to execute protected commands are by use of a macro and /dump. Scripts can't run RunMacroText() because it's protected.

----------


## maclone

Replies: 256 - Views: 26,726 - Currently Active Users Viewing This Thread: 21
How about that you idiots give rljohn some +rep for his epic find?
I don't see that he got much from sharing it here and still, it gets abused 'til maximum.

----------


## i2lurchi

> Should automatically silence the /dump shit. Also lets you use EL("lua stuff here") in macros to avoid the loadstring() length, and also CSBN("Smite") to do CastSpellByName. (Just use EL("CSBN("Smite")") for example)


with



> /dump loadstring("DevTools_DumpCommand = (function(msg) loadstring(msg)() end)")()


you can IGNORE loadstring() ! you don't have to use it!

e.g.



> /dump CastSpellByName("Lifebloom")

----------


## i2lurchi

> Replies: 256 - Views: 26,726 - Currently Active Users Viewing This Thread: 21
> How about that you idiots give rljohn some +rep for his epic find?
> I don't see that he got much from sharing it here and still, it gets abused 'til maximum.





> Found this little gem today on Arena Junkies...


hmm... just copy+paste?

----------


## j2tb

Could someone create a Warrior tank macro?
i.e Charge>devastate to 5 sunders>rend

if rend is not applied by player then rend
if sunder is not = to 5 then devastate
Shield slam every cooldown
If revenge procs use it
use berserker rage when in combat

Heroic strike when rage is >35 or something
^ heroic strike dump would be SO BLOODY helpfull

Will +rep if it works ^^

----------


## Holypaja

Guys id like to have some priest exploits, like healing or dps thanks  :Smile:

----------


## maclone

> hmm... just copy+paste?


Like I said. He shared it with MMOwned.
And with that he's the reason that YOU and/or others know about it and this thread with macros exists.

----------


## i2lurchi

** Fixed an exploit players were using with / commands
*

bye bye /dump

----------


## MaiN

> Note to all;
> 
> This 'exploit' will work until the next patch. (Most likely will be a minor patch, just to fix the silly Lua bug you're all exploiting).
> 
> I suggest someone with decent Lua knowledge, writes a small addon to hook the PLAYER_ENTER_WORLD event to run some 'setup' commands for you guys. (Killing /dump spam, setting up some other variables, etc) And also register a 1 letter slash command (eg; /d) to use in macros. Possibly shorten some widely used function names so you can get more room in stuff. Or hell; just edit the Lua files to 'bot' with.
> 
> Edit:
> 
> I'm no Lua expert, but I *believe* this code should work. Just make it an addon or something and test it.
> ...


It would be better to use pewFrame:SetScript("OnLoad", function(self) end) - PLAYER_ENTERING_WORLD is only run once when you log in, while OnLoad, obviously, is run every time the addon is (re)loaded.  :Stick Out Tongue:

----------


## Ssateneth

World of Warcraft - English (NA) Forums -> Realm Restarts - Patch 3.2.0a - 8/19/09

Here comes the fix. Does anyone have an 'unpatch'/hack for this fix planned when this patch comes out?

----------


## akspa420

> ** Fixed an exploit players were using with / commands
> *
> 
> bye bye /dump


Yep. 3.2.0a is going live sometime today, and it specifically removes /dump commands. I just wonder if it'll be removing the blizz dev tools, or if the client will be modified to disallow unsigned code from executing the /dump command (IE: allow only blizz-issued addons).  :Mad:

----------


## MaiN

> Yep. 3.2.0a is going live sometime today, and it specifically removes /dump commands. I just wonder if it'll be removing the blizz dev tools, or if the client will be modified to disallow unsigned code from executing the /dump command (IE: allow only blizz-issued addons).


The dump command is probably just going to get removed.
What's happening right now is exactly that the blizzard signed addon is performing the protected function, and blizzard signed addons can do that.

----------


## Ssateneth

Patch is live now.

----------


## i2lurchi

> The dump command is probably just going to get removed.
> What's happening right now is exactly that the blizzard signed addon is performing the protected function, and blizzard signed addons can do that.


anybody has a download link for 3.2.0a? I play in EU we don't have the patch yet. maybe we can change the Patch file...?

----------


## Ssateneth

> anybody has a download link for 3.2.0a? I play in EU we don't have the patch yet. maybe we can change the Patch file...?


Just run the WoW Launcher (not WoW.exe but Launcher.exe from the WoW dir) and it should automatically start downloading the patch. That's what it did for me, but I have yet to close WoW so I'm still running with the 'old' patch  :Wink:  Here's the US version. I do not have an EU version, sorry.

RapidShare: 1-CLICK Web hosting - Easy Filehosting

----------


## Iaccidentallytwink

All they did was add a TaintForced addon that can't be disabled. Remove the addon from the patch?

----------


## i2lurchi

> All they did was add a TaintForced addon that can't be disabled. Remove the addon from the patch?


should be possible?

----------


## i2lurchi

this is the WORKING Dump.lua (from EU files) try to replace the 3.2.0a patched version with this



```
------------------------------------------------------------------------------
-- Dump.lua
--
-- Contributed by Iriel, Esamynn and Kirov from DevTools v1.11
-- /dump Implementation
--
-- Globals: DevTools, SLASH_DEVTOOLSDUMP1, DevTools_Dump, DevTools_RunDump
-- Globals: DEVTOOLS_MAX_ENTRY_CUTOFF, DEVTOOLS_LONG_STRING_CUTOFF
-- Globals: DEVTOOLS_DEPTH_CUTOFF, DEVTOOLS_INDENT
-- Globals: DEVTOOLS_USE_TABLE_CACHE, DEVTOOLS_USE_FUNCTION_CACHE
-- Globals: DEVTOOLS_USE_USERDATA_CACHE
---------------------------------------------------------------------------
local DT = {};

DEVTOOLS_MAX_ENTRY_CUTOFF = 30;    -- Maximum table entries shown
DEVTOOLS_LONG_STRING_CUTOFF = 200; -- Maximum string size shown
DEVTOOLS_DEPTH_CUTOFF = 10;        -- Maximum table depth
DEVTOOLS_USE_TABLE_CACHE = true;   -- Look up table names
DEVTOOLS_USE_FUNCTION_CACHE = true;-- Look up function names
DEVTOOLS_USE_USERDATA_CACHE = true;-- Look up userdata names
DEVTOOLS_INDENT='  ';              -- Indentation string

local DEVTOOLS_TYPE_COLOR="|cff88ff88";
local DEVTOOLS_TABLEREF_COLOR="|cffffcc00";
local DEVTOOLS_CUTOFF_COLOR="|cffff0000";
local DEVTOOLS_TABLEKEY_COLOR="|cff88ccff";

local FORMATS = {};
-- prefix type suffix
FORMATS["opaqueTypeVal"] = "%s" .. DEVTOOLS_TYPE_COLOR .. "<%s>|r%s";
-- prefix type name suffix
FORMATS["opaqueTypeValName"] = "%s" .. DEVTOOLS_TYPE_COLOR .. "<%s %s>|r%s";
-- type
FORMATS["opaqueTypeKey"] = "<%s>";
-- type name
FORMATS["opaqueTypeKeyName"] = "<%s %s>";
-- value
FORMATS["bracketTableKey"] = "[%s]";
-- prefix value
FORMATS["tableKeyAssignPrefix"] = DEVTOOLS_TABLEKEY_COLOR .. "%s%s|r=";
-- prefix cutoff
FORMATS["tableEntriesSkipped"] = "%s" .. DEVTOOLS_CUTOFF_COLOR .. "<skipped %s>|r";
-- prefix suffix
FORMATS["tableTooDeep"] = "%s" .. DEVTOOLS_CUTOFF_COLOR .. "<table (too deep)>|r%s";
-- prefix value suffix
FORMATS["simpleValue"] = "%s%s%s";
-- prefix tablename suffix
FORMATS["tableReference"] = "%s" .. DEVTOOLS_TABLEREF_COLOR .. "%s|r%s";

-- Grab a copy various oft-used functions
local rawget = rawget;
local type = type;
local string_len = string.len;
local string_sub = string.sub;
local string_gsub = string.gsub;
local string_format = string.format;
local string_match = string.match;

local function WriteMessage(msg)
    DEFAULT_CHAT_FRAME:AddMessage(msg);
end

local function prepSimple(val, context)
    local valType = type(val);
    if (valType == "nil")  then
        return "nil";
    elseif (valType == "number") then
        return val;
    elseif (valType == "boolean") then
        if (val) then
            return "true";
        else
            return "false";
        end
    elseif (valType == "string") then
        local l = string_len(val);
        if ((l > DEVTOOLS_LONG_STRING_CUTOFF) and
            (DEVTOOLS_LONG_STRING_CUTOFF > 0)) then
            local more = l - DEVTOOLS_LONG_STRING_CUTOFF;
            val = string_sub(val, 1, DEVTOOLS_LONG_STRING_CUTOFF);
            return string_gsub(string_format("%q...+%s",val,more),"[|]", "||");
        else
            return string_gsub(string_format("%q",val),"[|]", "||");
        end
    elseif (valType == "function") then
        local fName = context:GetFunctionName(val);
        if (fName) then
            return string_format(FORMATS.opaqueTypeKeyName, valType, fName);
        else
            return string_format(FORMATS.opaqueTypeKey, valType);
        end
        return string_format(FORMATS.opaqueTypeKey, valType);
    elseif (valType == "userdata") then
        local uName = context:GetUserdataName(val);
        if (uName) then
            return string_format(FORMATS.opaqueTypeKeyName, valType, uName);
        else
            return string_format(FORMATS.opaqueTypeKey, valType);
        end
    elseif (valType == 'table') then
        local tName = context:GetTableName(val);
        if (tName) then
            return string_format(FORMATS.opaqueTypeKeyName, valType, tName);
        else
            return string_format(FORMATS.opaqueTypeKey, valType);
        end
    end
    error("Bad type '" .. valType .. "' to prepSimple");
end

local function prepSimpleKey(val, context)
    local valType = type(val);
    if (valType == "string") then
        local l = string_len(val);
        if ((l <= DEVTOOLS_LONG_STRING_CUTOFF) or
            (DEVTOOLS_LONG_STRING_CUTOFF <= 0)) then
            if (string_match(val, "^[a-zA-Z_][a-zA-Z0-9_]*$")) then
                return val;
            end
        end
    end
    return string_format(FORMATS.bracketTableKey, prepSimple(val, context));
end

local function DevTools_InitFunctionCache(context)
    local ret = {};

    for _,k in ipairs(DT.functionSymbols) do
        local v = getglobal(k);
        if (type(v) == 'function') then
            ret[v] = '[' .. k .. ']';
        end
    end

    for k,v in pairs(getfenv(0)) do
        if (type(v) == 'function') then
            if (not ret[v]) then
                ret[v] = '[' .. k .. ']';
            end
        end
    end

    return ret;
end

local function DevTools_InitUserdataCache(context)
    local ret = {};

    for _,k in ipairs(DT.userdataSymbols) do
        local v = getglobal(k);
        if (type(v) == 'table') then
            local u = rawget(v,0);
            if (type(u) == 'userdata') then
                ret[u] = k .. '[0]';
            end
        end
    end

    for k,v in pairs(getfenv(0)) do
        if (type(v) == 'table') then
            local u = rawget(v, 0);
            if (type(u) == 'userdata') then
                if (not ret[u]) then
                    ret[u] = k .. '[0]';
                end
            end
        end
    end

    return ret;
end

local function DevTools_Cache_Nil(self, value, newName)
    return nil;
end

local function DevTools_Cache_Function(self, value, newName)
    if (not self.fCache) then
        self.fCache = DevTools_InitFunctionCache(self);
    end
    local name = self.fCache[value];
    if ((not name) and newName) then
        self.fCache[value] = newName;
    end
    return name;
end

local function DevTools_Cache_Userdata(self, value, newName)
    if (not self.uCache) then
        self.uCache = DevTools_InitUserdataCache(self);
    end
    local name = self.uCache[value];
    if ((not name) and newName) then
        self.uCache[value] = newName;
    end
    return name;
end

local function DevTools_Cache_Table(self, value, newName)
    if (not self.tCache) then
        self.tCache = {};
    end
    local name = self.tCache[value];
    if ((not name) and newName) then
        self.tCache[value] = newName;
    end
    return name;
end

local function DevTools_Write(self, msg)
    DEFAULT_CHAT_FRAME:AddMessage(msg);
end

local DevTools_DumpValue;

local function DevTools_DumpTableContents(val, prefix, firstPrefix, context)
    local showCount = 0;
    local oldDepth = context.depth;
    local oldKey = context.key;

    -- Use this to set the cache name
    context:GetTableName(val, oldKey or 'value');

    local iter = pairs(val);
    local nextK, nextV = iter(val, nil);

    while (nextK) do
        local k,v = nextK, nextV;
        nextK, nextV = iter(val, k);

        showCount = showCount + 1;
        if ((showCount <= DEVTOOLS_MAX_ENTRY_CUTOFF) or
            (DEVTOOLS_MAX_ENTRY_CUTOFF <= 0)) then
            local prepKey = prepSimpleKey(k, context);
            if (oldKey == nil) then
                context.key = prepKey;
            elseif (string_sub(prepKey, 1, 1) == "[") then
                context.key = oldKey .. prepKey
            else
                context.key = oldKey .. "." .. prepKey
            end
            context.depth = oldDepth + 1;

            local rp = string_format(FORMATS.tableKeyAssignPrefix, firstPrefix,
                                     prepKey);
            firstPrefix = prefix;
            DevTools_DumpValue(v, prefix, rp,
                               (nextK and ",") or '',
                               context);
        end
    end
    local cutoff = showCount - DEVTOOLS_MAX_ENTRY_CUTOFF;
    if ((cutoff > 0) and (DEVTOOLS_MAX_ENTRY_CUTOFF > 0)) then
        context:Write(string_format(FORMATS.tableEntriesSkipped,firstPrefix,
                                    cutoff));
    end
    context.key = oldKey;
    context.depth = oldDepth;
    return (showCount > 0)
end

-- Return the specified value
function DevTools_DumpValue(val, prefix, firstPrefix, suffix, context)
    local valType = type(val);

    if (valType == "userdata") then
        local uName = context:GetUserdataName(val, 'value');
        if (uName) then
            context:Write(string_format(FORMATS.opaqueTypeValName,
                                        firstPrefix, valType, uName, suffix));
        else
            context:Write(string_format(FORMATS.opaqueTypeVal,
                                        firstPrefix, valType, suffix));
        end
        return;
    elseif (valType == "function") then
        local fName = context:GetFunctionName(val, 'value');
        if (fName) then
            context:Write(string_format(FORMATS.opaqueTypeValName,
                                        firstPrefix, valType, fName, suffix));
        else
            context:Write(string_format(FORMATS.opaqueTypeVal,
                                        firstPrefix, valType, suffix));
        end
        return;
    elseif (valType ~= "table")  then
        context:Write(string_format(FORMATS.simpleValue,
                                    firstPrefix,prepSimple(val, context),
                                    suffix));
        return;
    end

    local cacheName = context:GetTableName(val);
    if (cacheName) then
        context:Write(string_format(FORMATS.tableReference,
                                    firstPrefix, cacheName, suffix));
        return;
    end

    if ((context.depth >= DEVTOOLS_DEPTH_CUTOFF) and
        (DEVTOOLS_DEPTH_CUTOFF > 0)) then
        context:Write(string_format(FORMATS.tableTooDeep,
                                    firstPrefix, suffix));
        return;
    end

    firstPrefix = firstPrefix .. "{";
    local oldPrefix = prefix;
    prefix = prefix .. DEVTOOLS_INDENT;

    context:Write(firstPrefix);
    firstPrefix = prefix;
    local anyContents = DevTools_DumpTableContents(val, prefix, firstPrefix,
                                                   context);
    context:Write(oldPrefix .. "}" .. suffix);
end

local function Pick_Cache_Function(func, setting)
    if (setting) then
        return func;
    else
        return DevTools_Cache_Nil;
    end
end

function DevTools_RunDump(value, context)
    local prefix = "";
    local firstPrefix = prefix;

    local valType = type(value);
    if (type(value) == 'table') then
        local any =
            DevTools_DumpTableContents(value, prefix, firstPrefix, context);
        if (context.Result) then
            return context:Result();
        end
        if (not any) then
            context:Write("empty result");
        end
        return;
    end

    DevTools_DumpValue(value, '', '', '', context);
    if (context.Result) then
        return context:Result();
    end
end

-- Dump the specified list of value
function DevTools_Dump(value, startKey)
    local context = {
        depth = 0,
        key = startKey,
    };

    context.GetTableName = Pick_Cache_Function(DevTools_Cache_Table,
                                               DEVTOOLS_USE_TABLE_CACHE);
    context.GetFunctionName = Pick_Cache_Function(DevTools_Cache_Function,
                                                  DEVTOOLS_USE_FUNCTION_CACHE);
    context.GetUserdataName = Pick_Cache_Function(DevTools_Cache_Userdata,
                                                  DEVTOOLS_USE_USERDATA_CACHE);
    context.Write = DevTools_Write;

    DevTools_RunDump(value, context);
end

function DevTools_DumpCommand(msg, editBox)
    if (string_match(msg,"^[A-Za-z_][A-Za-z0-9_]*$")) then
        WriteMessage("Dump: " .. msg);
        local val = getglobal(msg);
        local tmp = {};
        if (val == nil) then
            local key = string_format(FORMATS.tableKeyAssignPrefix,
                                      '', prepSimpleKey(msg, {}));
            WriteMessage(key .. "nil,");
        else
            tmp[msg] = val;
        end
        DevTools_Dump(tmp);
        return;
    end

    WriteMessage("Dump: value=" .. msg);
    local func,err = loadstring("return " .. msg);
    if (not func) then
        WriteMessage("Dump: ERROR: " .. err);
    else
        DevTools_Dump({ func() }, "value");
    end
end

DT.functionSymbols = {};
DT.userdataSymbols = {};

local funcSyms = DT.functionSymbols;
local userSyms = DT.userdataSymbols;

for k,v in pairs(getfenv(0)) do
    if (type(v) == 'function') then
        table.insert(funcSyms, k);
    elseif (type(v) == 'table') then
        if (type(rawget(v,0)) == 'userdata') then
            table.insert(userSyms, k);
        end
    end
end
```

----------


## mach1920

This was actually the first thing I tried. I took the dump.lua from 3.2 and put it in a patch-enUS-3.MPQ, but no luck.

----------


## ivackn

> this is the WORKING Dump.lua (from EU files) try to replace the 3.2.0a patched version with this
> 
> 
> 
> ```
> ------------------------------------------------------------------------------
> -- Dump.lua
> --
> -- Contributed by Iriel, Esamynn and Kirov from DevTools v1.11
> ...



Works but /dump does nothing now :/ I may have edited something wrong :O!

----------


## i2lurchi

look in the "patch-enUS-2.MPQ"? there should be also a dump.lua file

----------


## ivackn

> look in the "patch-enUS-2.MPQ"? there should be also a dump.lua file


I did replace the one in patch-enUS-2.MPQ, but nothing happens now. /dump does nothing, and TitanForced doesnt show up now either :/. Help anyone? lol

----------


## mach1920

Have you actually tried this i2lurchi? I haven't had any luck with this, either replacing the Dump.lua in the patch-enUS-2.MPQ, or adding it in a separate MPQ file. Simply removing the patch file is the only thing that works for me.

----------


## Ssateneth

> this is the WORKING Dump.lua (from EU files) try to replace the 3.2.0a patched version with this


Hmm I replaced it and I still get tainted forced pop up with your code (copy + paste in notepad, save as Dump.lua, and put it in the same spot as where your picture indicated, replacing the existing one. I'm on US servers. Is there something I did wrong? I also deleted the Blizzard_DebugTools from my addons folder in hopes it would refresh and still no go. Is your code just a copy + paste of the patched dump.lua?

----------


## ivackn

So all we have to do is remove patch-enUS.MPQ? Or do we actually delete the folder Blizzard_DebugTools?

----------


## Ssateneth

> So all we have to do is *remove patch-enUS.MPQ*? Or do we actually delete the folder Blizzard_DebugTools?


LOL, go ahead and do that, let me know what it does  :Smile:

----------


## mach1920

Posted a working fix in http://www.mmowned.com/forums/wow-ex...ns-3-2-0a.html.

----------


## ivackn

Got it working  :Big Grin:  thanks

----------


## Ssateneth

WARNING: DO NOT DO WHAT i2lurchi SAYS TO DO! It will render /dump inoperable and repair.exe will NOT fix it. Instead, go to this thread http://www.mmowned.com/forums/wow-ex...ns-3-2-0a.html and do what he says. I got my /dump macros working again. Again, do not touch any of the patched data with an MPQ editor as you will most likely **** it up.

----------


## MaiN

> anybody has a download link for 3.2.0a? I play in EU we don't have the patch yet. maybe we can change the Patch file...?


In that case you wont be able to log into WoW. "Unable to validate game version" - just go with it, this exploit is fixed.

----------

