找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4128|回复: 0

[讨论] python在FPS游戏中的应用试验

1

主题

1

帖子

1

积分

贫民

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表