求助各位大佬,我是ahk萌新,想在《怪物猎人:世界》这款游戏中使用按键宏,实现以下效果(以下简称效果1和效果2):
1. 如果单独按下LShift(在松开LShift之前没有输入其他按键),在松开LShift时输出按键序列F3 6 7 8 F1,每一个按键之间间隔25毫秒;
2. 如果按住LShift的过程中输入了其他按键,不输出按键序列F3 6 7 8 F1,而是保留其原本的功能(例如游戏中LShift & W是向前跑)
以下是我的代码:
#Requires AutoHotkey v2.0
~LShift:: {
otherKeysPressed := false
shiftVK := GetKeyVK("LShift")
ih := InputHook("L0 V")
ih.OnKeyDown := (ih, vk, sc) => (vk != shiftVK && (otherKeysPressed := true))
ih.Start()
KeyWait("LShift")
ih.Stop()
if (!otherKeysPressed) {
Send "{F3}"
Sleep 25
Send "6"
Sleep 25
Send "7"
Sleep 25
Send "8"
Sleep 25
Send "{F1}"
}
}
我遇到了两个问题:
1. 在游戏外(记事本)进行测试时,效果1是正常的,效果2有问题:LShift & W正常输出了大写W(这个没问题),但是当我松开LShift时,仍然执行了按键序列F3 6 7 8 F1(这个有问题,我需要的效果是,如果按下LShift之后输入了其他按键,那么不执行按键序列F3 6 7 8 F1,仅保留LShift原有的功能)
2. 在游戏内进行测试时,效果1和2都是有问题的:游戏内置键位LShift是有其原本的功能的,LShift=收刀,LShift W=向前跑。这个游戏内置功能的优先级似乎比脚本高,当我按下LShift时,大概率执行收刀操作,并没有改为输出按键序列F3 6 7 8 F1(我需要的效果是,如果单独按下LShift,不执行其原本功能,改为输出按键序列F3 6 7 8 F1;如果LShift是作为组合键按下的,保留其原本功能)
我的尝试:
搜过教程,但是没搞明白;问过ai,但ai给的代码会报错
来贴吧求助大佬,谢谢
1. 如果单独按下LShift(在松开LShift之前没有输入其他按键),在松开LShift时输出按键序列F3 6 7 8 F1,每一个按键之间间隔25毫秒;
2. 如果按住LShift的过程中输入了其他按键,不输出按键序列F3 6 7 8 F1,而是保留其原本的功能(例如游戏中LShift & W是向前跑)
以下是我的代码:
#Requires AutoHotkey v2.0
~LShift:: {
otherKeysPressed := false
shiftVK := GetKeyVK("LShift")
ih := InputHook("L0 V")
ih.OnKeyDown := (ih, vk, sc) => (vk != shiftVK && (otherKeysPressed := true))
ih.Start()
KeyWait("LShift")
ih.Stop()
if (!otherKeysPressed) {
Send "{F3}"
Sleep 25
Send "6"
Sleep 25
Send "7"
Sleep 25
Send "8"
Sleep 25
Send "{F1}"
}
}
我遇到了两个问题:
1. 在游戏外(记事本)进行测试时,效果1是正常的,效果2有问题:LShift & W正常输出了大写W(这个没问题),但是当我松开LShift时,仍然执行了按键序列F3 6 7 8 F1(这个有问题,我需要的效果是,如果按下LShift之后输入了其他按键,那么不执行按键序列F3 6 7 8 F1,仅保留LShift原有的功能)
2. 在游戏内进行测试时,效果1和2都是有问题的:游戏内置键位LShift是有其原本的功能的,LShift=收刀,LShift W=向前跑。这个游戏内置功能的优先级似乎比脚本高,当我按下LShift时,大概率执行收刀操作,并没有改为输出按键序列F3 6 7 8 F1(我需要的效果是,如果单独按下LShift,不执行其原本功能,改为输出按键序列F3 6 7 8 F1;如果LShift是作为组合键按下的,保留其原本功能)
我的尝试:
搜过教程,但是没搞明白;问过ai,但ai给的代码会报错
来贴吧求助大佬,谢谢