[Tool] GDAutocaster - autocasting, faster camera, hiding items on the ground and more!

Tired of begging for builds that use few skills?
Didn’t have piano lessons as a child?
Suffering from rheumatism or tendinitis?
Maybe even missing a few fingers?
Don’t worry, we have a solution…

GDAutocaster - have the piano play for you!

Credits to @klasperstanze, @ncience, @Garfunkel, @Dlightfull and others from AHK threads

.

Screenshot%20(129)
            Changelog

>> GDAutocaster_v3 Download Link <<
GDAutocaster_v3.zip.txt (534.1 KB) (remove “.txt” and unzip)

.>> More improvements and features in an up-to-date version on GitHub <<
https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe
https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.ini

Only Left Mouse Button was used in the video but there’s moving and 5 skills used!

1 button 7 spells config:
https://forums.crateentertainment.com/t/tool-gdautocaster-autocasting-faster-camera-hiding-items-on-the-ground-and-more/95616/83

Here’s sample Physical Forcewave Witchblade config (up-to-date version of the program) for the following build
https://www.grimtools.com/calc/RVvBBkkV

Forcewave Physical Witchblade

[general]
suspend_key=Tab
^ suspends all the hotkeys, sometimes you have to press it 
  two times for hotkeys to work after starting the program

capslock_remap=m
^ for capslock to not blink, m set to map in-game

[autocasting]
master_hold=`
master_toggle=`
^ hotkey to stop [8], [9], [0] from working
  (Blood of Dreeg and two Movements Skills)

[camera]
angle=60
counter_clockwise=a
clockwise=d
rotation_key=k
delay=10
^ 60 degree manual keyboard camera rotation, k set to rotate in-game

[periodic casts]
cast1=RButton:6
delay=100
^ War Cry(6) cast instantly on RMB and spammed, Forcewave is on RMB in-game

[combo presses]
combo1=r:1,2,3,4,5
^ press R to have buffs on from 1,2,3,4,5 cast (Oleron, Battle Command, etc.)

combo2=RButton:7
initial_delay2=true
delay2=500
stop_on_release2=true
^ Curse of Frailty(7) cast after 500 ms on RMB, Forcewave is on RMB in-game, 
  half second later so that War Cry doesn't interrupt it

[8]
toggle_key=8
delay=13000
^ Blood of Dreeg(8) cast every 13 seconds, (de)activate with Master Toggle ' or 8

[9]
hold_keys=Space
delay=100
^ Jumping Movement Skill(9) spammed on Space so that you can hold
  this key, move and jump as soon as off cooldown at the same time

[0]
hold_keys=Shift
delay=100
^ Similar to [9] but it's Blitz(0)

.

Sample excessive config explained (skill names are only for readability)

[general]
game=Grim Dawn
suspend_hotkeys=`
capslock_remap=m

[autocasting]
master_toggle=Tab
master_hold=Tab

[camera]
angle=60
counter_clockwise=a
clockwise=d
rotation_key=k
delay=40

[hiding items]
hold_to_hide_key=Shift
gd_toggle_hide_key=RAlt

[9]
skill=Wind Devil
hold_keys=LButton

[7]
skill=Pneumatic Burst
toggle_key=7
delay=1000

[8]
skill=Wendigo Totem
hold_keys=LButton,Shift
delay=4000

[6]
skill=Ring of Steel
toggle_key=a
hold_keys=Shift
not_hold_keys=LButton
delay=500

.
[general] [optional]

[general]
game=Grim Dawn
suspend_hotkeys=`
capslock_remap=m
  • game [optional]

    • the default value is Grim Dawn, you need to change it if you’d like to use the program in other games
  • suspend_hotkeys [optional]

    • turns on/off all the hotkeys except itself, in current version these are (all [optional])
      • master_toggle
      • master_hold
      • all toggle_key keys
      • counter_clockwise
      • clockwise
      • hold_to_hide_key
      • capslock_remap
  • capslock_remap [optional]

    • changes capslock to some other key and keeps the light off
    • turned on/off by suspend_hotkeys

.
[autocasting] [optional]

[autocasting]
master_toggle=Tab
master_hold=Tab
  • master_toggle [optional]

    • when you click this, all your current toggle autocasts are stopped and saved
    • when you click it again, saved toggle autocasts are resumed
    • at first all autocasts saved are from all your toggle_keys but if you click it while fewer skills are being autocasted at the moment, those fewer skills will be saved
    • turned on/off by suspend_hotkeys
  • master_hold [optional]

    • after you click this, autocasting while holding hold_keys buttons is turned off and turned on if you click it again
    • also preventing autocasting by holding not_hold_keys buttons is disabled as well
    • turned on/off by suspend_hotkeys

.
[camera] [optional]

[camera]
angle=60
counter_clockwise=a
clockwise=d
rotation_key=k
delay=40

.
[hiding items] [optional]

[hiding items]
hold_to_hide_key=Shift
gd_toggle_hide_key=RAlt
  • hides items on the ground while you’re holding some button
  • gd_toggle_hide_key is the key from GD Keybinding called Toggle Hide All Items
  • hold_to_hide_key is the key you need to hold
    • turned on/off by suspend_hotkeys

[9]

[9]
skill=Wind Devil
hold_keys=LButton
  • Wind Devil bound to 9 cast every 100 ms (default delay) when you’re holding Left Click
    • turned on/off by master_hold

[7]

[7]
skill=Pneumatic Burst
toggle_key=7
delay=1000
  • Pneumatic Burst bound to 7 cast automatically by itself if you clicked 7 every second; click again to stop autocasting
    • or press master_toggle to save/resume all current autocats
    • turned on/off by suspend_hotkeys

[8]

[8]
skill=Wendigo Totem
hold_keys=LButton,Shift
delay=4000
  • Wendigo Totem bound to 8 cast every 4s while you holding Left Click and Shift together
    • turned on/off by master_hold

[6]

[6]
skill=Ring of Steel
toggle_key=a
hold_keys=Shift
not_hold_keys=LButton
delay=500
  • Ring of Steel bound to 6 cast automatically by itself every 0.5s if you clicked a / if you’re holding Shift; click again (or master_toggle if you have it) to stop autocasting / stop holding Shift

  • not_hold_keys - casting of skill bound to 6 is disabled if you’re holding LButton

    • turned on/off by master_hold

.
Additional remarks

  • although not intended, it seems that if k < l, then the skill bound to k in GD is cast earlier than the skill bound to l
    (if having the same delay, i.e. the default 100 ms); you can use it to i.e. have Shadow Strike cast earlier than Ring of Steel

  • sections [k] for k equal to 0, 1, … , 9 are supported

  • a skill has to be bound to k if you’d like its section to apply to it

  • hold_keys and not_hold_keys can be whatever and can repeat between multiple sections

  • all following [optional] hotkeys have to be different

    • suspend_hotkeys
    • master_toggle
    • master_hold
    • all keys toggle_key
    • counter_clockwise
    • clockwise
    • hold_to_hide_key
    • capslock_remap
  • however master_hold and master_toggle can be the same key

  • hold_keys, not_hold_keys and toggle_key can be 0 - 9 without any problems

  • suspend_hotkeys, master_toggle and master_hold shouldn’t trigger if set to Tab and you press Alt + Tab

  • the default delay for toggle_key and hold_keys is 100 ms

  • you can rename the .exe however you like, then config .ini has to be renamed in the same way
    .

Another example
Here’s a clean way how to configure Pneumatic Burst with different times during fighting and outside fights.

[1]
skill=Pneumatic Burst
toggle=d
delay=20000
not_hold_keys=RButton

[2]
skill=Pneumatic Burst
delay=100
hold_keys=RButton

.
Write if you

  • need help with specific config (or just describe how you play and I’ll propose a config)
  • would like some additional features
  • something doesn’t work as expected
    .
13 Likes

maybe make revere_hold non boolean and instead assign a key to it?

Dunno if it’s possible, but it would make the skill not be cast only when a particular key or mouse button is pressed. For example i have LButton assigned to moving and i make reverse_hold=LButton, so while i am moving, that skill is not cast, but it is cast when i hold other keys, if not holding LButton.

Off course more than one key should be assignable to reverse_hold, as with regular hold.

1 Like


Changelog
Back to OP

Update 3

  • [camera] [Tool] Faster camera rotation using keyboard or scroll wheel merged into the program

  • [hiding items] on the ground while you’re holding some button

    • gd_toggle_hide_key is the key from GD Keybinding called Toggle Hide All Items
    • hold_to_hide_key is the key you need to hold
  • new suspend_hotkeys key

    • turns on/off all the hotkeys except itself, in current version these are (all [optional])
      • master_toggle
      • master_hold
      • all toggle_key keys
      • counter_clockwise
      • clockwise
      • hold_to_hide_key
      • capslock_remap
  • tray icon now always presents Wind Devil just like the .exe not the standard, ugly AHK icon

  • capslock_remap

    • changes capslock to some other key and keeps the light off
  • you can rename the .exe however you like, then config .ini has to be renamed in the same way

  • suspend_hotkeys, master_toggle and master_hold shouldn’t trigger if set to Tab and you press Alt + Tab

  • default delay changed from 1000 to 100 ms

  • game parameter is now [optional]

  • master_hold and master_toggle moved to new section [autocasting]

  • more extensive and readable config explanation
    .

Update 2

  • Now skill is cast (or appropriate [k] button pressed)
    (if toggled or hold_keys are held) and not_hold_keys are not held.

  • rewritten the code and change the logic, they are very simple now

  • reverse_hold change to not_hold_keys which basically stops all types of casting when you hold some buttons
    (see example config comment for explanation)
    .

Update (read more about the new feature in the 2th post)

  • new reverse_hold option enables you to for example have some skill autocast when you stand and not autocast when you move (or hold some buttons in general)
2 Likes

looks wonderful, can’t wait to try this!

1 Like
  1. Is there a way to tell in which order the script will execute if i have a few buttons bound to RButton?
    For example i have both Shadow Strike and Ring of Steel bound to hold RButton. I would like the script to execute the Shadow Strike first and then the Ring of Steel.
    As it is right now it appears to do it in no particular order, sometimes casting SS and the RoS and other times RoS before SS, wasting the ROS basically. I might be wrong in my observations though, perhaps RoS always goes off before SS, but i don’t see it because there are mobs nearby?

  2. SS is casting when i hold RButton for a pretty long time, not instantly, is it because of my slow computer, or is there something that can be done to accelerate it?

  3. i run this script:

    [4]
    skill=Pneumatic Burst
    toggle_key=d
    hold_keys=RButton
    delay=23000

My intention is to cast Pneumatic Burst every 23 seconds while out of combat, and as often as possible during combat. But apparently, it only works as a toggle skill, not casting it while i hold RButton. And the toggle also doesn’t work permanently, something happens and it casts in a seemingly chaotic manner, or stops casting at all.

1 Like

I’ll try to investigate the issues one by one. Please answer in separate posts.

  1. I’ve tested it and everything’s fine. Are you sure you have the latest version of the program (I mean Update 2) because before there was a possibility of the skill casting chaotically (there were two timers) now there’s not because it’s basically one timer running constantly and checking evere Delay milliseconds whether the toggle is on or you hold buttons (you cannot stop the timer or do anything with it). Maybe it’s stopping because you click Alt + Tab to minimize and MasterHold or Toggle are set to Tab (don’t how if it’s toggled then btw)

The delay is both for hold_keys and toggle. Why do you want to have it 23 seconds out of combat?

Just set the delay to 100 (which is 100 ms). I also recommend the button you move your character with (left click?) without toggle key. Would this be ok for you? (or Right Click if you move with Right Click)

[4]
skill=Pneumatic Burst
hold_keys=LButton
delay=100

I have 2-3 possible solutions for this, let’s try with the simplest and the following configuration.

[general]
game=Grim Dawn
master_toggle=`
master_hold=`

[1]
hold_keys=RButton
delay=100

[2]
hold_keys=RButton
delay=100

It’s probably due to the way I coded it but when Shadow Strike is bound to 1 and Ring of Steel to 2, Shadow Strike always goes first! And vice versa, when Ring of Steel is bound to 1 and Shadow Strike to 2, Ring of Steel always goes first! Please try this solution.

Do you move with Right Click because it’s kinda changes things. And just to be clear, you understand that when you holding Right Click on the ground

  1. Shadow Strike cannot be cast because nothing is targetted
  2. .Ring of Steel can be cast always
    so in that case (if you’re holding Right Click on the ground) Ring of Steel naturally fires earlier and no AHK program can prevent it because it cannot detect whether or not you’re targetting monster or ground?

It costs more mana this way. When i spam it as soon as it gets off cooldown, my build is not mana-sustainable, while if i only cast it before the run out out of combat, it’s sustainable.

What’s your Delay for it?

I move with LButton and attack with RButton.

I know that SS needs a target, so i only hold RButton when i have one. I could circumvent it by just casting SS manually, but i wanted the ultimate lazy playstyle :smiley:

What matters here, the number, or the order in which the skills are written in the .ini file?

i don’t have a delay in the script

i changed it to another button, because it messed up with my map (i have it on tab for easier reference)

Set the delay to 100 ms for Shadow Strike because the default is 1000 ms

` is good instead of Tab

Btw don’t you want Shadow Strike on Left Click? It works pretty well with moving.

Also I recommend you can do something like this

  • Shadow Strike on Right Click as it is now)
  • Ring of Steel when you hold Right Click + Shift (or maybe space) [you hold shift when near monster]

Or even

  • Shadow Strike + Movement on Left Click
  • Right of Steel on Right Click or something like that [you hold it when near monsters]

No wait, again on the order of Shadow Strike and Ring of Steel
To be precise I guess it’s like that

  1. Shadow Strike needs to be bound to lower number than Ring of Steel
  2. Config position of these numbers shouldn’t matter but I’m not 100% sure of that (haven’t tested)
  3. They should have the same delay set I think (I recommend 100ms)

Literally on my computer 100% of the times SS goes first (if it’s not on cool-down of course)
During a fight there might be a situation where SS is on cool-down and RoS not and then of course RoS will fire first.

Just do something like that

[6]
skill=Shadow Strike
hold_keys=RButton
delay=100

[7]
skill=Ring of Steel
hold_keys=RButton
delay=100

and in-game SS bound to 6 and RoS bound to 7.

But this is honestly a happy coincidence because I haven’t expected or assumed any order.
I again recommend moving with SS on Left Click… If you want to reach ultimate laziness.

Btw if you have slow computer low FPS I recommend lowering res.
I play on Laptop Full HD but in Grim Dawn I have 1280 x 720 :slight_smile:

So, i made the delay on SS lower than on other skills and it works just fine now. I don’t want SS on movement, because i want to choose the monster that i hit with SS (usually in the middle of a crowd) while having it on movement, it will go off with much less control.

I think i figured the problem with Pneumatic Burst. The hold key has the same delay as the toggle key. I tried to make two separate entries for that same skill, one for hold RButton without delay and another to toggle with d button with 23000 delay. Now it only casts on holding RButton, no reaction at all on the delay button.
What i did is to have the skill on toolbar on two different buttons, then i made one button in the script for hold RButton and another one for toggle. It didn’t want to work when i had the name of the skill written under the number, but then i deleted it and it works as i want it now.

1 Like

No no no the name of the skill does literally nothing.
Here’s a clean way how to configure Pneumatic Burst with different times during fighting and outside fights.

[1]
skill=Pneumatic Burst
toggle=d
delay=20000
not_hold_keys=RButton

[2]
skill=Pneumatic Burst
delay=100
hold_keys=RButton

un_hold_keys=RButton is not really needed but it’s recommended anyway
lines with skill are totally optional, program doesn’t read them
in Grim Dawn 1 and 2 should be occupied by Pneumatic Burst

1 Like


Update 3

  • [camera] [Tool] Faster camera rotation using keyboard or scroll wheel merged into the program

  • [hiding items] on the ground while you’re holding some button

    • gd_toggle_hide_key is the key from GD Keybinding called Toggle Hide All Items
    • hold_to_hide_key is the key you need to hold
  • new suspend_hotkeys key

    • turns on/off all the hotkeys except itself, in current version these are (all [optional])
      • master_toggle
      • master_hold
      • all toggle_key keys
      • counter_clockwise
      • clockwise
      • hold_to_hide_key
      • capslock_remap
  • tray icon now always presents Wind Devil just like the .exe not the standard, ugly AHK icon

  • capslock_remap

    • changes capslock to some other key and keeps the light off
  • you can rename the .exe however you like, then config .ini has to be renamed in the same way

  • suspend_hotkeys, master_toggle and master_hold shouldn’t trigger if set to Tab and you press Alt + Tab

  • default delay changed from 1000 to 100 ms

  • game parameter is now [optional]

  • master_hold and master_toggle moved to new section [autocasting]

  • more extensive and readable config explanation

3 Likes

Is it possible to incorporate the camera following your char into this program as well? Or is there some separate mod that does that? Don’t want to install autohotkey just for that

1 Like

Sure, I could do that in Update 4 (I also need to make master_toggle, master_hold and suspend_hotkeys be able to be the same button because I just needed it today when I was shopping)

I’ve incorporated manual camera rotation because I’m using it myself but I was thinking about automatic as well because, although not as optimal as manual camera rotation for crucible for example, it’s very fun to play with and pleasant to look at everything slowly rotating according to where you’re going. It’s super chilling.

I need to rewrite it though from the ground up to use Timers (because now it works when you’re holding Left Click in a While Loop and I don’t write like that anymore) and think how to incorporate it nicely into the program. Also it’s needs to have a lot of configuration options like

  • the angle of the segment around 12 o’clock where there’s no camera rotation
  • inner region size where there’s no rotation
  • the shape of the inner region (circular, rectangle, maybe even eliptic)
  • also I need to implement reading the user’s resolution and expressing all those sizes in % instead of pixel so that it’s invariant to changing the resolution

@klasperstanze for example likes only to have automatic rotation at the edges of the screen, I prefer it more aggressive, present almost everywhere except small inner circle around the character and small segment near 12 o’clock

Also before all this I think I need to figure out and implement a scalable mechanism that would enable all hotkeys be the same key because I think it’s limiting me a bit right now.

For example something like hotkeys having a list of functions that they trigger instead of being bound to one function. I’ve already got anxiety thinking of all this :wink:

1 Like

mate, thank you very much for putting so much time and effort into this!

I like it very much. I can play my build a lot easier thanks to your program!

The camera thing annoys me very much in this game. I hate using the scroll button and using any keys for that is also very annoying. It would be really neat if you’d manage to do it! If it’s not very difficult, having the camera point not exactly the way your character is looking, but at an angle would be really useful, to be able to set the best snipe angle :slight_smile:.