I made this quick script. It uses pixel detection for all of its logic. You WILL need to create images for this script!
What It Does:
1. Queue
2. Accept Queue
3. Sit Still
4. ??
5. Profit
How to use:
1. Download/Install AutoHotkey (AutoHotkey)
2. Copy/paste script into *.ahk file (optional)
3. Screenshot the images to be searched for (the hardest part)
4. Place them in the same directory as the script
6. Run the script
7. ??
8. Profit
How to create your images: (Examples of mine at 1620 x 1080 on a cleric here http://imgur.com/a/ne5SM)
KEEP IN MIND THAT IT NEEDS TO BE THE INSIDES OF THINGS, FOR EXAMPLE WHEN I SAY GLORY ICON, I MEAN THE INSIDE OF IT... NOT THE ENTIRE THING. THINGS AROUND THE PICTURES YOU TAKE COULD CHANGE DUE TO TRANSPARENCY AND INCLUDING SOME OF THE BACKGROUND.
queueAvailable.png - Crop a portion of the glory Icon on the left side of the PVP queue
joinButton.png - Crop a part of the join button that includes the words/and or symbol
groupFinder.png - Crop a part of blue helmet thing on the popup
inMatch.png - Crop a part of the grey-ish swirly thing that is above the team scores (appears after match starts) [http://imgur.com/RYjAONd]
matchDone.png - Crop a part of the exit button with at least some of the letters included
inParty.png - Crop a portion of the circle that surrounds the players faces (preferably one that doesn't get covered by some player models, like the part below where the class symbol is
isLeader.png - Crop the middle portion of the crown when you are leader (or anywhere really).
transferButton.png - Crop a part of the word Transfer from the button.
canInvoke.png - Crop part of the sun (like the center that changes, where a time would be) WHEN you are actually at a bonfire and can invoke.
Keep in mind, what you crop for these images is completely up to you. They are basically just a way for the bot to search for the buttons and to figure out which step you are currently on (in-game, needing to queue up... etc)
Troubleshooting:
Typically, if it is not detecting a button, it means your images are wrong. Here are some signs of which it is.
Spamming K - Your queueAvailable is wrong.
Sits at queue menu and never queues - Your joinButton is wrong.
Doesn't accept queue - Your groupFinder is wrong.
Continually tries to join queue while in a match - Your inMatch is wrong.
Does not leave the match - Your matchDone is wrong.
Does not leave group - Either your playerPortrait or leaveParty is wrong
----If you don't right click, it is playerPortrait. Either the top left corner of your image is not right-clickable, or it isn't recognizing it.
----If you right click, but don't click leave party, your leaveParty is wrong.
Never clicks changeInstance - Your change instance is wrong.
Won't transfer servers - Your transferButton is wrong.
Is not trying to kick people - The code is commented out, or your isLeader/inParty is wrong.
Right clicks people to kick them, but doesn't. - Your kickPlayer is wrong. k
If it keeps spamming M - Maybe your companion is out and it still thinks you are in a party. Dismiss it.
If none of these are your problems... like if it seems to recognize it, but it is going too fast (or too slow) feel free to edit the Sleep values. They are in milliseconds, so multiply the number of seconds you want by 1000.
Known Bugs:
-Doesn't handle a bugged queue (i.e. you don't get pulled in; but are still in group)
-Don't think the exit button works (No idea why?)
Special Notes:
I have done almost no scripting with AutoHotkey, so bear with the horrendous code. Maybe I will try and clean it up if this is popular enough.
Changelog:
1.4: Added in the ability to invoke, added a (hopeful) fix to the empty transfer but, and probably random stability improvements.
1.3.1: Will activate the window for anti-afk if not already active (and return to previous window)
1.3: Script now uses some chat commands
1.2.5: The script will no longer run on other windows named "Neverwinter" (like this forum)
1.2.4: Sometimes didn't leave party when bugged. Should be fixed.
1.2.3: Fixed (again) the bugged queue problem.
1.2.2: Fixed some problems with running forward and clicking portrait (thanks bobbish for pointing out this artifact!)
1.2.1: Oops! Forgot to add a mouse click for clicking the change instance button.
1.2: Hopefully fixed bugged queue problem. Also added the ability to remove all players from party if leader (the code is commented out)
1.1.5: The Anti-AFK script no longer fires when out of party.
1.1.4: Made leaving the party a critical section. I beleive this will stop it from interrupting leaving the party with the Anti-AFK script.
1.1.3: Fixed the Anti-AFK script
1.1.2: Moves the mouse after queuing. Fixes when not actually pulled in queue (i.e. bugged queue).
1.1.1: Made lots of changes.
1.1: Made everything work with ImageSearch
1.0 Original Release
Previous Version: http://pastie.org/private/qx6qxtnbn19pknm17gzbrgCode:SetTimer, Jump, 60000 acceptedQueue = 0 Loop { IfWinActive, ahk_class CrypticWindowClassDX0 { ; Is the game already over? ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 matchDone.png if(ErrorLevel = 0) { critical, on MouseClick left, foundX, foundY Sleep 15000 sendToChat("/Team_Leave") Sleep 200 critical, off } else { ; Are we in a game already? ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 inMatch.png if (ErrorLevel = 0) { acceptedQueue = 0; ;Be a dick and kick everyone from the party if we are leader ;ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 isLeader.png ;if(ErrorLevel = 0) { ; critical,on ; ImageSearch, partyX, partyY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 inParty.png ; if(ErrorLevel = 0) { ; Send {Alt} ; Sleep 100 ; MouseClick right, partyX, partyY ; Sleep 3000 ; ImageSearch, kickX, kickY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 kickPlayer.png ; MouseClick left, kickX, kickY ; } ; critical,off ;} } else { ImageSearch, partyX, partyY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 inParty.png if(ErrorLevel = 0) { sendToChat("/ChangeInstance") Sleep 1000 ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 transferButton.png if(ErrorLevel = 0) { acceptedQueue = 0 critical,on MouseClick left, foundX, foundY Sleep 500 Send {Escape} Sleep 15000 critical,off } if(acceptedQueue = 0) { sendToChat("/Team_Leave") Sleep 200 } } else { ; Has the queue popped? ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 groupFinder.png if (ErrorLevel = 0) { sendToChat("/Clickwindowbutton_1") acceptedQueue = 1 Sleep 15000 } else { ; Do we need to queue up? ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 queueAvailable.png if (ErrorLevel = 0) { ; Arbitrary 50 here. Just to make sure it doesn't detect the other join buttons. ImageSearch, buttonX, buttonY, foundX, foundY-50, %A_ScreenWidth%, %A_ScreenHeight%, *30 joinButton.png if(ErrorLevel = 0) { MouseClick left, buttonX, buttonY Sleep 3000 MouseMove 0, 0 } } else { ; Can't find queue button, Try opening up queue sendToChat("/queue") Sleep 3000 } } } } } } } return Jump: critical, on wasntActive = 0 IfWinNotActive, ahk_class CrypticWindowClassDX0 { wasntActive = 1 WinActivate, ahk_class CrypticWindowClassDX0 WinWaitActive, ahk_class CrypticWindowClassDX0 } Send {Space} ; Temp fix here... dunno why its not detecting me ingame Sleep 75 Send {Space down} Sleep 75 Send {Space up} ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *30 canInvoke.png if(ErrorLevel = 0) { Send {Control down} Sleep 200 Send i Sleep 200 Send {Control up} Sleep 7000 } if(wasntActive = 1) { Send !{Tab} Sleep 1000 } critical, off return sendToChat(msg) { IfWinActive, ahk_class CrypticWindowClassDX0 { critical, on Send {Enter} Sleep 200 Send %msg% Sleep 200 Send {Enter} critical, off } }