[DotA] Invoker Auto-Hotkey Script

This is a discussion on [DotA] Invoker Auto-Hotkey Script within the Warcraft 3 Hacks, bots and tools board part of the Warcraft 3 forum category; Wynthar's DotA Invoker Auto-Hotkey Script Version 2 Alright, I have updated this invoker script. It's pretty slick now. The last ...

Page 1 of 3 123 LastLast
Results 1 to 10 of 23
  1. #1
    Wynthar's Avatar
    Wynthar is offline Advanced Hacker
    Array
    Join Date
    Feb 2009
    Location
    So Cal, USA
    Posts
    267
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    10
    Reputation
    243

    [DotA] Invoker Auto-Hotkey Script

    Wynthar's DotA Invoker Auto-Hotkey Script
    Version 2

    Alright, I have updated this invoker script. It's pretty slick now. The last one wouldn't let me be attacking or moving and switch spells and stuff. This one, instead of "pressing" the keys with the keyboard, it actually "clicks" the locations on the screen.

    Features:
    • 1 - 0 : Spells
    • = : rotate current power balls
    • F9, F10 : click the left and right spots of the invoker spells.



    How It Works


    In this screen shot: F9 would cast EMP, F10 would cast Sun Strike

    "Power Ball"
    This is the term that I use to refer to the balls that fly around invoker. When you press "E" three times (for Exort) you will see three red balls floating around invoker. You will also notice his damage goes up +3 each power ball. So +9 at level one. If you have trained up to level 7 Exort you will have a maximum of +63 damage if all three "power balls" are red (Exort). This is why it is handy that when the spells are invoked, it reverts back to the "current" power ball. Sometimes you have the Wes power balls set because you want increased move speed. Say maybe you are trying to run away, or get to a battle. Then you want to cast ice wall and keep running, well then it's nice to just press the number 3, and have it invoke ice wall so you have that spell prepared, then it also reverts back to three Wes balls so that you can keep running quickly. Same goes for the other power balls, like with Exort you want to keep the DPS high.

    In order to activate your "power balls" for the script to know which set you have, you must use the = key. You can find in the script where this key is mapped and change it if you want. It just is where I like to have it.

    Even if you don't have a particular power ball, pressing = will attempt to "press" that button three times. Just press [=] again and it will move to the next "power ball." Hope that makes sense. Just get into a single player game, pick invoker. Type -lvlup 25 and level up his spells and try playing around with the script.

    Spell Keys
    Pressing the following numbers will invoke the spell, then it will revert back to your current "power ball."



    1 Deafening Blast
    2 Chaos Meteor
    3 Ice Wall
    4 EMP
    5 Forge Spirits
    6 Ghost Walk
    7 Sun Strike
    8 Tornado
    9 Alacrity
    0 Cold Snap

    For Example
    If your current power ball is Quas, and you press the number 5. The script will quickly "Click" the Exort, Exort, Quas button, then Invoke, then Quas, Quas, Quas. This will result in preparing the forge spirits spell, and then going back to your quas "powerball."

    Of course you can remap all these keys by changing the letters in the script. Should be easy enough to find.
    (Hint: *1:: PrepBlast() is where it sets they number 1 to cast the Deafening Blast Spell)

    Code:
    #NoEnv
    SetWorkingDir %A_ScriptDir%
    #InstallKeybdHook
    SendMode Play
    Suspend On
    
    #IfWinActive, Warcraft III
    #UseHook On
    
    *F3:: 
    	Suspend
    	InitialSetup()
    	return
    InitialSetup()
    {
    	global
    
    	CurrentBallVar = 0
    	sleeptime = 150
    	
    	;SetColors()
      	GridSetup()
      	
    	if (A_IsSuspended)
        	SoundPlay *64
    	else
    		SoundPlay *48
    }
    
    *1:: PrepBlast()
    *2:: PrepMeteor()
    *3:: PrepIceWall()
    *4:: PrepEmp()
    *5:: PrepForge()
    *6:: PrepGhost()
    *7:: PrepSunStrike()
    *8:: PrepTornado()
    *9:: PrepAlacrity()
    *0:: PrepColdSnap()
    *=:: NextBall()
    *F9:: ClickLeftSpell()
    *F10:: ClickRightSpell()
    
    ClickLeftSpell()
    {
    	global
    	ClickSpot(x2, y2)
    	;ClickSpot(1355, 1050)
    }
    ClickRightSpell()
    {
    	global
    	ClickSpot(x3, y2)
    	;ClickSpot(1440, 1050)
    }
    ClickSpot(x, y)
    {
    	SetMouseDelay, 1, Play   
    	MouseGetPos, xpos, ypos
    	Send {Click %x%, %y%, L}
    	MouseMove, %xpos%, %ypos%
    	SetMouseDelay, -1, Play
    }  
    ClickStart()
    {
    	global
    	SetMouseDelay, 1, Play   
    	MouseGetPos, xpos, ypos
    }
    ClickFinish()
    {
    	global
    	MouseMove, %xpos%, %ypos%
    	SetMouseDelay, -1, Play
    }
    ClickQ()
    {
    	global
    	SendPlay {Click %x1%, %y3%, L}
    }
    ClickW()
    {
    	global
    	SendPlay {Click %x2%, %y3%, L}
    }
    ClickE()
    {
    	global
    	SendPlay {Click %x3%, %y3%, L}
    }
    ClickR()
    {
    	global
    	SendPlay {Click %x4%, %y3%, L}
    }
    
    PrepGhost()
    {
    	ClickStart()
    	ClickQ()
    	ClickQ()
    	ClickW()
    	ClickR()
    	; Go to 3 Wex balls for move speed.
    	ClickW()
    	ClickW()
    	CLickW()
    	ClickFinish()
    }
    
    PrepForge()
    {
    	ClickStart()
    	ClickE()
    	ClickE()
    	ClickQ()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepBlast()
    {
    	ClickStart()
    	ClickQ()
    	ClickW()
    	ClickE()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepMeteor()
    {
    	ClickStart()
    	ClickE()
    	ClickE()
    	ClickW()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    PrepIceWall()
    {
    	ClickStart()
    	ClickQ()
    	ClickQ()
    	ClickE()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepEmp()
    {
    	ClickStart()
    	ClickW()
    	ClickW()
    	ClickW()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepSunStrike()
    {
    	ClickStart()
    	ClickE()
    	ClickE()
    	ClickE()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepColdSnap()
    {
    	ClickStart()
    	ClickQ()
    	ClickQ()
    	ClickQ()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepAlacrity()
    {
    	ClickStart()
    	ClickW()
    	ClickW()
    	ClickE()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    PrepTornado()
    {
    	ClickStart()
    	ClickW()
    	ClickW()
    	ClickQ()
    	ClickR()
    	CurrentBall()
    	ClickFinish()
    }
    
    CurrentBall()
    {
    	global
    	if (CurrentBallVar = 0)
    	{
    		ClickQ()
    		ClickQ()
    		ClickQ()
    	}
    	else if (CurrentBallVar = 1)
    	{
    		ClickW()
    		ClickW()
    		ClickW()
    	}
    	else if (CurrentBallVar = 2)
    	{
    		ClickE()
    		ClickE()
    		ClickE()
    	}
    }
    
    NextBall()
    {
    	global
    	if (CurrentBallVar = 0)
    	{
    		CurrentBallVar = 1
    	}
    	else if (CurrentBallVar = 1)
    	{
    		CurrentBallVar = 2
    	}
    	else if (CurrentBallVar = 2)
    	{
    		CurrentBallVar = 0
    	}
    	
    	ClickStart()
    	CurrentBall()
    	ClickFinish()
    }
    
    
    GridSetup()   ;set up the screen coords for clicking
    {
      global
      WinGetPos,,, winWidth, winHeight, A
      
      x1:=(510*winWidth)//640
      x2:=(544*winWidth)//640
      x3:=(578*winWidth)//640
      x4:=(612*winWidth)//640
    
      y1:=(390*winHeight)//480
      y2:=(424*winHeight)//480
      y3:=(458*winHeight)//480
    
      sentinelx:=(13*winWidth)//640   ;Sentinel fountain
      sentinely:=(467*winHeight)//480
    
      scourgex:=(110*winWidth)//640   ;Scourge fountain
      scourgey:=(374*winHeight)//480
    
      selfx:=(200*winWidth)//640
      selfy:=(420*winHeight)//480
    }
    Just post any questions, comments, thanks, changes, ideas in this thread. If I don't reply within a day or two try to PM me. Sometimes I miss the threads.

  2. The Following 2 Users Say Thank You to Wynthar For This Useful Post:


  3. #2
    Sky_King's Avatar
    Sky_King is offline Hacker
    Array
    Join Date
    Mar 2009
    Location
    In the US now
    Posts
    161
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    9
    Reputation
    143
    Top notch quality as usual Wynthar. ofc

  4. #3
    Wolfszorn's Avatar
    Wolfszorn is offline Advanced Hacker
    Array
    Join Date
    Sep 2007
    Posts
    318
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    12
    Reputation
    212
    Great job! Great Support!

  5. #4
    NghtHwk652 is offline Newbie
    Array
    Join Date
    Jan 2009
    Posts
    8
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    0
    Reputation
    0
    so..this isn't a hack right? as in it doesn't change offsets so wont cause a ban from Warden right?

  6. #5
    sk8erboi's Avatar
    sk8erboi is offline Addict
    Array
    Join Date
    Mar 2009
    Location
    us
    Posts
    71
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    9
    Reputation
    10
    Quote Originally Posted by Wynthar View Post
    Wynthar's DotA Invoker Auto-Hotkey Script
    Version 2

    Alright, I have updated this invoker script. It's pretty slick now. The last one wouldn't let me be attacking or moving and switch spells and stuff. This one, instead of "pressing" the keys with the keyboard, it actually "clicks" the locations on the screen.

    Features:
    • 1 - 0 : Spells
    • = : rotate current power balls
    • F9, F10 : click the left and right spots of the invoker spells.



    How It Works


    In this screen shot: F9 would cast EMP, F10 would cast Sun Strike

    "Power Ball"
    This is the term that I use to refer to the balls that fly around invoker. When you press "E" three times (for Exort) you will see three red balls floating around invoker. You will also notice his damage goes up +3 each power ball. So +9 at level one. If you have trained up to level 7 Exort you will have a maximum of +63 damage if all three "power balls" are red (Exort). This is why it is handy that when the spells are invoked, it reverts back to the "current" power ball. Sometimes you have the Wes power balls set because you want increased move speed. Say maybe you are trying to run away, or get to a battle. Then you want to cast ice wall and keep running, well then it's nice to just press the number 3, and have it invoke ice wall so you have that spell prepared, then it also reverts back to three Wes balls so that you can keep running quickly. Same goes for the other power balls, like with Exort you want to keep the DPS high.

    In order to activate your "power balls" for the script to know which set you have, you must use the = key. You can find in the script where this key is mapped and change it if you want. It just is where I like to have it.

    Even if you don't have a particular power ball, pressing = will attempt to "press" that button three times. Just press [=] again and it will move to the next "power ball." Hope that makes sense. Just get into a single player game, pick invoker. Type -lvlup 25 and level up his spells and try playing around with the script.

    Spell Keys
    Pressing the following numbers will invoke the spell, then it will revert back to your current "power ball."

    1 Deafening Blast
    2 Chaos Meteor
    3 Ice Wall
    4 EMP
    5 Forge Spirits
    6 Ghost Walk
    7 Sun Strike
    8 Tornado
    9 Alacrity
    0 Cold Snap

    For Example
    If your current power ball is Quas, and you press the number 5. The script will quickly "Click" the Exort, Exort, Quas button, then Invoke, then Quas, Quas, Quas. This will result in preparing the forge spirits spell, and then going back to your quas "powerball."

    Of course you can remap all these keys by changing the letters in the script. Should be easy enough to find.
    (Hint: *1:: PrepBlast() is where it sets they number 1 to cast the Deafening Blast Spell)

    Code:
    #NoEnv
    SetWorkingDir %A_ScriptDir%
    #InstallKeybdHook
    SendMode Play
    Suspend On
    
    #IfWinActive, Warcraft III
    #UseHook On
    
    *F3:: 
        Suspend
        InitialSetup()
        return
    InitialSetup()
    {
        global
    
        CurrentBallVar = 0
        sleeptime = 150
        
        ;SetColors()
          GridSetup()
          
        if (A_IsSuspended)
            SoundPlay *64
        else
            SoundPlay *48
    }
    
    *1:: PrepBlast()
    *2:: PrepMeteor()
    *3:: PrepIceWall()
    *4:: PrepEmp()
    *5:: PrepForge()
    *6:: PrepGhost()
    *7:: PrepSunStrike()
    *8:: PrepTornado()
    *9:: PrepAlacrity()
    *0:: PrepColdSnap()
    *=:: NextBall()
    *F9:: ClickLeftSpell()
    *F10:: ClickRightSpell()
    
    ClickLeftSpell()
    {
        global
        ClickSpot(x2, y2)
        ;ClickSpot(1355, 1050)
    }
    ClickRightSpell()
    {
        global
        ClickSpot(x3, y2)
        ;ClickSpot(1440, 1050)
    }
    ClickSpot(x, y)
    {
        SetMouseDelay, 1, Play   
        MouseGetPos, xpos, ypos
        Send {Click %x%, %y%, L}
        MouseMove, %xpos%, %ypos%
        SetMouseDelay, -1, Play
    }  
    ClickStart()
    {
        global
        SetMouseDelay, 1, Play   
        MouseGetPos, xpos, ypos
    }
    ClickFinish()
    {
        global
        MouseMove, %xpos%, %ypos%
        SetMouseDelay, -1, Play
    }
    ClickQ()
    {
        global
        SendPlay {Click %x1%, %y3%, L}
    }
    ClickW()
    {
        global
        SendPlay {Click %x2%, %y3%, L}
    }
    ClickE()
    {
        global
        SendPlay {Click %x3%, %y3%, L}
    }
    ClickR()
    {
        global
        SendPlay {Click %x4%, %y3%, L}
    }
    
    PrepGhost()
    {
        ClickStart()
        ClickQ()
        ClickQ()
        ClickW()
        ClickR()
        ; Go to 3 Wex balls for move speed.
        ClickW()
        ClickW()
        CLickW()
        ClickFinish()
    }
    
    PrepForge()
    {
        ClickStart()
        ClickE()
        ClickE()
        ClickQ()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepBlast()
    {
        ClickStart()
        ClickQ()
        ClickW()
        ClickE()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepMeteor()
    {
        ClickStart()
        ClickE()
        ClickE()
        ClickW()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    PrepIceWall()
    {
        ClickStart()
        ClickQ()
        ClickQ()
        ClickE()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepEmp()
    {
        ClickStart()
        ClickW()
        ClickW()
        ClickW()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepSunStrike()
    {
        ClickStart()
        ClickE()
        ClickE()
        ClickE()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepColdSnap()
    {
        ClickStart()
        ClickQ()
        ClickQ()
        ClickQ()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepAlacrity()
    {
        ClickStart()
        ClickW()
        ClickW()
        ClickE()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    PrepTornado()
    {
        ClickStart()
        ClickW()
        ClickW()
        ClickQ()
        ClickR()
        CurrentBall()
        ClickFinish()
    }
    
    CurrentBall()
    {
        global
        if (CurrentBallVar = 0)
        {
            ClickQ()
            ClickQ()
            ClickQ()
        }
        else if (CurrentBallVar = 1)
        {
            ClickW()
            ClickW()
            ClickW()
        }
        else if (CurrentBallVar = 2)
        {
            ClickE()
            ClickE()
            ClickE()
        }
    }
    
    NextBall()
    {
        global
        if (CurrentBallVar = 0)
        {
            CurrentBallVar = 1
        }
        else if (CurrentBallVar = 1)
        {
            CurrentBallVar = 2
        }
        else if (CurrentBallVar = 2)
        {
            CurrentBallVar = 0
        }
        
        ClickStart()
        CurrentBall()
        ClickFinish()
    }
    
    
    GridSetup()   ;set up the screen coords for clicking
    {
      global
      WinGetPos,,, winWidth, winHeight, A
      
      x1:=(510*winWidth)//640
      x2:=(544*winWidth)//640
      x3:=(578*winWidth)//640
      x4:=(612*winWidth)//640
    
      y1:=(390*winHeight)//480
      y2:=(424*winHeight)//480
      y3:=(458*winHeight)//480
    
      sentinelx:=(13*winWidth)//640   ;Sentinel fountain
      sentinely:=(467*winHeight)//480
    
      scourgex:=(110*winWidth)//640   ;Scourge fountain
      scourgey:=(374*winHeight)//480
    
      selfx:=(200*winWidth)//640
      selfy:=(420*winHeight)//480
    }
    Just post any questions, comments, thanks, changes, ideas in this thread. If I don't reply within a day or two try to PM me. Sometimes I miss the threads.

    Thanks for sharing...


  7. #6
    CerberPl is offline Newbie
    Array
    Join Date
    Jan 2009
    Posts
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    9
    Reputation
    2
    Hey there
    Big thanks for the effort but i got a better one - i used your previous - number 1 - script and changed it.
    Keyboard press is way better than clicking on screen you just had to change your script to:
    Code:
    PrepGhost()
    {
    	SendPlay {z 2}
    	SendPlay x
    	SendPlay v
    	; Go to 3 Wex balls for move speed.
    	SendPlay {x 3}
    }
    
    PrepForge()
    {
    	SendPlay {c 2}
    	SendPlay z
    	SendPlay v
    	CurrentBall()
    }
    
    PrepBlast()
    {
    	SendPlay z
    	SendPlay x
    	SendPlay c
    	SendPlay v
    	CurrentBall()
    	
    }
    
    PrepMeteor()
    {
    	SendPlay {c 2}
    	SendPlay {x}
    	SendPlay {v}
    	CurrentBall()
    }
    
    PrepIceWall()
    {
    	SendPlay {z 2}
    	SendPlay c
    	SendPlay v
    	CurrentBall()
    }
    
    PrepEmp()
    {
    	SendPlay {x 3}
    	SendPlay v
    	CurrentBall()
    }
    
    PrepSunStrike()
    {
    	SendPlay {c 3}
    	SendPlay v
    	CurrentBall()
    }
    
    PrepColdSnap()
    {
    	SendPlay {z 3}
    	SendPlay v
    	CurrentBall()
    }
    
    PrepAlacrity()
    {
    	SendPlay {x 2}
    	SendPlay c
    	SendPlay v
    	CurrentBall()
    }
    
    PrepTornado()
    {
    	SendPlay {x 2}
    	SendPlay z
    	SendPlay v
    	CurrentBall()
    }
    Basicly: you only need to change X->x ; Z->z V->v etc.
    It works great and now i can kickass with invoker
    Last edited by CerberPl; 04-27-2009 at 09:11 AM.

  8. The Following User Says Thank You to CerberPl For This Useful Post:


  9. #7
    Wynthar's Avatar
    Wynthar is offline Advanced Hacker
    Array
    Join Date
    Feb 2009
    Location
    So Cal, USA
    Posts
    267
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    10
    Reputation
    243
    I will test this today!! If this is true that would be so awesome!

    The problem I was having was when I was moving, if I tried to press one of the hotkeys it would finish moving before running the script. If this fixes it I will give you major credits. :-) Thanks for the feedback.

    [Edit] WOW! Dude! I can't believe all I needed was lowercase letters! That just absolutely blows me away! HAHA! I'm so exicted. Dude. I have so much more invoker stuff that I will share now. I had another idea that I stopped working on because of this problem. Thanks for sharing!
    Last edited by Wynthar; 04-27-2009 at 08:02 PM. Reason: Tested

  10. #8
    NghtHwk652 is offline Newbie
    Array
    Join Date
    Jan 2009
    Posts
    8
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    0
    Reputation
    0
    wait so Wynthar, is this a "hack" or just a script that tells where the mouse to click basically

  11. #9
    Wynthar's Avatar
    Wynthar is offline Advanced Hacker
    Array
    Join Date
    Feb 2009
    Location
    So Cal, USA
    Posts
    267
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    10
    Reputation
    243
    This thread is in the "tools" section. It is not a "hack." This is a script for AutoHotKey. My code tells the mouse where to click. My next version (v3) thanks to CerberPl will press buttons to execute these commands. In addition I read the colors on the screen to figure which spells are currently invoked.

  12. #10
    shordy-boi is offline Newbie
    Array
    Join Date
    Dec 2008
    Posts
    2
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    0
    Reputation
    0
    how can i use it? where ihad to put the code in?

Page 1 of 3 123 LastLast

Similar Threads

  1. Auto Warkey,Auto hotkey
    By USMC-Syndicate in forum Warcraft 3 Hacks, bots and tools
    Replies: 2
    Last Post: 06-15-2009, 06:47 PM
  2. Antfamous Gauntlet Bot v1.8 for mmBot
    By tschoerk in forum Diablo 2 Hacks
    Replies: 9
    Last Post: 04-29-2009, 02:33 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •