If you are tired of gambling your shards to Kadala in Diablo 3, then I have a straightforward solution for you. In this guide, specifically for new players, I’ll show you how to spend your soul shards fast and salvage all the inventory in one second.
For this guide, We’ll use AutoHotKey tool and Synapse for Razer mice.
Creating your own Script
AutoHotKey is what we’ll need to make one simple macro to gamble and salvage all the items. This comes in handy, especially when you have a regular mouse that doesn’t support macro commands on hardware or software levels. But if you have for example A4Tech or Razer mouse, you can skip this part, as they have official tools to record and save macros to onboard memory.
And before you ask me: Yes! It is absolutely safe to use it in the game like Diablo III. I’ve been using macro commands since 2015 for salvaging gear, playing Star Pact Wizard (aka. Bazooka), and gambling shards for XP Rathma speeds.
So, back to AutoHotKey. This is where we are going to write scripts or generally speaking macro commands. It can do pretty much anything – infinite key pressing, mouse pointing, pixel detection or doing key combinations all at once. If you are familiar with such tools, and you want to create more advanced macro, then I recommend you to check out the official AutoHotKey Documentation.
But before we do anything, we actually need to download this tool first from the official website.
Gambling with Loop Method
After the installation, it is time to create our first script file. Navigate to any desired place, right click and create a new AutoHotKey Script file.
Open it with any text editor like Notepad (I recommend Notepad++) or VScode and type the lines as follows. You can later customize your keys to your personal preferences.
First line: #IfWinActive Diablo III
. This line will force your script to work only in a certain window, without interfering other apps.
In the next line: H:: ;H_key-to-gamble
. Here, we create a key (H::
) which we will press to activate our macro. You may also add your own comment after a semicolon to make your code more readable. In our case, it is: ;H_key-to-gamble
.
I’ll Use H
key as an example. Additionally, you can include a combination of keys (Like CTRL+H or SHIFT+H) to start your script, simply by adding Plus +
(which stands for Shift) or Circumflex ^
(which stand for Ctrl) before your key.
Here’s a small example with the combination of keys:
#IfWinActive Diablo III
^+H:: ;H_key-to-gamble (CTRL+SHIFT+H Combination)
On the next line, we create a Loop function with braces, and set the amount to 30: Loop, 30 {}
. This will force our script to repeat 30 times (To gamble 30 items from Kadala). Feel free to choose a different number if you want to gamble less.
Inside the braces, you need to add: Mouseclick, Right
. This is pretty self-explanatory. AutoHotKey will auto-press Right Mouse button x30 times to gamble items.
The next line is purely optional: SoundPlay *48
. This line adds a simple notification sound once this script finishes its job. It is a simple Windows Exclamation sound. Refer to SoundPlay Documentation to change the sound effect if necessary.
The final line is Return
. This argument will force your script to end the execution, and it won’t interfere with other macros.
Now save the AutoHotKey Script File and double-click on it to start. If the popup window with the error message appears, then you have probably missed something important and must fix that. If nothing bad happens, then the AHK icon will appear in the system tray (next to Windows Clock).
Below is the final result. Feel free to try this script in the game. You’ll need to hover over any item from Kadala and then execute this script by pressing (in this case) “H” key. Don’t forget to hoard the shards!
#IfWinActive Diablo III
H:: ;H_key-to-gamble
Loop, 30 {
MouseClick, Right
SoundPlay *48
}
return
Less Elegant solution
In case you want a different script, Here is another less elegant solution to gambling. If you want to gamble less items and with specified keys, then you can use the script below.
Just as before, add any key (for example: K::
) for activation and then, in the next line, type MouseClick, Right.
This command will buy a single item from Kadala after activation.
But you can add as many of these lines as you need. Let’s say, that you need to gamble 5 rings per script activation. For this, we simply copy and paste MouseClick, Right
4 more times, so we get 5 commands in total. Don’t forget to add Return
function to finalize the script. The final result is shown below.
When you press “K” key, the script will gamble items depending on the number of lines you put inside. Hover over any item from Kadala and press the key for instant x5 gambling.
K:: ;kadala gamble alternativeX5_items
MouseClick, right
MouseClick, right
MouseClick, right
MouseClick, right
MouseClick, right
return
Salvage Items
Moving next, for instant salvaging. Once we gambled enough and our inventory is now piled with many yellows or blues, we can create a different macro to salvage all that stuff without pointing our mouse to salvage buttons. Since there is no hotkey to salvage all gear, we will have to use mouse coordinates to navigate to those salvage buttons.
Keep in mind that depending on your screen resolution, these coordinates may differ. I’ll include mouse coordinates for 1080p and 1440p resolutions below. If you have a different screen resolution, you can write down your own coordinates by using Window Spy. I’ll describe this process later.
First, let’s create a new key, that we will use to salvage our gear. Similar to previous scripts, we enter the key for script activation: for example, X::
.
In the next line we add Mouseclick, Left
and enter specified coordinates. The code with 1080p coordinates looks like this:
X:: ;salvage-allitems
MouseClick, left, 250, 290 ;salvagegrey
Send, {Enter}
And here is the same code, but for 1440p resolution:
X:: ;salvage-allitems
MouseClick, left, 333, 387 ;salvagegrey
Send, {Enter}
These coordinates will point the mouse cursor directly to the gray salvaging button, but we still need to add one extra command to confirm salvage prompt.
In the next line, we need to add this: Send, {Enter}
. We have finished the salvage script for the first button.
Now repeat the same steps for the other two buttons, but add different coordinates for blue and yellow salvage options!
You can also include Sleep
(x-ms) function in milliseconds after Send, {Enter}
line to add a small delay to avoid possible input lag or misclicks. Here is the final result for 1080p resolution:
X:: ;salvage-allitems
MouseClick, left, 250, 290 ;salvagegrey
Send, {Enter}
sleep 50
MouseClick, left, 325, 290 ;salvageblue
Send, {Enter}
sleep 50
MouseClick, left, 385, 290 ;salvageyellow
Send, {Enter}
sleep 50
return
And the one for 1440p resolution:
X:: ;salvage-allitems
MouseClick, left, 333, 387 ;salvagegrey
Send, {Enter}
sleep 50
MouseClick, left, 424, 387 ;salvageblue
Send, {Enter}
sleep 50
MouseClick, left, 522, 387 ;salvageyellow
Send, {Enter}
sleep 50
return
As you can see, these scripts are almost identical. The only difference is in the coordinates. These values must differ if you have a different screen resolution.
To add your custom X,Y coordinates, you’ll need to open Window Spy. You can find this tool by right-clicking Autohotkey (H) icon from the System Tray, and selecting Window Spy.
In this window, you will see your precise mouse coordinates. We only need screen coordinates from the Mouse Position: window
. So simply point your mouse to the required buttons in the game, and write down screen coordinates. Then simply enter these numbers next to MouseClick, Left
event and save. Once it is all done, test your script in the game.
If your script is still running in the background, you can close the process from the system tray or reload the current script to apply changes without restarting.
If your script misclicks the salvaging buttons, then you should change your coordinates inside the script. Remember to use Window Spy and copy only screen coordinates (window and client coordinated are not needed).
Keep in mind that if you change your game resolution, or drag the game window, the script may target a different area. Change your values accordingly.
Salvage Legendaries
Even without a macro, salvaging common items (gray, blue, yellows) is not a big deal, because the game already has that feature to automatically dismantle every single item in your inventory… except for legendaries.
As you know, playing on Torment XVI or Greater Rifts can easily pile up your inventory and you will have to deal with these legendaries manually. Unfortunately, there is no easy workaround to salvage most of the “useless” legendaries, but here comes the AHK script which will do exactly that in one click!
I’ll use the same properties from Salvage Items section, but this time we add plenty of coordinates for each inventory slot. This is tedious, but it works 100%.
Please note, the script you see below works only for a specific resolution (in this case it is 1366×768). If you want to use this script on a different resolution (e.g. 1080p, 2K or 4K), you will have too change coordinates with Windows Spy tool. This step is described above.
The script below is for 1366×768 laptop resolution and it activates by using “X” key. You can change X::
to any key you like. Use this macro only when you have Salvage tab opened. It will automatically target 30 inventory (x2) slots and salvage large legendaries (e.g. weapons, armor, off-hand), but since utility items (rings, belts, amulets) occupy only one slot in your inventory, this macro (in most cases) will not salvage such items.
For extra speed, you can completely remove sleep 5
function from the script. It simply adds a small delay before moving to the next target, in case your PC freezes or lags.
;LegSalvager for Laptop 1366x768 resolution!
;Open Salvage tab on Blacksmith and press the "X" Key to execute
;Change "X" to any key if needed
X:: ;salvage-inventory-key
MouseClick, Left, 123, 210 ;targetSalvage-button
MouseClick, Left, 1019, 432 ;targetInventory-slot1-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1053, 432 ;targetInventory-slot2-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1090, 432 ;targetInventory-slot3-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1125, 432 ;targetInventory-slot4-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1161, 432 ;targetInventory-slot5-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1196, 432 ;targetInventory-slot6-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1229, 432 ;targetInventory-slot7-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1268, 432 ;targetInventory-slot8-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1303, 432 ;targetInventory-slot9-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1340, 432 ;targetInventory-slot10-row1
Send, {Enter}
sleep 5
MouseClick, Left, 1019, 505 ;targetInventory-slot1-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1053, 505 ;targetInventory-slot2-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1090, 505 ;targetInventory-slot3-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1125, 505 ;targetInventory-slot4-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1161, 505 ;targetInventory-slot5-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1196, 505 ;targetInventory-slot6-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1229, 505 ;targetInventory-slot7-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1268, 505 ;targetInventory-slot8-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1303, 505 ;targetInventory-slot9-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1340, 505 ;targetInventory-slot10-row2
Send, {Enter}
sleep 5
MouseClick, Left, 1019, 577 ;targetInventory-slot1-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1053, 577 ;targetInventory-slot2-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1090, 577 ;targetInventory-slot3-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1125, 577 ;targetInventory-slot4-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1161, 577 ;targetInventory-slot5-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1196, 577 ;targetInventory-slot6-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1229, 577 ;targetInventory-slot7-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1268, 577 ;targetInventory-slot8-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1303, 577 ;targetInventory-slot9-row3
Send, {Enter}
sleep 5
MouseClick, Left, 1340, 577 ;targetInventory-slot10-row3
Send, {Enter}
sleep 5
return
Extra Features – Urshi and Auto-Picker
The macros you see below are experimental. They may not work with your screen resolutions and may misclick certain objects. Refer to screens below for a simple demonstration.
- Auto-Picker is the easiest script, and it is pretty self-explanatory. It will repeatedly press Left-mouse button for 100 times upon activating Side Mouse Button-1 (
XButton1::
). You should reassign it to a different key if you feel uncomfortable.
XButton1:: ;auto-picker-forGR
Loop, 100 {
MouseClick, left
sleep 5
}
- Urshi-gambler is a more complex macro that requires mouse coordinates (Works on 1440p only) and many UI Interactions to skip “Upgrade” animations. Plus, it may be FPS and Ping sensitive. Use Window Spy to write your own coordinates for 1080p and other resolutions.
While it may not work perfectly, it still does the job. The downside of this macro? You have to stay really close to Urshi (or inside) for guaranteed interaction. The macro also targets only the first legendary gem from the list. If you have no fresh gems in your inventory, then you will see 3 of your primary equipped gems. But if you keep fresh (underleveled) gems in your inventory, Urshi will realign the row and show fresh gems first.
“U” Key for activation. This script is not toggleable, and it will stop on its own once it is finished.
#IfWinActive Diablo III
U:: ;urshi-gambler_1440p
SetDefaultMouseSpeed, 3
SetMouseDelay, 8
Loop, 6 {
Sendevent {Click, 1280 675} ;target talk-urshi
sleep 200
Sendevent {Click, 141 855 2} ;target first-gem
sleep 200
Send {Shift down} ;forcestand to avoid movement
Sendevent {Click, 360 730} ;target upgrade-button-attempt
Send {Shift up} ;disable forcestand
sleep 200
Send, {Esc} ;close Urshi-window
sleep 1000
}
return
Cheating Method
If you are not satisfied with the AHK scripts, or you don’t have a spare time to create your own macros, you can look for “all-in-one” solutions (aka. Helpers or Tools).
These “tools” can definitely do the job much faster than an AHK script (e.g. instantly convert cube items, inventory salvaging, instant Urshi leveling), but with just one drawback – they read the game memory. Similar to Cheat Engine or other memory-hacking software, they read in-game data and execute specific actions (automation).
Long story short, any applications that interact with Diablo III memory are prohibited! Macro apps that move your mouse and press keys don’t count. Although some memory-read tools like TurboHUD aren’t bannable/detectable, it is still a huge risk to take to use these helpers. Never use unknown cheats or helpers if you don’t want to lose your precious account. You have been warned.
Most of these tools can be found on game forums, botting communities or Discord servers, so there is no point to list them here. I recommend starting your search at Ownedcore forums.
Video Guide
Gaming Software: Synapse/X7 Oscar
Now for the gaming mice. This process is way simpler and shorter than writing your own AutoHotKey script. Most gaming mice have an official piece of software to record and save macro, and for this demonstration I’ll use Razer mouse with Synapse app.
For Razer owners only! Synapse is a powerful tool that can create gaming profiles, bind keys, change color and other stuff. But, all we need is Macro. If this module is missing, you can download Macro module from Synapse app and then navigate to Macro tab.
Hit + to create new gambling macro, and press Record. Start pressing right click as many times as you need, up to 30 (for full inventory). Then press Stop to save your Macro.
As for salvaging, create a new macro, and press the arrow button next to Record for additional options. Make sure to enable mouse movement tracker – Screen and then press Record. You’ll need to imitate the salvage process with your mouse: Hover to the Salvage button and press Left click. Repeat this step for two other buttons and then press Stop.
You can tune the timings and coordinates after saving the macro if necessary.
Now it is time to assign these two macros to any mouse button in the Mouse tab. For your convenience, you can create a separate profile with those macros for a specific game. Synapse will trigger this profile once you open a linked game.
Conclusions
And that is all for now. I hope you found this guide useful, and you can now gamble almost instantly and salvage all unnecessary items with just one click. If you have some questions, make sure to check my video guide and leave a comment there. Have a nice day and happy farming!