Wow. I never knew Force Move works like this. Actually I thought it was not working for me because itās working completely differently in i.e. Diablo 3. Now I want to use it with my scripts as well and think how to use it. For example if you want to Forcewave just in between monster and not target lock on any of them. Thanks a lot.
Vireās Might is a movement skill that leaves a trail of fire behind it. The skill can target an enemy or the ground. If your mouse pointer (cursor) is near an enemy, the game treats it as if the cursor was on the enemy. So, if your cursor is just past an enemy, but not a good bit past, the game will treat it as being on the enemy and instead of going past, you will hit the enemy. If you press your Forced Move key, the game doesnāt do the bit of treating near as being on the enemy and you will go right to the cursor (or as far as the power can go).
Note that you have to hold the Forced Move key when you press the Vireās Might key.
Iām jumping in a little late in the documentation convo but I would mention if it hasnāt been already that if you know programming already AHK is really easy overall and the documentation on its website is very good and easy to follow and shouldnāt take extensive reading to understand what to do.
[Edit] I overdid it. There was more complicated config before with [combo holds].
Simply bind periodic cast to Force Move and wellā¦ press Force Move
[periodic casts]
cast1=FM_BUTTON:VM_BUTTON
even initial_delay is not needed
Iām guessing that the colon means to do both at once.
Powbam,
Yes, if you can do programming, you can do AHK. I wasnāt asking about AHK documentation, I was asking about documentation of what is in GDAutocasterās .ini files.
GDAutocaster doesnāt work like that.
VM_BUTTON is pressed by the script.
FM_BUTTON only works and is pressed by you, not GDAutocaster. Hereās itās just a trigger for VM_BUTTON.
I preferred this behavior while testing and developing the program.
If youād like to have more control over it and FM_BUTTON pressed by the program, you would write it like that (same result):
[combo holds]
combo1=YOUR_BUTTON:FM_BUTTON
delay1=0
[periodic casts]
combo1=YOUR_BUTTON:VM_BUTTON
initial_delay1=50
delay=100
initial_delay1 for FM to be ahead of VM
Oh, right, thatās just normal behavior in the specification of a combo hold/periodic cast. The colon separates the initiating key and the results, so your initial example:
[periodic casts]
cast1=FM_BUTTON:VM_BUTTON
pressing the FM_button will result in the program seeing FM_BUTTON and then GDAutocaster will make the vireās might go off immediately. The problem with that is it make the FM_button always result in a VM, but I want to be able to use the key for other things, so your second example, with both the periodic and hold is much better for my needs.
This is a pretty good example of just how versatile GDAutocaster is. My compliments again.
You can also solve this problem in a different way. See the following code.
We use in-game keybinding Force Move for Vireās Might just as in the shorter code before,
but we also create a new button for just Force Move.
Surprisingly the new Force Move doesnāt trigger Vireās Might in a chain reaction.
[periodic casts]
cast1=IN_GAME_FM_BUTTON:VM_BUTTON
[combo holds]
combo1=NEW_VIRTUAL_FM_BUTTON:IN_GAME_FM_BUTTON
delay1=0
I added no_dialog command line argument (without ā-ā)
GDAutocaster.exe no_dialog
https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe
About the comments, it looks like IniRead will just store āERRORā or what was specified for default if a line isnāt in the format [text] or sometext=someothertext, so any line that doesnāt start with a ā[ā or have an equal sign in it will be ignored by GDAutocaster.
I also think you will probably ignore anything that has a keyword you donāt recognize, so a line that starts with something like Comment= will be look valid to IniRead, but will be ignored by you, so a convention of starting lines with something like that would work fine and solve the problem of putting in an equal sign in a comment by mistake and it having unexpected affects.
Hereās my current config with comments.
[general]
CMT= Tab stops most non-repeating stuff
suspend_key=Tab
[autocasting]
CMT= ` temporarily stops repeating stuff (holds and toggles)
master_hold=`
master_toggle=`
[camera]
CMT= 60 seems closer to 22.5 degrees for me. Not sure why.
angle=60
counter_clockwise=Numpad7
clockwise=Numpad9
rotation_key=Mbutton
delay=40
[combo presses]
CMT= pressing h causes all my toggles to go on (or off)
combo1=h:y,0,9,8,7,y
delay1=650
CMT= pressing right button makes plague, CoF, pox, and Devouring Swarm go off in that order immediately
combo2=RButton:5,1,7,9
delay2=100
CMT= pressing f makes Wendigo Totem go off right away
combo3=f:4
initial_delay=0
[periodic casts]
CMT= pressing f makes Storm Totem and SoC go off over and over, but after Wendigo Totem
cast1=f:2,3
delay1=100
initial_delay=100
CMT= pressing f makes Wendigo Totem go off every 4.5 seconds (the extra 0.5 makes it consistent).
cast2=f:4
delay=4500
initial_delay=4500
CMT= pressing right button makes plague, CoF, pox and DS go off every 1/2 second (if they are ready).
cast3=RButton:5,1,7,9
delay=500
Initial_delay=500
[6]
CMT= t toggles Blood of Dreeg going off every 15second
toggle_key=t
delay=15000
initial_delay=100
I tested this and it works fine with the comments.
You can write āanythingā in those comment lines, CMT= is not needed.
It will not make IniRead not read values properly.
(of course it shouldnāt start like any of the parameters)
Maybe because I only use IniRead to read single values in the program (not sure)
I donāt read whole section although it is possible.
I only use the first one
IniRead, OutputVar, Filename, Section, Key , Default
IniRead, OutputVarSection, Filename, Section
IniRead, OutputVarSectionNames, Filename
So it searches only for keywords= within [section] I guess
I understand completely. I was suggesting the use of the convention and using CMT to make sure that even putting delay=99 in a comment canāt have any affect.
Ok, sorry, although I thought for a while it might be your convention for clarity.
Btw I added this no_dialog option in case you missed my earlier post because we posted simultaneously so you couldāve missed it.
[edit] maybe instead of no_dialog it would be better if you just specified config file
GDAutocaster.exe config.ini
I like the idea of being able to specify the config file as a command line parameter. How about if nothing is specified, you look for GDAutocaster.ini and if something is specified, you use that as the config file name. If nothing is specified and there is no GDAutocaster.ini, you pop up the input file dialog.
Another related idea, is to add a way to refresh or change the current configuration by right clicking on the GDAutocaster icon in the system tray and selecting some new options(s). That would remove the need to shut down GDAutocaster just to restart it with a new configuration.
- If you run the program normally, you get config selection dialog window
- If you specify a command line param, it will treat it as config name and try to read it
- Thereās Load Config in Tray [displays Config Selection Window]
- Thereās Restart in Tray [restarts the program with the current config]
Done. I also implemented what I said ealier because I needed it for Restart in the tray To pass config_name parameter so that the program knows that it should read the same config instead of displaying config file selection dialog.
@RedPriest You wanted these things
https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe
You should consider making a bunch of your config files available for download as examples for people. Even better if you comment them, but that would be a bit of work.
Thanks again for being so responsive and willing to consider suggestions.
Wendigo Totem casting
Maybe also for Inquisitor Seal
W - Wendigo Totem
X, Y - other stuff
[combo presses]
combo3=RButton:X,Y,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W
delay3=200
stop_on_release3=true
[periodic casts]
cast1=RButton:Some_Spam_Attack
What it does is it:
-
attempts press Wendigo button multiple times to
-
ensure itās cast even if interrupted for some reason
-
even if it was on cooldown at the moment of pressing RButton
it may be available later -
the number of Wās x delay is so that itās less than Wendigo Totem cooldown
- so that itās cast once during every press and hold of RMB
-
stop_on_release - stops the combo when releasing RButton
-
-
why not spam Wendigo Totem in Periodic Cast all the time
-
itās unnecessary since Wendigo Totem has 15 second duration
-
means more availability when moving between packs
-
you donāt lose performance / DPS by casting it multiple times unnecessarily
-
Ā
I may play Flames of Ignaffar with Force Move. May be better.
Ā
Drop item from inventory with one button press
[combo presses]
combo2=NEW_BTN:LButton,DROP_BTN
delay2=0
Ā
Bugfix in Periodic Casts if having multiple trigger/held keys
If having something like that
[periodic casts]
cast1=Shift,LButton:1
It didnāt work if you pressed & hold Shift first and LButton after that (but it would if you did it in reverse).
Now itās fixed and the last XK in X1,X2,ā¦XK:Y activates the cast and checks if all Xās are held.
Ā
Update: Display config loaded in tray
Added an option to block native key function to combo presses.
combo5=CapsLock:m
key_native_function5=false
Normal behaviour of the program is that all native key functions are not blocked. Itās consistent with that you cannot block skills on 0-9, LMB, RMB anyway when you press these buttons (even if you override them in AutoHotkey like this: Rbutton::Something).
In the example above I use it just to have CapsLock diode not light up when I press it to show Map window.
https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe
1. New icon
(might need to reset icon cache / explorer - I had huge issue of displaying the new icon in my .git folder)
2. Ultimate hotkeys not working at first fix
- done by silently restarting the program every time 3s after the Gameās Window / Process becomes active
Yes, itās super shitty programming but it gets the job done.
I tested the program in Titan Quest and I needed to add hooks to Suspend & Master Keys for them to work.
After that the hotkeys never worked if you start GDAutocaster and then the game.
(you had to restart the program while the gameās active). Before it was occasional.
Iām hoping for this ultimate fix to prevent this issue completely
(which I tried to solve in a million ways since the beginning versions of the program).
I would be always grateful if you download the latest version after reading such posts.