Thanks a bunch. I will try them all This tool is a must for me along with GDstash for smoother gameplay. Thanks again for your effort
No problem, if you have some questions or suggestions, just tell me
Are we limited to N=1 to 9, in castN and comboN under each section?
Well it can be increased no problem if needed here: https://github.com/kowariantny/GDAutocaster/blob/master/Defaults.ahk
global _MAX_NUMBER_OF_COMBINATIONS := 9
Iâm working on a build that has many skills and Iâm trying to do a lot of different things with them. I ran into the limit and had to start removing some of my more basic binds (like holding down a key to keep picking stuff up) to allow for more combinations for skill affects.
Are you suggesting that I create my own version using the code in Github or just saying that it wouldnât be hard for you to change?
P.S. Did you ever figure out how to make coordinates work right on a secondary monitor?
I can change it for your if you want it. I guess you could change it yourself and compile, itâs just a few clicks but Iâd rather adapt to programâs users, have more universal program first than have them creating their own versions but first Iâd like to see your config because thereâs always a chance
- you donât see a way to shorten it
- maybe I can change a program somehow to accommodate
Iâm not stubborn however and even if youâre doing some gimmicks itâs fine for me. I just wanted to have a look.
I havenât but Iâm not sure if I searched for it / work on it too much.
I leave this task to you Google and maybe you can make a simple script with
this simple function (that stores cursor position) to contain actual coordinates
on your second monitor.
MouseGetPos, xpos, ypos
It makes coordinates be stored in xpos and ypos. And you can display them by
MsgBox, %xpos% %ypos%
Hmm⌠or maybe I can change the fix I made for you thatâs no longer needed (and was also not working I think) so that it contains constant corrections width_correction height_correction etc
Maybe you could check if thereâs a fixed error based on your monitor resolution or something.
I use âautocast by holdâ a lot, with the hold making the skill(s) it sets off repeat on appropriate timers. Using 3 skills on 1 key often requires cast1, cast2, and cast3, since each of the 3 skills is on a different timer (has a different duration). This isnât a problem for skills that are cast on cooldown, but for stuff that lasts longer than its cooldown (lots of these), it is pretty much a requirement.
I havenât done any programming, except GDAutocater scripts since 2012 when I retired (30 years doing software design and programming). Not so sure I want to start again, so Iâll just not use center casts. I do think the secondary monitor correction is a fixed, but very large amount, but I didnât figure out the exact numbers, just approximated it enough so that I could set up a key to set pets to aggressive.
I spent a little time adding some commentary to my .ini since my key set-up is a bit unusual. The build (lvl 95 and Iâm in the middle of making some changes, but they wonât affect the keys): https://www.grimtools.com/calc/RZRwOWxN
The .ini is quite long. Iâm sure there are many things that could be done differently. Iâm not really happy with how Savagery/Primal Strike is set up, for example. Also, Iâve been playing with the build itself and how all of this is working together quite a bit. Everything does seem to be functioning at the moment.:
CMT= Number keys 1-0 are duplicated by a,s,d,f,q,w,z,x,c,v, repectively.
[general]
CMT= Tab stops most non-repeating stuff
suspend_key=Tab[camera]
CMT= 60 seems closer to 22.5 degrees for me. Not sure why.
CMT= Not even sure this stuff is working any more. Havenât been using it mostly.
angle=60
counter_clockwise=right
clockwise=left
rotation_key=Mbutton
delay=40[combo presses]
delay=100
initial_delay=100CMT= pressing h causes all my toggles to go on and does summons (or off)
CMT= âyâ is swap bar key.
combo1=h:y,0,9,8,y
delay1=500CMT= Pressing âFâ makes Devouring Swarm (DS on f/4) and Curse of Frailty (CoF on s/2) go off
combo2=f:4,2
key_native_function2=falseCMT= Pressing RButton makes Savagery and Primal Strike (on the key) go off
combo3=RButton:c,c,c,RButton
key_native_function3=false[autocast by hold]
delay=100
inner_delay=100
initial_delay=100CMT= holding g repeatedly picks up items and interacts with stuff in the area (g is my pick-up key)
cast9=g:g,b
initial_delay9=200CMT= holding b repeatedly interacts with stuff nearby (chests)
CMT= cast8=b:b
CMT= delay8=200
CMT= initial_delay9=200CMT= CMT= Holding âFâ makes CoF go off every 8.5 Sec
cast1=f:2
delay=8500
initial_delay1=8500CMT= Holding âFâ makes DS go off every 5 seconds
cast2=f:4
delay2=5000
initial_delay2=5000
key_native_function2=falseCMT= Holding âWâ makes Bloodthirster go off on Cooldown
cast3=w:6,6,6,6CMT= Holding RButton makes Savagery go off every 1.8 seconds (2 sec charge fade)
cast4=RButton:9
delay4=1800
initial_delay4=1500CMT= Holding RButton makes Primal Strike go over and over
CMT= Tried not programming this and just using the games key hold functionality
CMT= and tried combo hold, neither worked well for some reason.
cast5=RButton:RButton
initial_delay5=100CMT= Holding âAâ makes Wendigo Totem go off every 13 seconds
cast6=a:1
delay6=13000
initial_delay6=13000CMT= Holding âDâ makes Sigil of Consumption go off whenever it is ready
cast7=d:3CMT= holding z makes move fasts (move power on x/8) go off as soon as they are ready
cast8=z:8
delay8=350[combo holds]
CMT= In addition to doing my move fasts via forced move (/), âZâ keeps me moving toward my cursor (Up)
combo1=z:Up,/
initial_delay1=100[autocast by toggle]
CMT= t toggles Blood of Dreeg (on q/5) going off every 17 seconds
cast1=t:5
delay1=17000
autocast_right_away1=False
reset_key1=q
GDAutocaster supports having the camera turn to the direction your character is facing. See the [Automatic Camera] section. If you mean youâd like the camera to act like an MMORPG camera and follow you over the shoulder, there is a mod that lets you change the camera to lower the angle, but it doesnât auto-follow your char facing. Unfortunately, that mod and this one are not compatible, so you can/t use them together. I know because I asked about that in an earlier post.
Edit - To clarify, GDAutocaster actually makes your char face your cursor (mouse pointer) which changes the camera direction. Not the other way around. The other mod enables you to change the camera angle, but doesnât turn your character or the camera automatically at all.
Well this has been fixed, you can delete that comment
Why global initial_delay for combos here?
This makes combo1, combo2 be initially delayed unnecessarily.
Also I think delay might be a bit too big here (100 ms between casting differrent spells).
But if itâs working you then ok. But if sometimes 2nd spell in combo doesnât work it might be the reason.
This is kinda weird but if it works than fine.
There isnât really a perfect solution for Primal Strike and Savagery I feel like.
That would be also appropriate for every playstyle.
I donât think these key_native_function3=false does work here.
I mean RButton is clicked anyway if I remember correctly (due to game engine).
But for letters it might work so that for example F only activates the combo but is not pressed.
There are no inner_delay and initial_delay for this section.
The last two lines of the quote above do nothing.
I donât think initial_delay is needed here but not sure as I havenât combine these two into one button personally
I think you could remove this combo if you wanted to
and cast DS in your DS autocast by hold as follows
CMT= Holding âFâ makes DS go off every 5 seconds
cast2=f:4
delay2=5000
initial_delay2=0
key_native_function2=false
instead of what you currently have
CMT= Holding âFâ makes DS go off every 5 seconds
cast2=f:4
delay2=5000
initial_delay2=5000
key_native_function2=false
and CoF in your CoF autocast by hold as follows
CMT= CMT= Holding âFâ makes CoF go off every 8.5 Sec
cast1=f:2
delay1=8500
initial_delay1=200
instead of what you have currently below.
btw YOU HAVE ERROR!!! delay instead of delay1 !!!
CMT= CMT= Holding âFâ makes CoF go off every 8.5 Sec
cast1=f:2
delay=8500
initial_delay1=8500
This should be just cast3=w:6 here. It would work the same.
This is bad! You need to use combo_hold
If itâs not working we need to investigate it. You may be losing attacks this way.
Iâve never had problems with Combo Holds.
Although there might be problems because in Grim Dawn
you cannot really hold two skill button at the same time I think
(they wonât work). Maybe that was the reason.
Anyway, I encourage you to revisit it together and make combo holds work here.
I understand what youâre doing here.
Wendigo Totem is also bound to A.
But imo far more elegant is to to remove initial_delay here
and have all the casts including the initial one done by this cast.
Also since Wendigo Totem is crucial to our survival,
I highly recommend using inner_delay here (I dropped initial_delay):
CMT= Holding âAâ makes Wendigo Totem go off every 13 seconds
cast6=a:1,1,1,1
delay6=13000
inner_delay6=200
Now it will press 1 multiple times every 13 seconds.
This is great when first cast of Wendigo Totem doesnât work, i.e. is interrupted.
Itâs does nothing when Wendigo is cast the first time because the skill has cooldown.
I even recommend even more presses, actually as many as possible
but so that NUMBER_OF_PRESSES X INNER_DELAY < WENDIGO_RECHARGE
Maybe itâs your preference to have so many buttons
but wouldnât you like to incorporate it into your RButton for example
with some initial delay if needed if you donât like it cast just after starting attacking trash monsters?
May I ask whatâs that? I donât get it
Since youâre using Blood of Dreeg both manually (reset_key) and automatically
I recommend the delay to hold the following inequality (I hope I didnât make mistake):
delay1 + blood_of_dreeg_recharge < blood_of_dreeg_duration
or
delay1 < blood_of_dreeg_duration - blood_of_dreeg_recharge
This assures that whenever you manually reset the Blood of Dreeg automatic clock
for example you manually press / reset when itâs still on cooldown
Blood of Dreeg is still guaranteed to be permenantly on
If this inequality is not held, there might be an unforunate moment where you donât have
Blood of Dreeg on.
Tell me. Do A, S, D, F⌠are also bound to Skill1, 2, etc
in Grim Dawn keybindings? If that so I think this is a mistake
and it might make i.e. Combo Holds not working.
I think itâs best when A only casts i.e. SKILL1 using script not by the game.
Because then the button is unnecessarily held and it may cause problems
In Grim Dawn when holding 2 buttons bound to two skills in-game it wonât work.
They wonât be both spammed, only one, thereâs blocking going one and we never want stuff like that.
I only have 1 - skill1, 2 - skill2 primary keybindings usually.
I donât use secondary keybindings (sometimes I make an exception).
Not sure about having so many entries about Savagery / Primal Strike
seems unnecessarily complicated but not sure and if it works for you then fine.
But if you describe to me how youâd like it to work then maybe I can simplify it and make it work.
Also one more thing to consider - modding Savagery so that it has cooldown,
so that we can spam it without any issues.
I will increase the number of possible combo / casts (since your config looks legit for the post part)
and maybe log mouse position / screen width to the file so that we know how to correct it?
What do you think?
Just like @GaeanC mentioned. These are not compatible.
This is the authorâs of the free camera (Grim Cam) / camera behind back possible fault
because his modification overwrites / deletes the in-game keyboard rotation that I need for automatic rotation. Iâd gladly fix it but this is beyond my programming knowledge. I do have source code though.
Important update! Mouse Wheel
- WheelUp
- WheelDown
- WheelLeft
- WheelRight
was not working correctly in
- Combos
- CenterCasts
- Fixed and Relative Clicks
- Hacker (Speed / Stats toggles)
- Hide Items
Basically the combos such as
[combo presses]
combo1=WheelDown:1
triggered only once and after that stopped working altogether.
The reason is Wheel {Up, Down, Left, Right} are not released, donât send UP signals
which caused spam protection to not be turned off after 1st usage.
blocking every next usage as a consequence.
Also an interesting observation - donât ever check Wheel state,
i.e. GetKeyState(âWheelUpâ, âPâ)
tqFan,
Somehow I missed your 2 posts about my scripts, but I found them now. Iâm going to have to take some time to go through them to understand and play with all the stuff you point out (and Iâm going to have to play that build more. I set it aside as I wasnât enjoying it. Perhaps I will like it more after making some of your suggested changes.
Just going to give more info on this one part of your comments, since it seems very important and is easily shown.
Below is a pic of my keybinds. Before I started using GDAutocaster, I only used the letter keys. When I started using it, I added the number key binds because all your examples were based on the number keys and at the start I didnât fully understand it all. Now, it is like that because I have lots of GDAutocaster scripts and donât want to have to change them all.
I never directly press the number keys and they are only mapped for use within GDAutocaster. If I were to only bind the number keys, Iâd have to use GDAutocaster for every single power I use directly (yes, I do that sometimes. ) and most certainly need more than 9 combos, just for a base set of combo presses.
Re: more binds. Oh yeah!
Iâd be happy to do some testing with a version that logs screen position and width if it will help get the secondary monitor thing fixed. Switching which is main is rather annoying.
Ok. Iâll repeat again the basic fact about Grim Dawn skill usage you need to understand:
-
if you press and hold 2 buttons with skills bound to them in Grimi Dawn at once
only one of them will be spammed and other will be blocked
Thatâs one of the main reason GDAutocaster is so useful, as you can go around this limitation if you instead hold some button that hasnât got skill bound to it in Grim Dawn Keybinding but only in GDAutocaster (by Combo / AutocastByHold for example where itâs only pressed not spammed). You can have 10 buttons pressed down even and every skill is going to work assuming at most one of them is natively bound in Grim Dawn. But if youâre holding a button with native bound you cannot have ComboHold working at the same time (to another skill) because then youâd have 2 skills pressed down and held at the same - one natively, by autocaster.
You unnecessarily locking everything with the way how you do things.
For example letâs look at this
CMT= Holding âFâ makes DS go off every 5 seconds
cast2=f:4
delay2=5000
initial_delay2=5000
key_native_function2=false
Devouring Swarm is bound to both F and 4 in-game.
But why? It makes no sense here, youâre supposed to be casting DS by GDAutocaster here
while youâre holding F not by Grim Dawn
- see my changed version that doesnât need F to be bound to DS in-game, only 4
Why this is a problem? Because of what I said - your basically pressing down button with skill bound to in Grim Dawn so theoretically spam it (like you would try if you didnât use GDAutocaster at all) yet youâre trying to time it and cast with defined interval in GDAutocaster at the same time.
It doesnât many any sense to combine these two at the same time:
(this is what youâre doing in the fragment of you config above)
-
holding down Devouring Swam button
- telling Grim Dawn to spam it all the time
- probably wonât work due to what I mentioned in the beginning
but thatâs an intention youâre sending to the game
- probably wonât work due to what I mentioned in the beginning
- telling Grim Dawn to spam it all the time
-
casting it precisely at given intervals with GDAutocaster
F shouldnât be bound in key-bindings here (unless its some your other spam attack and you know what youâre doing it for). This way it blocks other skills that you may be hold-spamming (i.e. something on Right Click in-game natively or some Combo Hold with GDAutocaster) are simply blocked by other skills that you hold at the moment.
You use GDAutocaster to precisely cast skills yet youâre holding their real buttons at the same time?
In my option you should delete all you LETTER keybinds.
Then youâll better understand how you should use GDAutocaster better.
You pressing and holding RMB - some skills, etc 1, 2, 3 are cast in some defined, scripted way
You press and hold F - other skills 4, 5, 6 and maybe 1 again are cast in anther scripted way
You press and hold A - skills 7, 8, 9 are cast in a scripted way by GDAutocaster
ETC
But you shouldnât have and donât need to have skills bound to your letters in general
No, YOU WOULDNâT.
Because youâre not supposed to cast every single skill manually, not even close to that.
Youâre missing the point of GDAutocaster here - to reduce numbers of buttons neededâŚ
Ok you may have some of your letter bindings if needed
-
but absolutely donât hold them while youâre casting the same skill by GDAutocaster at the same time
-
or donât hold them if youâre holding other stuff at the same time
- whether itâs combo hold or native hold of some other skill (or the same)
but you need to understand what youâre doing incorrectly in your config
(the DS example above) because it will cause problems / doesnât make sense
No they not. They show initial_delayX and inner_delayX which is only cast specific.
I donât have section-global versions of these parameters for autocast by hold
I now understand what you are saying about one key hold at a time in GD. That explains a lot of the odd behaviors Iâve experienced!!!
Some key points from how I use GD and GDAutocaster
- I have many GD characters with different builds.
- I think every one of them has a script, if only to do stuff like pickup all by holding one key
- I do cast skills that have no scripting
- I do not ever press the number keys
- I do not want to have to remap my keybinds when I switch characters or skills
- I often want to press and hold multiple keys to have GDAutocaster cast a set of skills over and over.
Since I donât want to remap the keyboard differently and donât want to press number keys, I think I either:
- only use letter to skill mapping and use âkey_native_function=falseâ on every key I want to hold down, which I believe keeps GD from ever seeing the key being held down
or
- only use number to skill mapping and have every skill mapped to a letter key in the script for each character.
Is this correct or am I missing something?