一、鼠标宏介绍

        罗技鼠标宏的大名想必大家都知道,通过lua语言脚本编程可以实现一系列鼠标操作。

        对于某些游戏亦可以通过lua编程来写出完美的压枪轨迹,最终让子弹打到一个点上,达到正常人无法达到的水平。

准确的数据,于是就有了这篇文章。

二、如何实现的思路

  1. 要实现鼠标宏,首先要用计算机语言去模拟光标的移动,而在java语言中,可以找到Robat类来实现鼠标和键盘的操作。
  2. 在游戏中开枪时,每把枪相应的后坐力让子弹的弹道不稳,这个时候需要人手来压枪,也就是移动相反的方向借此来抵消后坐力,这样就能达到压枪的目的。所以我们需要让计算机模拟的光标也移动相反的方向以此来抵消后坐力。如何获取反向的数据呢?我们需要获取到子弹对应的弹孔坐标,然后根据弹孔的坐标移动相反的坐标,来抵消后坐力。
  3. 在java语言中,我们没有能获取gui界面外的坐标能力,只能使用java jni实现,于是我找到了一个jar包,jnativehook可以使我们获取到任意程序上的鼠标坐标。
  4. 现在我们有了鼠标坐标,我们要如何实现获取相关鼠标移动数据呢,这里有三个思路供大家参考。
  1. 买个鼠标宏,然后下载按键精灵,利用按键精灵记录下程序中光标移动的位置。
  2. 在墙上打出一个弹匣的子弹,去墙上把每个弹孔的位置记录下来,然后根据每枪上跳像素,方向,去反方向移动光标。
  3. 如果有程序可以模拟压枪,或者你提前知道下压的轨迹,那就可以不用考虑反向移动,直接照着轨迹每枪位置移动即可。

        这里我写的是csgo压枪,所以在steam创意工坊里有专门压枪的图,正好有压枪轨迹,以及每发子弹数对应的压枪位置,所以我直接采取第三种方法。

        第二种和第三种方法都是一样的,第一枪开枪是准的,也就是当前光标坐标,第二枪子弹会往上移动,假设基于第一发子弹x轴没变,y轴增加,这个时候子弹就是飘的,此时可以根据第一发子弹作为标准,思考如何让第二发子弹和第一发子弹落在同一个坐标上,得到答案:y轴减少对应的像素。(例如:第一发坐标x=0,y=5,第二发坐标x=0,y=10。此时鼠标应该在第一发的位置向下移动5个像素,所以鼠标需要移动x=0,y=-5。后面的每枪可以以此类推,用当前这一枪的弹孔坐标位置-第一枪弹孔坐标的位置,所得就是该移动光标的数据。

当然你也可以最近上一次的开枪弹孔坐标位置为基准,来获取相对小的移动数据。

对于第三种方法,就是傻瓜式,采取记录下第一枪开枪的弹孔位置作为基础位置,在基础位置之上移动鼠标到下一个弹孔,因为是正向的,还是后一枪的弹孔位置-前一枪的弹孔位置=要移动的坐标像素,然后在前一发的弹孔位置基础之上移动刚刚减去得到的数据即可。

当然你也可以第一次的开枪弹孔坐标位置为基准,来获取相对大的移动数据。

何为相对小的移动数据?何为相对大的移动数据?

例如从操场上的跑道,从前继节点到分别到50m,100m,150m,200m节点。(小)

例如从操场上的跑道,从头节点到分别到50m,100m,150m,200m节点。(大)

未完待续。。。。代码过几天上传