|
You last visited: Today at 15:34
Advertisement
[SCRIPT] WASD AutoIT
Discussion on [SCRIPT] WASD AutoIT within the Diablo 3 Hacks, Bots, Cheats & Exploits forum part of the Diablo 3 category.
06/07/2012, 01:05
|
#1
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
[SCRIPT] WASD AutoIT
Credits to :
To release D3 alternate Controls.
###############
What this is
###############
This is the AutoIT version of the script and probably works good enough, while being easy to understand.
Especially as a easy level AutoIT script.
###############
HOWTO:
###############
1) Remove keybindings for W , A , S , D in your D3 Settings.
2) Bind Middle Mouse Button (MouseWheel Click) to "Movement" in your D3 Settings.
3) Enjoy WASD movement ingame.
*If something does not work, you can either adjust the values in the source yourself, or give feedback here. If something does not work, its most likely easy to fix it yourself in the sourcecode (as the script itself is easy level).
###############
Known Issues
###############
- As it comes, the script is made for 1920x1080 in fullscreen-Window mode. Anything else needs adjustments, which should actual be quite easy to do.
- If the game zooms out, in rare cases (like Belial) the mapped coords will not work as they do normally. So either you input 2 coords and switch between them, or you simply make 2 scripts and just run the Belial one or the normal.
- Similiar in rares situations something blocks the MouseClick to move. Some objects in the front can produce this, potential work around clicks on different positions instead of just a singel fixed one.
CODE HERE
Code:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: TheOnlyOne
Script Function:
Play with WASD to move.
Credits to http://code.google.com/p/diablo-iii-wasd/ for good alternate control ideas for d3
#ce ----------------------------------------------------------------------------
;~ #RequireAdmin
#include <Misc.au3>
_Singleton(@ScriptName)
OnAutoItExitRegister ( "_exit" )
AutoItSetOption ( "MouseCoordMode", 2)
Global $winTitle = "Diablo III"
Global $hWnd = WinGetHandle($winTitle)
Global $user32dll = DllOpen("user32.dll")
;~ HotKeySet("{ESC}", "_exit")
Func _exit()
DllClose($user32dll)
Exit 0
EndFunc
Global $up_key = 57 ;W
Global $left_key = 41 ;A
Global $down_key = 53 ;S
Global $right_key = 44 ;D
Global $up_pressed
Global $down_pressed
Global $left_pressed
Global $right_pressed
Global $doMove = false
Global $clientSize = WinGetClientSize($winTitle)
Global $Middle_Of_Win_X = $clientSize[0] / 2
Global $Middle_Of_Win_Y = $clientSize[1] / 2 - 32
Func _checkPressedKeys()
$up_pressed = _IsPressed($up_key, $user32dll)
$down_pressed = _IsPressed($down_key, $user32dll)
$left_pressed = _IsPressed($left_key, $user32dll)
$right_pressed = _IsPressed($right_key, $user32dll)
if ($up_pressed OR $down_pressed OR $left_pressed OR $right_pressed) Then
if ($doMove == false) Then
$doMove = true
EndIf
Else
if ($doMove == true) Then
$doMove = false
EndIf
EndIf
EndFunc
Func _doMove()
local $x = $Middle_Of_Win_X
local $y = $Middle_Of_Win_Y
if ($up_pressed) Then
$y = $y -10
EndIf
if ($down_pressed) Then
$y = $y +10
EndIf
if ($left_pressed) Then
$x = $x -14
EndIf
if ($right_pressed) Then
$x = $x +14
EndIf
ControlClick($winTitle, "", $hWnd, "middle", 1, $x, $y)
EndFunc
while WinExists($winTitle)
if (WinActive($winTitle)) Then
_checkPressedKeys()
if ($doMove == true) Then
_doMove()
EndIf
EndIf
WEnd
Erweiterter Code mit "Doppel" Drücken der WASD Tasten werden ebenfalls die Skill 1,2,3,4 betätigt.
Schon ein Stück größer, aber nicht viel komplizierter.
Zudem eine "Pause" Funktion, damit man das Script nicht komplett abschalten muss zum Chatten.
CODE HERE
Code:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: TheOnlyOne
Script Function:
Play with WASD to move.
Credits to http://code.google.com/p/diablo-iii-wasd/ for good alternate control ideas for d3
#ce ----------------------------------------------------------------------------
;~ #RequireAdmin
#include <Misc.au3>
_Singleton(@ScriptName)
AutoItSetOption("MouseCoordMode", 2)
Global $winTitle = "Diablo III"
If (Not WinExists($winTitle)) Then
MsgBox("", $winTitle & " Window does not exist.", "")
Exit 0
EndIf
Global $hWnd = WinGetHandle($winTitle)
Global $user32dll = DllOpen("user32.dll")
OnAutoItExitRegister("_exit")
HotKeySet("{END}", "_exit")
Func _exit()
DllClose($user32dll)
Exit 0
EndFunc ;==>_exit
HotKeySet("{PAUSE}", "_pause")
Global $paused = False
Func _pause()
$paused = Not $paused
If ($paused) Then
ToolTip("PAUSED", 0, 0)
EndIf
While ($paused)
Sleep(10)
WEnd
EndFunc ;==>_pause
Global $up_key = 57 ;W
Global $left_key = 41 ;A
Global $down_key = 53 ;S
Global $right_key = 44 ;D
Global $up_pressed
Global $down_pressed
Global $left_pressed
Global $right_pressed
Global $doMove = False
Global $clientSize = WinGetClientSize($winTitle)
Global $Middle_Of_Win_X = $clientSize[0] / 2
Global $Middle_Of_Win_Y = $clientSize[1] / 2 - 32
HotKeySet("{ä}", "_moveToMiddle")
Func _moveToMiddle()
MouseMove($Middle_Of_Win_X, $Middle_Of_Win_Y)
EndFunc
Global $count_up_pressed
Global $count_down_pressed
Global $count_left_pressed
Global $count_right_pressed
Global $Timer_up_pressed
Global $Timer_down_pressed
Global $Timer_left_pressed
Global $Timer_right_pressed
Global $hotkey_double_press_up = 1
Global $hotkey_double_press_down = 2
Global $hotkey_double_press_left = 3
Global $hotkey_double_press_right = 4
Global $delay_for_double_press = 300
Func _checkPressedKeys()
Local $old_up_pressed = $up_pressed
Local $old_down_pressed = $down_pressed
Local $old_left_pressed = $left_pressed
Local $old_right_pressed = $right_pressed
$up_pressed = _IsPressed($up_key, $user32dll)
$down_pressed = _IsPressed($down_key, $user32dll)
$left_pressed = _IsPressed($left_key, $user32dll)
$right_pressed = _IsPressed($right_key, $user32dll)
If ($old_up_pressed And Not $up_pressed) Then
$count_up_pressed += 1
If ($count_up_pressed == 1) Then
$Timer_up_pressed = TimerInit()
Else
If (TimerDiff($Timer_up_pressed) < $delay_for_double_press) Then
$count_up_pressed = 0
ControlSend($winTitle, "", $hWnd, $hotkey_double_press_up)
Else
$count_up_pressed = 1
$Timer_up_pressed = TimerInit()
EndIf
EndIf
EndIf
If ($old_down_pressed And Not $down_pressed) Then
$count_down_pressed += 1
If ($count_down_pressed == 1) Then
$Timer_down_pressed = TimerInit()
Else
If (TimerDiff($Timer_down_pressed) < $delay_for_double_press) Then
$count_down_pressed = 0
ControlSend($winTitle, "", $hWnd, $hotkey_double_press_down)
Else
$count_down_pressed = 1
$Timer_down_pressed = TimerInit()
EndIf
EndIf
EndIf
If ($old_left_pressed And Not $left_pressed) Then
$count_left_pressed += 1
If ($count_left_pressed == 1) Then
$Timer_left_pressed = TimerInit()
Else
If (TimerDiff($Timer_left_pressed) < $delay_for_double_press) Then
$count_left_pressed = 0
ControlSend($winTitle, "", $hWnd, $hotkey_double_press_left)
Else
$count_left_pressed = 1
$Timer_left_pressed = TimerInit()
EndIf
EndIf
EndIf
If ($old_right_pressed And Not $right_pressed) Then
$count_right_pressed += 1
If ($count_right_pressed == 1) Then
$Timer_right_pressed = TimerInit()
Else
If (TimerDiff($Timer_right_pressed) < $delay_for_double_press) Then
$count_right_pressed = 0
ControlSend($winTitle, "", $hWnd, $hotkey_double_press_right)
Else
$count_right_pressed = 1
$Timer_right_pressed = TimerInit()
EndIf
EndIf
EndIf
If ($up_pressed Or $down_pressed Or $left_pressed Or $right_pressed) Then
If ($doMove == False) Then
$doMove = True
EndIf
Else
If ($doMove == True) Then
$doMove = False
EndIf
EndIf
EndFunc ;==>_checkPressedKeys
Func _doMove()
Local $x = $Middle_Of_Win_X
Local $y = $Middle_Of_Win_Y
If ($up_pressed) Then
$y = $y - 10
EndIf
If ($down_pressed) Then
$y = $y + 10
EndIf
If ($left_pressed) Then
$x = $x - 14
EndIf
If ($right_pressed) Then
$x = $x + 14
EndIf
ControlClick($winTitle, "", $hWnd, "middle", 1, $x, $y)
EndFunc ;==>_doMove
WinActivate($winTitle)
While WinExists($winTitle)
If (WinActive($winTitle)) Then
_checkPressedKeys()
If ($doMove == True) Then
_doMove()
EndIf
EndIf
WEnd
_exit()
|
|
|
06/07/2012, 11:02
|
#2
|
elite*gold: 185
Join Date: May 2008
Posts: 3,646
Received Thanks: 603
|
Sehr praktisches Script!
|
|
|
06/07/2012, 13:11
|
#3
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by epiTR
Sehr praktisches Script!
|
So solls sein. Hat man sich einmal dran gewöhnt mag man es gar nicht mehr missen ^^
|
|
|
06/07/2012, 13:30
|
#4
|
elite*gold: 0
Join Date: Jul 2008
Posts: 37
Received Thanks: 2
|
naja bissel doof das mit dem drücken von esc das script beendet wird -.-
ps: einfach den part des codes entfernen falls es jemanden genauso stört wie mich :
Quote:
HotKeySet("{ESC}", "_exit")
Func _exit()
DllClose($user32dll)
Exit 0
EndFunc
|
|
|
|
06/07/2012, 14:48
|
#5
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by Priestr
naja bissel doof das mit dem drücken von esc das script beendet wird -.-
ps: einfach den part des codes entfernen falls es jemanden genauso stört wie mich :
|
Die _exit Function lieber lassen, den Hotkey einfach auskommentieren.
*Den die DLL zu schließen ist sicherer als sie offen zu lassen.
|
|
|
06/07/2012, 15:05
|
#6
|
elite*gold: 0
Join Date: Sep 2010
Posts: 18
Received Thanks: 2
|
Hey ich finde es von der Idee super aber weißt du was Blizzard davon hält? ich habe keine lust, dass mein Account für so etwas gebannt wird
|
|
|
06/07/2012, 15:50
|
#7
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by wontax93
Hey ich finde es von der Idee super aber weißt du was Blizzard davon hält? ich habe keine lust, dass mein Account für so etwas gebannt wird 
|
Gleiche leier wie immer.
Chance das du gebannt wirst sollte trotzdem gegen 0 gehen , es ist macht ja wirklich nichts anderes als das du deine Maus nicht wie ein "gestörter" hin und her bewegen musst (damit du bewegen und schießen machen kannst).
Also wenn du allein durch so ein Script gebannt wirst, dann ist die Lächerlichkeits stufe ohnehin schon sehr hoch.
Wie gesagt, die Chance dürfte so hoch sein wie auf offener Straße bei Sonnenschein vom Blitz getroffen zu werden.
|
|
|
06/07/2012, 16:50
|
#8
|
elite*gold: 20
Join Date: Feb 2009
Posts: 3,100
Received Thanks: 922
|
Quote:
Originally Posted by TheOnlyOne652089
Gleiche leier wie immer.
Chance das du gebannt wirst sollte trotzdem gegen 0 gehen , es ist macht ja wirklich nichts anderes als das du deine Maus nicht wie ein "gestörter" hin und her bewegen musst (damit du bewegen und schießen machen kannst).
Also wenn du allein durch so ein Script gebannt wirst, dann ist die Lächerlichkeits stufe ohnehin schon sehr hoch.
Wie gesagt, die Chance dürfte so hoch sein wie auf offener Straße bei Sonnenschein vom Blitz getroffen zu werden.
|
naja, so Lächerlich finde ich das nicht und Bliz denk ich mal auch nicht
anschauen und jeder kann selber endscheiden ob er es laufen lässt oder nicht
no risk no fun
|
|
|
06/08/2012, 16:03
|
#9
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Bei Belial funktioniert das Script nicht so richtig, da die Ansicht heraus zoomt und sich etwas verändert.
|
|
|
06/13/2012, 23:55
|
#10
|
elite*gold: 0
Join Date: Feb 2005
Posts: 407
Received Thanks: 31
|
Das laufen und gleichzeitig schießen hatte ich mir irgendwie anders vorgestellt.
Trotzdem Danke für die Arbeit
(push)
|
|
|
06/14/2012, 00:06
|
#11
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by cerxis
Das laufen und gleichzeitig schießen hatte ich mir irgendwie anders vorgestellt.
Trotzdem Danke für die Arbeit
(push)
|
Kannst mir gerne mitteilen "wie" du dir das vorgestellt hast.
Ein "hack" ist es in jedem fall nicht damit du dich ständig bewegen kannst.
Es ist eben eine WASD Steuerung, der Vorteil liegt schlicht darin das du dich nach "unten" bewegen kannst (oder sonst wo hin) und in die entgegen gesetzte Richtung schießen kannst, ohne mit der Maus im 1/3 sekunde Takt auf den Gegner und wieder zum bewegen zu klicken (den das ist absolut fürn popo).
So wie es ist sendet er permanent einen "move" und bewegt sich damit in jeder Situation in der er sich bewegen kann / also genau zwischen den Angriffen.
Das ganze macht als DH sinn, mit genügend attack speed wird man das mit der Maus ansonsten nicht mehr hinbekommen.
Die Zeit zwischen den Angriffen ist natürlich kürzer als die Angriffsanimation an sich ; deshalb braucht es genügend Attack Speed damit man sich ordentlich im stutter step bewegen kann (also kleine Schritt nach jedem Schuß).
Prinzipiell ist es natürlich möglich das man einen Timer einbaut um "mehr" zu laufen, das würde aber im Endeffekt nur den Attack Speed verringern, da man ja extra nicht angreift (was deutlich weniger Schaden bedeutet).
Willst du das aber machen, kurz Gedanken wie man das machen könnte (es ist nur nicht wahnsinnig sinnvoll).
Schau ob die entsprechende Maustaste / taste für den Angriff gedrückt wird (in der "echten" Welt) und unterdrücke das Signal in einem Timer (also es sendet die gedrückte Taste einfach nicht, bzw. nur in dem Zeitabstand der Wahl).
Extra für den DH ist es auch ganz witzig den "Salto" auf die E Taste zu legen, damit man während dem WASD steuern auch jederzeit "weghüpfen" kann.
Die anderen Skillz liegen dann auf 123 genau über dem WASD Feld.
Hat deine Maus weitere Makro tasten kann man sogar andere Key dort hin verlagern, damit man sie nicht mit der WASD-Hand drücken muss (der Daumen an der Maus ist sowieso unterfordert).
Spiele, wenn ich mal noch spiele, nur noch mit WASD, weil die normale Maus Steuerung für die Bewegung einfach komplett veraltet ist (und absolut unnötig, da WASD ja wirklich leicht zu modden ist).
|
|
|
06/14/2012, 03:10
|
#12
|
elite*gold: 0
Join Date: Feb 2005
Posts: 407
Received Thanks: 31
|
Ist schon alles richtig was du sagst und macht auch Sinn, dass man in die entgegengesetzte Richtung schießen kann während man sich bewegt.
Vielleicht muss ichs noch etwas testen. War vielleicht einfach nur sehr ungewohnt, wenn man über 1 Woche (ingame) lang die Standardsteuerung nutzen musste.
Denn für gewöhnlich ziehe ich die WASD-Tasten auch vor.
Ich werde es morgen nochmal testen und das mit dem Salto auf E gefällt mir auch gut
|
|
|
06/14/2012, 12:08
|
#13
|
elite*gold: 0
Join Date: May 2007
Posts: 1
Received Thanks: 0
|
entschuldigt bitte, wenn ich stör´^^, aber könnt ihr mir bitte mal step by step erklären wie ich so ein script zum laufen bekomme?
Autoit hab ich runtergeladen, den" code" hab ich als txt gespeichert....wenn ich autoit starte kommen fehlermeldungen über fehlermeldungen?
|
|
|
06/14/2012, 17:05
|
#14
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by superfro
entschuldigt bitte, wenn ich stör´^^, aber könnt ihr mir bitte mal step by step erklären wie ich so ein script zum laufen bekomme?
Autoit hab ich runtergeladen, den" code" hab ich als txt gespeichert....wenn ich autoit starte kommen fehlermeldungen über fehlermeldungen?
|
Da musst du schon "deutlich" genauer werden wo das Problem liegt.
Den als "txt" bringt dir das ganze nichts, es muss schon AutoIT sein (das .au3 files erzeugt für seinen Sourcecode).
Am Ende ist es einfach so simpel.
Code kopieren in den AutoIT Editor, F5 drücken (startet das Script direkt, alternativ compilieren und als .exe benutzen).
Ohne das es blöd klingt, aber das ist wirklich so trivial, ich glaube kaum das ein Step by Step hier wirklich angebracht ist (den das ist so als müsste dir jemand erklären wie du mit einer Gabel zu essen hast ^^).
Vielleicht reicht das ding ja schon das du doch tatsächlich versucht hast eine .txt direkt "auszuführen" (anstatt eine .au3).
|
|
|
06/14/2012, 17:36
|
#15
|
elite*gold: 0
Join Date: Jul 2010
Posts: 213
Received Thanks: 36
|
und wofür genau nutzt ihr das? zum zocken geht doch die maus viel besser oder?
|
|
|
Similar Threads
|
[AHK] WASD Script
06/07/2012 - Diablo 3 Hacks, Bots, Cheats & Exploits - 20 Replies
Quelle: AHKscriptWASD - Bringing WASD functionality and other alternative movement methods to Diablo III
Hierbei handelt es sich um ein AutoHotkey Script das die Steuerung des Chars mit WASD ermöglicht. Das kann vor allem beim kiten sehr nützlich sein, da man nicht mehr mit der Maus in beide Richtungen klicken muss, sondern einfach bei den Monstern bleiben kann. Auch in Kombination mit Stutter Step ist es sicher sehr praktisch. Hier gibt es auch ein Video davon:
Diablo 3 WASD Script in...
|
All times are GMT +1. The time now is 15:35.
|
|