[Tool] GDAutocaster - play piano builds with ease, autocasting of skills, combos, faster / automatic camera, autohiding of items, centered Inquisitor Seal and more for all games!

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 @Danut, @Nico_Pootato, @GaeanC
and others from AHK threads
.



Main features:

  • designed to work with all games
  • making 10 buttons piano builds into 3 buttons builds without using DPS / efficiency
  • automatic camera rotation following the character
  • fast manual camera rotation (one button press -> i.e. 60 degrees rotation)
  • autocasting skills like Blood of Dreeg / Pneumatic Burst / Wind Devils
  • combos (press one button for multiple debuffs / casting all pets / permabuffs)
  • spamming multiple cooldown skills while holding one button
  • holding one button to have other buttons held
  • centered Inquisitor Seal and other skills
  • automatic hiding of items
  • prevent autocasting while you’re holding some button(s)
  • clicking multiple points on the screen by pressing a button
    • you can make 1-button summoning + changing behavior to aggressive combo with this
    • you can generate 20 rings in GDStash with one press of a button
  • binding skill to buttons that are not normally possible
  • skills spam or combos on double LMB press / hold
  • merging all these things together so that i.e. when you press and hold RMB
    • first your 2 debuffs fire
    • than inquisitor seal
    • than spamming of your cooldown skills starts and channeling of continuous skill

Some clever usage samples:

  • using skills actively from the 2nd hotbar
  • ensuring you don’t lose casts because of Grim Dawn skill interruption
    • your skill not registering / buffering while other skills animations are in progress
  • multiple movements skills while holding one button
  • World Map instead of just Local Map with one button press
  • Aether Ray on LMB
  • making a (movement) skill use Force Move automatically so that it doesn’t lock on enemies
  • pick up all items around by holding a button instead of pressing it repeatedly
  • drop item from inventory with one button press (clicking with mouse not needed)

https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe 21-Nov-20

  • multiple clicks combos for changing pets to aggressive for example; can be combined with summoning them in 1 button, more here and in the documentation

  • you can generate 20 rings in GDStash with one press of a button


https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.ini (excessive showcase config file)


https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster_old.exe (before name changes)
Old documentation (before name changes, new is below)


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


Documentation - excessive config explained

The program reads command line / shortcut arguments
GDAutocaster.exe config.ini     (reads config.ini and skips file selection dialog)
GDAutocaster.exe config.ini whatever     (reads config.ini, skips file selection dialog, starts all autocasts on toggle automatically)


All sections and individual settings in this extensive config are optional.

[general]
game_window_id=ahk_exe Grim Dawn.exe
suspend_key=Tab
kill_on_exit=false

[autocast by toggle]
delay=1000

cast1=`:2
delay1=3000

cast2=`:6
not_hold_keys2=LButton,RButton
delay2=500

cast3=`:1
delay3=18000
reset_key3=1

[combo presses]
delay=300
initial_delay=0

combo1=j:7,3,6

combo2=h:t,1,2,t
delay2=200
initial_delay2=200

combo3=Space:1,1,1,1,1
delay3=2000
stop_on_release3=true

combo4=RButton:1,2
delay4=200
double_press4=true
double_press4_time_gap=300

combo5=CapsLock:m
key_native_function5=false

[autocast by hold]
delay=100

cast1=RButton:0,9
delay1=200

cast2=Space:2
initial_delay2=500

cast3=LButton:1
delay3=500
double_press3=true
double_press3_time_gap=300

cast4=Shift,A:1

cast5=CapsLock:5
key_native_function5=false

cast6=RButton:7,7,7,7
delay6=4000
inner_delay6=200

[combo holds]
initial_delay=0

combo1=LButton:7
initial_delay1=150
double_press1=true
double_press1_time_gap=300

combo2=RButton:6
initial_delay2=0

combo3=CapsLock:m
key_native_function3=false

[center casts]
cast1=RButton:7,6
initial_delay=0
delay=200
delay_after_cursor=40
closer_not_center=false

[fixed clicks]
delay=25
initial_delay=0
go_back=true

clicks1=(75,165)(80,90)[234,234]
delay1=25
initial_delay1=0
repeat1=5
translation1=200,200
button1=CapsLock
key_native_function1=false

[relative clicks]
delay=0

button1=1
rows1=2
columns1=10
width1=32
height1=32

button2=2
rows2=2
columns2=5
width2=64
height2=64

button3=3
rows3=2
columns3=5
width3=64
height3=96

[hide items]
hiding_buttons=RButton
ingame_hide_button=Space
hide_duration=3000

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

[automatic camera]
rotate_left=b
rotate_right=n
initial_delay=200
rotate_key=LButton
delay=200

.


[general] - settings of the program

[general]
game_window_id=ahk_exe Grim Dawn.exe
suspend_key=Tab
kill_on_exit=false
  • game_window_id [optional] {ahk_exe Grim Dawn.exe by default}

    • the default value is ahk_exe Grim Dawn.exe

    • you need to change it if you’d like to use the program in other games

    • can also identify by just window’s name: game_window_id=Grim Dawn

  • suspend_key [optional]

    • turns off/on all the hotkeys except itself

    • doesn’t turn off/on Autocast by toggle feature just hotkeys that do it

  • kill_on_exit [optional]

    • kills the program after you exit the game

    • false by default

.


[autocast by toggle]

  • only option for autocasting without touching the keyboard/mouse for skills like Blood of Dreeg all the time or for skills like Storm Totem when you don’t hold any buttons

    • for fighting when I hold RMB I usually disable it with not_hold_keys and spam it with Autocast by Hold instead because it has more options like initial_delay

      • which allows you to squeeze in some debuffs with a certainty that they are not interrupted by your autocasts

[autocast by toggle]
delay=1000
  • delay [optional]
    • global delay in-between button presses for all the buttons/autocasts unless overridden by delayX for a specific button what I usually do

    • 100 ms is the default if you don’t specify it IIRC

      • it may be an overkill over spamming skills, maybe 200 ms is better
      • for skills like Blood of Dreeg asap cast maybe use 1s

cast1=`:2
delay1=3000
  • a skill bound to 2 in-game (i.e. Wind Devil on 2 on hotbar) cast every 3000 ms by itself

  • turned on/off by ` (button over Tab)

    • you can and should bind multiple Autocasts on toggle to the same toggle button
      ` in this example

    • ` toggle button is a hotkey and thus it can be turned off/on by suspend_key


cast2=`:6
not_hold_keys2=LButton,RButton
delay2=500
  • skill bound to 6 in-game i.e. Ring of Steel cast automatically by itself every 0.5s if you pressed `

  • press it again to stop autocasting

  • not_hold_keys - this autocast is disabled if you’re holding LButton or RButton

    • I used it often to disable autocasting while I hold for example RMB and enable it then with different feature Autocast by Hold which has more options like initial_delay (time gap) to not interrupt other spells I’d like to cast just after pressing down RMB
cast3=`:1
delay3=18000
reset_key3=1
  • I explained reset_key in detail in the following post:

[combo presses]

  • sequences of button presses / clicks, rebinding the key

  • I combine it with [autocast by hold], [combo holds] and [center casts] in the same button using initial_delay, usually 200 ms per button press

[combo presses]
delay=300
initial_delay=0

combo1=j:7,3,6

combo2=h:t,1,2,t
delay2=200
initial_delay2=200

combo3=Space:1,1,1,1,1
delay3=2000
stop_on_release3=true

combo4=RButton:1,2
delay4=200
double_press4=true
double_press4_time_gap=300

combo5=CapsLock:m
key_native_function5=false
  • string of buttons presses activated by a button pressed

  • sample usages

    • casting all your permabuffs & pets with 1 button press, even if some of them are on the 2nd hotbar

    • casting multiple debuffs with i.e RMB before your other RMB (possibly) delayed spamming starts

    • actively casting a skill from the second hotbar (by swap, button, swap combo)

    • making a drop item button that doesn’t require you to pick an item before hands

  • delay [optional]

    • global delay in-between button presses for all the comboX unless overridden by delayX for a specific combo
  • initial_delay [optional]

    • global initial_delay before the combo starts for all the comboX unless overridden by initial_delayX for a specific combo
  • combo1=j:7,3,6

    • after pressing J, buttons 7, 3, 6 are pressed

      • 7 intstantly
      • 3 after 300 ms
      • 7 after another 300 ms (600ms in total from the start)
  • stop_on_release3=true [optional]

    • makes the 3rd combo stop if you release the button
    • you just make a short press, probably only the 1st press from the combo will be made
  • double_press4=true [optional]

    • activates the combo on a double press, useful for i.e. Pet Attack, Movement skills
  • double_press4_time_gap=300 [optional]

    • the time window you give yourself for the 2nd click/press after the 1st one to activate the combo
  • key_native_function5=false [optional]

    • blocks the key native function

    • I advise not to use it in general because you won’t block skills from Hotbars / in-game mouse action anyway I think

    • I used it here for Capslock to not light up when I use it for showing/hiding the map

.


[autocast by hold]

  • your default spamming / autocasting while holding some button(s)

  • combine it with [combo presses], [combo holds] and [center casts] in the same button using initial_delay, usually 200 ms per button press

[autocast by hold]
delay=100

cast1=RButton:0,9
delay1=200

cast2=Space:2
initial_delay2=500

cast3=LButton:1
delay3=500
double_press3=true
double_press3_time_gap=300

cast4=Shift,A:1

cast5=CapsLock:5
key_native_function5=false

cast6=RButton:7,7,7,7
delay6=4000
inner_delay6=200
  • your default autocasting while holding some buttons

  • first press is instant which might not be the case for [X] autocasting holding version

  • here the delay is not in between separate buttons but in-between full spams of multiple butons (will be explained below)

  • delay=100 [optional

    • the default delay 100 for spamming ASAP if I remember correctly
    • is overridden by delayK for specific castK
  • cast1=RButton:0,9

    • when you press RMB, the buttons 0, 9 are instantly pressed

      • but in that order, so if for example they are movement skills, 0 will have higher priority
    • if you continue to hold RMB

  • initial_delay2=500

    • spamming starts with 500 ms delay with a default frequency of 100 ms
  • double_press3=true [optional]

    • activates the spam cast after a double press + holds
  • double_press3_time_gap=300 [optional]

    • the time window you give yourself for the 2nd click/press after the 1st one to activate the cast
  • cast4=Shift,A:1

    • you can also demand holding multiple buttons but I personally never use it
  • key_native_function5=false [optional]

    • blocks the key native function

    • I advise not to use it in general because you won’t block skills from Hotbars / in-game mouse action anyway I think

    • I used it here for Capslock to not light up when I use it for showing/hiding the map

cast6=RButton:7,7,7,7
delay6=4000
inner_delay6=200
  • the new inner_delay option allows you to insert time delays between button sets of button presses

  • I use it i.e. to cast Amarasta only once per 4 seconds (not more often) but make multiple timed presses instead of one for the duration of 1 second for example to ensure it’s never interrupted by another skill animation (such interruption may or may not be possible depending on your config)

.


[combo holds]

  • holds down a button to have another button(s) held

  • combine it with [combo presses], [autocast by hold] and [center casts] in the same button using initial_delay, usually 200 ms per button press

[combo holds]
initial_delay=0

combo1=LButton:7
initial_delay1=150
double_press1=true
double_press1_time_gap=300

combo2=RButton:6
initial_delay2=0

combo3=CapsLock:m
key_native_function3=false
  • literally holds the button down

  • in the first combo

    • 7 is held if you hold LMB

    • some delay for pressing and holding 7 down is sometimes needed for it to work

      • for example for Aether Ray on LMB
  • but sometimes not, especially if you want non-skills to be held, i.e. Force Move, Stationary Attack

  • also the 1st combo was made to start working on the 2nd click + hold which has to be no more than 300 ms after the 1 click

  • hold after single button press is the default option

  • multiple buttons can be held IIRC

  • initial_delay=0 [optional]

    • is global for all the cast unless overridden by i.e. initial_delay1=300
  • key_native_function3=false [optional]

    • blocks the key native function

    • I advise not to use it in general because you won’t block skills from Hotbars / in-game mouse action anyway I think

    • I used it here for Capslock to not light up when I use it for showing/hiding the map

.


[center casts]

  • like Combo Press but also moves your cursor under your character’s feet for i.e. Inquisitor Seal

  • combine it with [combo presses], [autocast by hold] and [combo holds] in the same button using initial_delay, usually 200 ms per button press

[center casts]
cast1=RButton:7,6
initial_delay=0
delay=200
delay_after_cursor=40
closer_not_center=false
  • cast1=RButton:7,6

    • user’s mouse movement is blocked

    • cursor moves to the center of the screen

    • 7 and 6 are pressed with 200 ms delay in-between them

    • cursor goes back after that

    • user’s mouse movement is unlocked

  • delay_after_cursor=40

    • should be as low as possible
  • closer_not_center=false

    • I normally use it with true

      • which makes cursor not go to the center but slightly further from it so that the character’s rotation is not changing randomly which can sometimes happen with false

.


[camera]

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

.


[fixed clicks]

delay=25
initial_delay=0
go_back=true

clicks1=(75,165)(80,90)[234,234]
delay1=25
initial_delay1=0
repeat1=5
translation1=200,200
button1=CapsLock
key_native_function1=false
  • multiple clicks combos for changing pets to aggressive for example; can be combined with summoning them in 1 button

  • () means LMB click

  • [] means RMB click

  • go_back - moves cursor to initial position after the combo is finished

  • repeat - repeat the clicks from clicks that many times with optional translation

  • delay - time gap between clicks

    • increasing it might be needed if it doesn’t work properly
  • initial_delay - time gap before the whole combo starts

    • two combine it with summoning in 1 button
  • translation - next set of clicks (see repeat) is translated by this vector

    • this accumulates with multiple repeatings
  • button - press this to activate the combo

  • key_native_function3=false [optional]

    • blocks the key native function

    • I advise not to use it in general because you won’t block skills from Hotbars / in-game mouse action anyway I think

    • I used it here for Capslock to not light up when I use it for showing/hiding the map

.


[hide items]

[hide items]
hiding_buttons=RButton
ingame_hide_button=Space
hide_duration=3000
  • hides items on the ground after you press one of the hiding_buttons for hide_duration ms

  • hiding is maintained if you continue to press one of the hiding buttons or hold them

  • ingame_hide_button is the key from GD Keybinding called Toggle Hide All Items

.


[automatic camera]

[automatic camera]
rotate_left=b
rotate_right=n
initial_delay=200
rotate_key=LButton
delay=200

.


[relative clicks]

[relative clicks]
delay=0

button1=1
rows1=2
columns1=10
width1=32
height1=32

button2=2
rows2=2
columns2=5
width2=64
height2=64

button3=3
rows3=2
columns3=5
width3=64
height3=96
  • for generating items in GDStash
  • better explained here
    .

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
    .
18 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

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:.

As far as automatic camera is concerned, I can only do it like this


(at this exact speed, changing it is impossible, rotation based on where you’re cursor is at)

And here’s super fast manual camera rotation I use


Check out how I’m snipping those mobs

I cannot really know where’s your character’s is looking, I only detect the cursor position
(when you’re holding Left Click in the base version but that’ll be configurable)

2 Likes