|
前几天逛国外的外挂论坛的时候看到有人提到python在FPS游戏方面的应用,当时帖子里写的是关于机器人farm游戏币的代码(每玩一局游戏会获得少量游戏币),帖子里还提到了可以用python写压枪宏,只不过没有写如何实现。我看了之后比较感兴趣,就学习了一下python,做了一个简单的小脚本出来。总的思路如下: 压枪宏当然就是要克服FPS游戏中枪械的后坐力,所以要在按下鼠标左键开火的时候触发鼠标向下移动的动作。这个很容易,查了下,用pyautogui模块中的MoveRel方法即可实现相对当前位置的鼠标位移。鼠标位移搞定了然后就是监听鼠标和键盘动作,监听键盘是为了给这个脚本设置一个开始和停止按钮,当按下F1时,可以开启压枪功能,按下F4时关闭功能。监听鼠标按下和弹起动作,然后设置一个标志,当发现鼠标是按下时即出发鼠标位移的方法。差不多就是这样了,然后调试了下,完美。
然而进入游戏后就有点出乎我的意料了,在游戏登陆界面的时候脚本还是可以生效的(此时还存在鼠标光标),但是一旦进入游戏后,脚本就失效了(此时鼠标光标已经没有了,只有准星),我猜想是否是因为无法获取到鼠标坐标而无法进行鼠标位移动作呢?于是我又修改了下程序,让程序在按住左键时连续输出鼠标的坐标,这次收集到了反馈,收集到鼠标坐标为一直为(980,540),也就是屏幕的正中央。这符合常理,因为准星嘛肯定是在正中间啦!但是似乎我无论怎么移动视角,向上看向下看,鼠标的坐标永远不会变。这就有点尴尬了,能通过position方法获取鼠标位置,但无法通过MoveTo或者MoveRel方法移动鼠标从而达到移动视角的目的。是否这两个方法无法作用于没有鼠标光标出现的情况?是否还有其他的模块能实现模拟鼠标移动,而不基于鼠标光标的(因为FPS的光标位置永远都是固定的)?
请各位大神指教一下!
|
|