Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate

World of Warcraft by joypad


  • Please log in to reply
4 replies to this topic
Daveo
  • Guests
  • Last active:
  • Joined: --
How to play world of warcraft without getting RSI! A script to use the XBox 360 joypad (recommend the XBCD360 drivers) to play WoW...
It works really nicely and for a console lamer like me it makes the game much more playable and immersive.
I'm pretty sure this script works perfectly, but I haven't fully tested all the buttons yet. I can't offer any support. Also, I'm fairly sure that you're allowed to use AHK with WoW, but don't blame me if you get in trouble.

Some of my keys are remapped so you might need to do a little tweaking. + and - are mapped to zoom in and zoom out though you could mod the script to turn the mousewheel instead. The script should be easy to modify for other pads/sticks.

Left thumbstick moves and strafes, right thumbstick turns and looks (similar to most 360 games).
Clicking left thumbstick calls the first auxilliary action (e.g. stealth mode)
Clicking right thumbstick targets self
Other buttons:
A - jump
B- action 4
X - action 2
Y - action 3
back - action 5
start - action 6
left shoulder - previous target
right shoulder - next target
left trigger - action 0
right trigger - action 1
Dpad up/down - zoom view
Dpad left/right - change view
Here she is:

UPDATE: Some improvements - added keydelay so that it doesn't cycle targets so quickly; left shoulder button now selects next friendly target instead of previous hostile.

#Persistent
SetTimer, WatchXAxis, 5
SetTimer, WatchYAxis, 5
SetTimer, WatchRyAxis, 5
SetTimer, WatchRxAxis, 5
SetTimer, WatchButtons, 5
return

WatchButtons:
GetKeyState, JoyPOV_pos, JoyPOV
if JoyPOV_pos = 0
    Send, {+}
else if JoyPOV_pos = 9000
    Send, {Home}
else if JoyPOV_pos = 18000
    Send, {-}
else if JoyPOV_pos = 27000
    Send, {End}

if GetKeyState("Joy1")
{
   SetKeyDelay 50
    Send, {Space}
}
if GetKeyState("Joy2")
{
   SetKeyDelay 50
    Send, {4}
}
if GetKeyState("Joy3")
{
   SetKeyDelay 50
    Send, {2}
}
if GetKeyState("Joy4")
{
   SetKeyDelay 50
    Send, {3}
}
if GetKeyState("Joy5")
{
   SetKeyDelay 50
   Send, {Ctrl down}
   Send, {Tab}
   Send, {Ctrl up}
}
if GetKeyState("Joy6")
{
   SetKeyDelay 50
    Send, {Tab}
}
if GetKeyState("Joy7")
{
   SetKeyDelay 50
    Send, {6}
}
if GetKeyState("Joy8")
{
   SetKeyDelay 50
    Send, {5}
}
if GetKeyState("Joy9")
{
   SetKeyDelay 50
    Send, {Ctrl}{0}
}
if GetKeyState("Joy10")
{
   SetKeyDelay 50
    Send, {F1}
}
if GetKeyState("Joy11")
{
   SetKeyDelay 50
    Send, {0}
}
if GetKeyState("Joy12")
{
   SetKeyDelay 50
    Send, {1}
}
return

WatchXAxis:
GetKeyState, JoyX_pos, JoyX
if JoyX_pos > 75
	XKeyToHoldDown = d
else if JoyX_pos < 25
	XKeyToHoldDown = a
else
	XKeyToHoldDown =
 
if XKeyToHoldDown = %XKeyToHoldDownPrev%
  return

SetKeyDelay -1 
if XKeyToHoldDownPrev
   Send, {%XKeyToHoldDownPrev% up} 
if XKeyToHoldDown  
   Send, {%XKeyToHoldDown% down}

XKeyToHoldDownPrev = %XKeyToHoldDown%
return

WatchYAxis:
GetKeyState, JoyY_pos, JoyY
if JoyY_pos > 75
	YKeyToHoldDown = s
else if JoyY_pos < 25
	YKeyToHoldDown = w
else
	YKeyToHoldDown =
 
if YKeyToHoldDown = %YKeyToHoldDownPrev%
  return

SetKeyDelay -1 
if YKeyToHoldDownPrev
   Send, {%YKeyToHoldDownPrev% up} 
if YKeyToHoldDown  
   Send, {%YKeyToHoldDown% down}

YKeyToHoldDownPrev = %YKeyToHoldDown%
return

WatchRyAxis:
MouseNeedsToBeMoved =
SetFormat, float, 03
GetKeyState, JoyR_pos, JoyR
if JoyR_pos > 85
{
    MouseNeedsToBeMoved := true
    DeltaY := JoyR_pos - 85
}
else if JoyR_pos < 15
{
    MouseNeedsToBeMoved := true
    DeltaY := JoyR_pos - 15
}
else
    DeltaY = 0
if MouseNeedsToBeMoved
{
    SetMouseDelay, -1
    MouseClick, right,,, 1, 0, D 
    MouseMove, 0, DeltaY/3, 0, R
    RButtonIsDown = True
}
else
{
    if( RButtonIsDown )
      MouseClick, right,,, 1, 0, U
    RButtonIsDown =
}
return

WatchRxAxis:
GetKeyState, JoyU_pos, JoyU
if JoyU_pos > 75
	UKeyToHoldDown = Right
else if JoyU_pos < 25
	UKeyToHoldDown = Left
else
	UKeyToHoldDown =
 
if UKeyToHoldDown = %UKeyToHoldDownPrev%
  return

SetKeyDelay -1 
if UKeyToHoldDownPrev
   Send, {%UKeyToHoldDownPrev% up} 
if UKeyToHoldDown  
   Send, {%UKeyToHoldDown% down}

UKeyToHoldDownPrev = %UKeyToHoldDown%
return


RadisHASii
  • Members
  • 1 posts
  • Last active: Sep 18 2007 09:31 AM
  • Joined: 18 Sep 2007
hi, im not expert (and my english isn't the best)
can explain more details for enable my xbox360 joypad on wow?

i have xbox360 wireless joypad, that works fine on my pc with mame32 emulator.

Rhys
  • Members
  • 761 posts
  • Last active: Aug 09 2013 04:53 PM
  • Joined: 17 Apr 2007
How do you loot?

marioman
  • Guests
  • Last active:
  • Joined: --
The right control stick doesn't move the mouse all too well...

random guy
  • Guests
  • Last active:
  • Joined: --
I remember I played wow with a gamepad about 3 years ago, it was effective because I had started getting carpal tunnel syndrome or something like that.

The way I looted was I had a specific angle all the time when grinding and then when I wanted to loot something i just had to stand on top of it and click a button linked to holding shift in while pressing the mousebutton on a certain place on the screen. I think it looked something like this:

F9::
Send {Shift down}
MouseClick, right, 512, 420,, 1
Send {Shift up}
MouseMove, 1000, 400, 1
exit

very very simple I guess. One could write an advanced script that would look for the glittering lootgraphics and then click on that perhaps.