下面的代码是我一直在使用的 AHK 脚本。它工作得很好。本质上,它的作用是当我按住左控制键和鼠标左键时,它会帮我将鼠标拉下来。
我遇到的问题是,我需要光标完全停留在中间。我玩的游戏使得当你射击(按住鼠标左键)时,枪会左右“摆动”。遗憾的是,我每次尝试将其合并到下面的脚本中都失败了。
有人可以帮忙吗?
#NoEnv
SendMode Input
~F6::Suspend
~End::ExitApp
~F5::Reload
LCtrl & ~LButton::
Loop
If GetKeyState("LButton", "LCtrl") {
Sleep, 6
moveAmount := (moveAmount = 2) ? 1 : 0
mouseXY(moveAmount,7.5)
}
else
break
Return
mouseXY(x,y)
{
DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}
答案1
这是我第三次回答有关这个确切脚本的问题。
可能无论是谁编写的原始脚本,都只是从其他脚本中复制/粘贴了部分内容,然后就让它半工作了。
看起来像
moveAmount := (moveAmount = 2) ? 1 : 0
是做类似这样的事情的尝试。
它的作用是这样的:
如果 (moveAmount == 2) { moveAmount := 1 } else { moveAmount := 0 }
由于 moveAmount 未在其他地方设置,它永远不可能为 2,因此也永远不可能为 1,因此它将始终为 0。因此,没有水平移动。
如果你想交替向右看和向左看,你可以这样做:
moveAmount := (moveAmount == 2 ? -2 : 2)
这会将第一次迭代设置为 2,将第二次迭代设置为 -2,将第三次迭代再次设置为 2,依此类推。
这会将其向左移动,然后向右移动,然后向左移动等等
但我仍然觉得 moveAmount 应该在脚本的某个部分中声明,但该部分已经不存在了。
也许有人只是放弃尝试检测枪向左或向右移动了多少。