WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Macro Help (https://www.wowinterface.com/forums/forumdisplay.php?f=140)
-   -   Totem Destroying Script (https://www.wowinterface.com/forums/showthread.php?t=44330)

Splondir 09-12-12 07:13 PM

Totem Destroying Script
 
As a result of Totemic Restoration, I've been using /script DestroyTotem(2) to remove Earthgrab Totem early to trigger the lower cooldown. However, the slow effect is not applied on the initial tick, only on subsequent ticks (every 2 sec), so I have to time my DestroyTotem manually. I am looking for a script basically does this:
Code:

/cast Earthgrab Totem
/script if time > 2 then DestroyTotem(2)

If possible, the code should stop running if I drop another earth totem. I am willing to add a macro/script to every earth totem if needed.

I also would like if Tremor Totem could be instantly destroyed, or at least in under 0.5 seconds. :)

Dridzt 09-12-12 07:54 PM

Not possible.

Addons/scripts are not allowed to make combat decisions (and by not allowed I mean Blizzard has removed the functionality)

Phanx 09-12-12 11:19 PM

It is possible; DestroyTotem is not a protected function. It does not require a hardware event, and can be called at any time by an addon or macro, including in combat.

However, there is not enough space in a macro to run a timer. I will probably write an addon later, since it seems useful.

Edit: And done.

Dridzt 09-13-12 12:03 AM

Oh, my bad, my mind went directly to the old totemstomper macros (for destroying enemy totems in pvp)

Didn't realize this was referring to own totems, I'll learn to pay more attention next time :o

On the other hand *arrgh*
Code:

/use EarthGrab Totem
/run local t=0;CreateFrame("Frame"):SetScript("OnUpdate",function(_,e)t=t+e>2 and DestroyTotem(2)end)

9 characters to spare (but it creates a new frame/function every time clicked ofc :p )

Phanx 09-13-12 05:50 AM

Okay, it's an addon now:
http://www.wowinterface.com/downloads/info21610

Phanx 09-13-12 05:56 AM

Quote:

Originally Posted by Dridzt (Post 263790)
3 characters too long (and it creates a new frame/function every time clicked ofc :p

Well, there's no space in "Earthgrab", so -1 character. Also, "/use" is equvalent to "/cast", so -1 more characters. Since the frame is never reused there's no need to assign it to a variable, so -4 more characters. It could fit, but creating a new frame and a new function every time you cast a totem is pretty horrible, plus making macros for every totem is pretty miserable... I don't think I'd even have enough macro slots left for that. :p

Macro-Wow 09-13-12 12:54 PM

Quote:

Originally Posted by Dridzt (Post 263790)
Oh, my bad, my mind went directly to the old totemstomper macros (for destroying enemy totems in pvp)

Didn't realize this was referring to own totems, I'll learn to pay more attention next time :o

On the other hand *arrgh*
Code:

/use EarthGrab Totem
/run local t=0;CreateFrame("Frame"):SetScript("OnUpdate",function(_,e)t=t+e>2 and DestroyTotem(2)end)

9 characters to spare (but it creates a new frame/function every time clicked ofc :p )

Nice macro, mind if I submit it to my site with you as the author?

Torhal 09-13-12 01:24 PM

I wouldn't advise anyone use that macro since it creates a new Frame object (which is immune to the Lua garbage collector) every time it's used.

Dridzt 09-13-12 01:26 PM

Quote:

Originally Posted by Macro-Wow (Post 263885)
Nice macro, mind if I submit it to my site with you as the author?

I'd rather you didn't :D
As noted this while it might work is a bad way to go about it as for every click it will create an anonymous frame and function for the garbage collector.

Or... if you insist, don't attach my name to it :p:p

Edit: Damn you Torhal, stop posting on top of me

Foxlit 09-13-12 05:54 PM

Quote:

Originally Posted by Dridzt (Post 263898)
As noted this while it might work is a bad way to go about it as for every click it will create an anonymous frame and function for the garbage collector.

I think that might be missing the forest for the trees; that macro simply doesn't work. As written, it won't actually destroy any totems. You can probably fix that within the character limit, but you also need to make sure it'll eventually stop destroying totems.

It seems like an easier course of action would be to find an addon that provides /in (maybe this), and then use
/cast Earthgrab Totem
/in 2 /run DestroyTotem(2)

Dridzt 09-13-12 06:03 PM

Quote:

Originally Posted by Foxlit (Post 263927)
I think that might be missing the forest for the trees; your macro doesn't work at all.

It seems like an easier course of action would be to find an addon that provides /in (maybe this), and simply use
/cast Earthgrab Totem
/in 2 /run DestroyTotem(2)

There's already an addon come out of this very thread.

Additionally my macro was drycoded and more a tongue in cheek comment than anything.
I can make it work with a couple parentheses is that the point? :p

Vlad 09-14-12 06:41 AM

Having CreateFrame in a macro to create frames without reusing will cause, in the long run, a lot of frames just staying in the background. Imagine playing active PVP for an hour, you probably spawned a thousand frames that do nothing after the totem has been destroyed. :P

Phanx 09-14-12 03:54 PM

Not to mention that every one of those frames will be running OnUpdate scripts... which just made me notice another problem, which is that the OnUpdate script never terminates, so after 2 seconds, it will try to cancel your earth totem every time a new video frame is drawn, which can be anywhere from 20-100 or more times every second. You'd be unable to use any earth totems for the rest of the session after using one such macro. :p

Macro-Wow 09-14-12 11:32 PM


Phanx 09-15-12 03:48 AM

Divided by zero? No, that guy just dropped his Nokia!


All times are GMT -6. The time now is 08:02 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI