前面是废话,教程直接到后面
大佬看看就好,轻点喷
起因
系统崩了 重装系统后 去罗技官网下载 GHUB 打开就是改改光效什么的,想起来我的g102好像支持宏的,然后去网上找了一堆脚本看看,本人也是做编程方面工作的 最后写出了第一个自己的简易压枪。
罗技用的lua 好多语法和c语言差不多 看语法可以直接去菜鸟 lua菜鸟教程
直接上源码
lock =false
function OnEvent(event, arg)
EnablePrimaryMouseButtonEvents(true)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 5) then
notLock()
end
if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and lock) then
start()
end
end
function notLock()
lock = not lock
end
function start()
repeat
MoveMouseRelative(0,1)
Sleep(9)
until not IsMouseButtonPressed(1)
end
教程
直接剖析程序
function OnEvent(event,arg)
end
function notLock()
end
自己定义的函数了,作用就是改变全局变量lock的值,为什么要改他的值 后面会说
function start()
end
依然是自己定义函数,作用就是压枪
剖析整个函数
从第一部开始,按下鼠标左键,遇到第一个罗技的API EnablePrimaryMouseButtonEvents(true) (所有的罗技api都在开发文档里面 后面我会上传) 这个api的作用是开启鼠标左键的检测,罗技默认关闭了鼠标左键, 接着往下OutputLogMessage("event=%s arg=%d\n",event,arg),前面的--为注释,注释了的代码不会执行,这个api是作用是打印,打印括号里面的东西,双引号里面是字符串,后面为值。
开始到第一个判断了
if (event == "MOUSE_BUTTON_PRESSED" and arg == 5) 判断鼠标是否按下 and 按的是5键(5号键对应鼠标的侧键),and是且的意思,两个都满足才执行里面的内容,这里因为我们按下的是鼠标左键 arg就等于了1 所以直接到下一个if
第二个判断
if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and lock) 同样的判断 同样的and 鼠标按下 and 按的是5键 and lock,这里就体现了lock 的作用 因为上面我们lock定义了一个false,所以这个判断结果为false,并不会执行, 这样整个函数就跑完了,你就发现什么都没有做 因为全跳过了,
所以体现了lock的作用,一个开关,不可能按下鼠标左键就往下压吧。当你按下鼠标5号键 lock就为 not lock ,not就是非的意思 ,比如你lock现在等于false not一下就等于了true ,如果现在是true not一下就等于false了,
重点函数 start
压枪的函数了,压枪说白了就是在你按下开火的同时把鼠标往下移动,那我们就需要一个api了MoveMouseRelative(x,y),移动鼠标,x的值为横向移动,正为右,负为左,y的值为纵向移动,正为下,负为上,移动有了 那我们不可呢只移动一次就完了 这个时候加一个循环repeat until 结算循环的条件放在until , IsMouseButtonPressed(1) 这个api为判断你是否按下鼠标,里面写的1就是鼠标左键,我们要的是按下就一直循环,所以在前面加一个not 就实现了一直循环,循环完成了,执行的时候发现压得太快了,一瞬间就到了底部,程序的运行都是毫秒级的,所以基本就是一毫秒往下动一次, 这个时候需要加一个延时,Sleep(1),里面传的数越大,延时就越久。
总结
看了几个脚本后写出来的,最简易的版本了,按下就往下拉鼠标,加了开关。
纯新手的不知道脚本在哪写的 先去下一个ghub 罗技官网 然后编辑配置文件就可以了
问题
目前有一个问题,换到板载内存后配置文件就失效了。
通用版本压枪并不稳,每把枪弹道后座都不一样,后续有时间之后再优化吧。
|