Jump to content


Photo

The AutoHotKey Thread


  • Please log in to reply
145 replies to this topic

#21 Daidalos

Daidalos

    Great Tiger

  • Members
  • 872 posts

Posted 22 May 2008 - 02:43 PM

The author states in the comment section, "Spamming will become counter-productive with the new system, and I expect noticeably so if your average latency is above 150ms (as you get twice that amount since the signal needs a round-trip)." This is madness. '150ms latency' refers to a 150ms round-trip time, not 300.

I don't believe his diagrams show the whole picture, either. The nature of cast mechanics are largely theoretical since we can't see the code ourselves. The true test of any theory is whether it allows one to make accurate predictions. The one prediction that I see coming from this theory is that "spamming will result in a larger penalty than timing." However, I have anecdotal and measured data from numerous subjects which counters this assertion flatly.

Fact 1: Casting interval as measured by LagInfo | World of Warcraft Addons | Curse (records the time between client-side cast completion and cast start) is drastically reduced in all observed cases using AHK over manual timing. For consecutive casts of the same spell, an interval of 0ms can be achieved reliably.

Fact 2: Manually parsing combat logs in Excel, the interval between CAST_START messages have shown intervals consistently well below round-trip time. Test results here: http://elitistjerks....0-post1654.html

Anecdote 1: Using AHK with a 4:1 spell rotation I was able to achieve 2k DPS as an elemental shaman w/o 4-set bonus (=http://wowwebstats.com/bvswaybvv5rdo?s=15245,15359).

There is no observable "spam penalty."


In my experience I have never achienve an average 0 ms between casts but mine has dropped from 150ish to about 40ms which is still quite nice. Of course it also saved my poor hand from the frenetic button smashing since that would actually lower my healing output by taking my finger off the key.
Restoration Shaman calculations:http://spreadsheets....0IWv3sPmcYnEJUg

#22 Ragnor

Ragnor

    King Hippo

  • Members
  • 606 posts

Posted 22 May 2008 - 03:15 PM

How would you know in advance if one patch blizzard adds detection for autohotkey to Warden. It's probably not worth the risk tbh.
The universe is run by the complex interweaving of three elements. Energy, matter, and enlightened self-interest.

www.retpaladin.com

#23 Larlar

Larlar

    Glass Joe

  • Members
  • 9 posts

Posted 22 May 2008 - 03:37 PM

I tested out AHK last week as elemental and found it to be great but I have a few questions.

#showtoolip <Spell>
/console Sound_EnableSFX 0
/run UIErrorsFrame:Hide()
/cast <Spell>
/run UIErrorsFrame:Clear()
/run UIErrorsFrame:Show()
/console Sound_EnableSFX 1


I was tempted to use a macro like the above while testing AHK, since I use a similar macro on my heals, but after reading about added latency from attempting to use trinkets/cooldowns in a macro I decided to just bind the spell itself to keep it simple and just put up with the annoying sounds. Has anyone done any tests to compare latency with a macro like the above compared to just casting the spell?

Secondly Daidalos, how exactly do you use AHK with your heals? I really wanted to use it to increase my HPS but I figured that one miscast heal will probably negate any advantage AHK would give me. Using grid with mouseover macros (with the sound turned off like above), holding down my chain heal button while dragging across grid could cause problems. Do you use it situationally or have you switched over to using it full time and I just need to get use to it?

#24 richard

richard

    Piston Honda

  • Members
  • 143 posts

Posted 22 May 2008 - 05:16 PM

To change the number, you would simple replace all three 2's or all three 6's. I wrote this just by looking at the AHK documentation so I suspect there are more clever methods and additions people will come up with.


I tried this, but it's giving me an error now. I replaced all the 6's with 3's like this:

#ifWinActive World of Warcraft
{
$2::
   Loop  
   {
    if not GetKeyState("2", "P")
      break
     Send 2 
     sleep 1
    }
return
$3::
   Loop  
   {
    if not GetKeyState("3", "P")
      break
     Send 3 
     sleep 1
    }}
return

But it's giving me an error, that a "return" is expected on line 19 prior to the second "}". So I just tried placing the return in between the last 2 }'s (I'm a total programming noob), but to no avail. Any ideas?

Great find by the way, the 2 hotkey spamming is awesome.

#25 Larlar

Larlar

    Glass Joe

  • Members
  • 9 posts

Posted 22 May 2008 - 05:25 PM

But it's giving me an error, that a "return" is expected on line 19 prior to the second "}". So I just tried placing the return in between the last 2 }'s (I'm a total programming noob), but to no avail. Any ideas?


Theres just a typo in the code snippet by Skyhoof. The code you want is:

#ifWinActive World of Warcraft
{
$2::
   Loop  
   {
    if not GetKeyState("2", "P")
      break
     Send 2 
     sleep 1
    }
return
$3::
   Loop  
   {
    if not GetKeyState("3", "P")
      break
     Send 3 
     sleep 1
    }
return
}

Notice I moved the the curly bracket on the second last line to after the return statement.

#26 Skyhoof

Skyhoof

    Don Flamenco

  • Members
  • 369 posts

Posted 22 May 2008 - 09:02 PM

That typo might explain some problems I've had modifying that code. Thanks for fixing it. I updated the first post.

With some help from Daidalos, I figured how to change it to mouse clicks instead of a key. It seems you need to use { } after "Send" with mouse buttons, although not number keys. I'm currently trying to see if I can use AHK for healing but I need to add a toggle to this code because the mouse clicks are used for too many other functions in the game.

#ifWinActive World of Warcraft
{
$RButton::
   Loop  
   {
    if not GetKeyState("RButton", "P")
      break
     Send {RButton} 
     sleep 1
    }
return
$LButton::
   Loop  
   {
    if not GetKeyState("LButton", "P")
      break
     Send {LButton} 
     sleep 1
    }
return
}


#27 Larlar

Larlar

    Glass Joe

  • Members
  • 9 posts

Posted 23 May 2008 - 01:39 AM

I'll post the script I used while elemental. It's not perfect but but I liked the idea of it (which I stole from the elemental thread).

#ifWinActive World of Warcraft
{
$3::
$!3::
$+3::
    Loop
    {
      if not GetKeyState("3", "P")
        break
      if GetKeyState("LAlt", "P")
        Send !3
      else if GetKeyState("LShift", "P")
        Send +3
      else
        Send 3
      Sleep 1
    }
return
}

I would bind LB to '3', CL to 'Alt+3', and my macro which tries to pop all CDs to 'Shift+3'. I just hold down '3' and LB spam starts, hold alt every 4th cast to CL then release as CL is casting, and hold shift whenever one of my CDs come up. The same sort of thing could be used for most casters I think, maybe even healers with different ranks.

#28 Shuth

Shuth

    Glass Joe

  • Members
  • 9 posts

Posted 23 May 2008 - 12:43 PM

By the way, the Blizzard CMs and GMs aren't always the sole voice of authority. Sometimes they don't have access to all of the information and can give conflicting replies. If you ever really, truly want to find out Blizzard's stance on an issue like this, send them an email and see what they say.


I sent an email to Blizzard including a copy of the script as well as links to this thread and to the AutoHotKey website. I asked about their stance on this usage for holding a key to spam a spell, in my case Fireball, and the response I received was:

As long as it doesn’t try to get around our global cooldown rules it should be ok.



#29 smoo86

smoo86

    Glass Joe

  • Members
  • 14 posts

Posted 23 May 2008 - 07:39 PM

I cant read the script properly, so what do I have to do, to get the Script spam my button 1 without me having spamming the button 1 or holding it down?

#30 Tymir

Tymir

    Von Kaiser

  • Members
  • 88 posts

Posted 24 May 2008 - 12:42 AM

I cant read the script properly, so what do I have to do, to get the Script spam my button 1 without me having spamming the button 1 or holding it down?


Break the ToU. Seriously though, can I ask that people do not use AHK for these types of purposes, if AHK comes into widespread use for exploiting the party will be up even for those of us who use AHK for legitimate means.

#31 smoo86

smoo86

    Glass Joe

  • Members
  • 14 posts

Posted 24 May 2008 - 09:25 AM

Sorry, I didnt know that this would break the ToU. Wouldnt want to do that. I just hoped I could get rid of spamming the Shadowbolt Key... but, yes I see that would be exploiting/botting. But with a ALT / Shift Use of Trinkets and CDs its still pretty nice.

#32 mikex

mikex

    Von Kaiser

  • Members
  • 24 posts

Posted 25 May 2008 - 06:23 PM

I spoke with a GM about the legality of this tool for the purpose of holding down a key and having that key then spammed over and over. He told me that as long as you are sitting at the computer performing the action then it's perfectly ok.

#33 Noraj

Noraj

    Don Flamenco

  • Members
  • 406 posts

Posted 26 May 2008 - 10:01 PM

Is there any way to set a key to suspend the program? I know it's possible to suspend the script, but I don't know if it's possible or how to bind that to a key. I use a lot of letters for keybindings with my G15, and typing with Autohotkey on in-game is next to impossible.

All I'm looking for is a way to use, say my = key to toggle the rest of it on and off.

EDIT: Nevermind. I found it in the documentation:
^!s::Suspend  ; Assign the toggle-suspend function to a hotkey.

"The question is not how far we are going to take it... the question is, do you possess the constitution to go as far as needed?" - Il Duce

#34 arison

arison

    King Hippo

  •  Patrons
  • 578 posts

Posted 26 May 2008 - 11:05 PM

Apparently they're getting more uptight about this. BRK (shudder) supposedly has some information straight from a Blue (Tchann):

The next step up from that contains the special keyboards and keypress software. The keyboards themselves are perfectly okay to use, as is the software that makes them work. What can get a user actioned is when they use the macro software to include delays, since that bypasses Blizzard’s .lua code in order to automatically perform an extra action. The same goes for the keypress software in which you constantly hold down one key to spam a single action. This is the level of automation that Blizzard begins banning at.


(source: BigRedKitty Her Pet Should Be Named, “Chico”)

This makes me skeptical that just repeating a key is okay... which is rather annoying as a hunter.

#35 Chlor

Chlor

    Glass Joe

  • Members
  • 8 posts

Posted 26 May 2008 - 11:36 PM

This is ridiculous - you can perform exactly the same function by mashing a key as what is proposed here. I spoke with a GM last night and the response was essentially that you are very unlikely to receive any sort of in-game action *IF* all you are doing is spamming a key with it. Obviously Blizzard won't come out and say the use of such tools is 'OK' since that opens the door to all sorts of exploits and workarounds that aren't intended with current game mechanics.

I hate to say it but this would be a non-issue if ability use latency was similar for all players no matter their geographic location. Since its not really reasonable to expect the same actual network latency across the board, they need to come up with an alternate method of managing this - like a spell queue that is one-deep.

In any event, I'm going to continue using AHK until such time as a better solution is implemented.

#36 Gishava

Gishava

    Glass Joe

  • Members
  • 1 posts

Posted 27 May 2008 - 03:21 AM

Apparently they're getting more uptight about this. BRK (shudder) supposedly has some information straight from a Blue (Tchann):


Tchann isn't blue, but she does know that of which she speaks. FYI.

#37 sag_ich_nicht

sag_ich_nicht

    Von Kaiser

  • Members
  • 30 posts

Posted 27 May 2008 - 03:40 AM

#showtoolip <Spell>
/console Sound_EnableSFX 0
/run UIErrorsFrame:Hide()
/cast <Spell>
/run UIErrorsFrame:Clear()
/run UIErrorsFrame:Show()
/console Sound_EnableSFX 1
(I'm sure this could be shortened to two or three lines but it works for me and I have the spare macro space)

This disables error message sounds, then hides the error frame, then (attempts to) cast the spell. Once done, it clears the error frame and un-hides it then turns error sounds back on.

This is unnecessary, the frame is only rendered after the macro is run, thus this:
#showtoolip <Spell>
/console Sound_EnableSFX 0
/cast <Spell>
/run UIErrorsFrame:Clear()
/console Sound_EnableSFX 1
works just as well and improves FPS should you spam it.

#38 manly

manly

    Soda Popinski

  • Guild Members
  • 3,596 posts

Posted 27 May 2008 - 06:53 PM

The real question is, what is the point to prevent players mashing furiously the same key repeatedly ? I can use my G15/N52/AHK to repeat the same keystroke because I need to pad up the fact that blizzard has no server-side spell queue. Should it really a bannable offense to automate pressing the same key repeatedly, considering I could bind fireball to mouse scroll, and buy a free-spin scroll mouse ?

If all of this doesn't work, then the new razer mouse support also scripts.
<Eej> YOU"RE GONNA PULL
<Eej> IF YOU SQUEEZE OFF ANOTHER ARCANE BLAST
<Spectear> You've obviously never played with Manly.
<Spectear> That's hardly a reason to stop DPS.
Very Manly Staff

#39 valeea

valeea

    Von Kaiser

  • Members
  • 58 posts

Posted 28 May 2008 - 02:19 PM

I tested the macro for AHK and it indeed works, this should minimize, if not completely eliminate any lag issue.
but i have a rather cosmetic request. When i hold down my fireball button the cast of course is not yet finishet when the global cooldown ist. so after the GCD is finished (FB still casting) the next cast already wants to start. this causes all the buttons ingame to start the "GCD clock animation" (hope you know what i mean) which is immediately resettet due to the fact that no cast can bemade. this causes the buttons to flicker annoyingly...

perhaps you can solve this

#40 DarthGreg

DarthGreg

    Von Kaiser

  • Members
  • 71 posts

Posted 28 May 2008 - 07:54 PM

Saw this thread and got pretty excited about how this could reduce the absurd number of keystrokes I make as a raiding Warrior, so I wrote a quick script that allowed all of my in-game abilities to be repeated by holding down the key. It worked beautifully doing dailies and farming up some raid consumables, but when we zoned into Hyjal I found that using any of my abilities ground my WoW to a halt - leaving my computer hanging until I released the key. Turning the script off fixed it immediately. Here is what I was using:

#ifWinActive World of Warcraft
{
+r::
   Send +r
   sleep 150
   Loop  
   {
    if not GetKeyState("r", "P")
      break
     Send +r 
     sleep 1
    }
return
...
}
... denotes about 30 other hotkeys using the same format.

Is there a way to make this work for me in raids, or am I SOL?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users