dwr神 发表于 2021-4-15 10:52

罗技宏小白教程,我的第一个宏代码。

# 前面是废话,教程直接到后面
## 大佬看看就好,轻点喷
### 起因
###### 系统崩了 重装系统后 去罗技官网下载 GHUB 打开就是改改光效什么的,想起来我的g102好像支持宏的,然后去网上找了一堆脚本看看,本人也是做编程方面工作的最后写出了第一个自己的简易压枪。
###### 罗技用的lua 好多语法和c语言差不多 看语法可以直接去菜鸟 (https://www.runoob.com/lua/lua-tutorial.html)

### 直接上源码
```
lock =false

function OnEvent(event, arg)
        EnablePrimaryMouseButtonEvents(true)
        --OutputLogMessage("event=%s arg=%d\n",event,arg)
        --OutputLogMessage(arg)
        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


#####整个程序的主函数,每次你按下鼠标按键都会触发这个函数,event传递的参数是鼠标按下或者抬起,arg传递的参数是按键的编号,比如我的g102 鼠标左键按下时 event传进来的参数就是"MOUSE_BUTTON_PRESSED",arg传进来的就是1

###### 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 罗技官网然后编辑配置文件就可以了

### 问题
#### 目前有一个问题,换到板载内存后配置文件就失效了。
#### 通用版本压枪并不稳,每把枪弹道后座都不一样,后续有时间之后再优化吧。

CSGO01 发表于 2021-4-15 21:07

bestwars 发表于 2021-4-15 12:27

用心讨论,共获提升!

15607752474 发表于 2021-4-15 11:50

刺激战场和谐了,之前我也自己写过,没法用了

CSGO01 发表于 2021-4-15 12:11

aidjgo 发表于 2021-4-15 13:49

压枪宏就是作弊

dwr神 发表于 2021-4-15 13:59

15607752474 发表于 2021-4-15 11:50
刺激战场和谐了,之前我也自己写过,没法用了

不清楚我也只是研究一下,显卡都卖了 只能耍耍

dwr神 发表于 2021-4-15 14:00

aidjgo 发表于 2021-4-15 13:49
压枪宏就是作弊

我又没说他不是作弊,这个是教程 教的是编程

dwr神 发表于 2021-4-15 14:01

CSGO01 发表于 2021-4-15 12:11
他们只想用,不想学,弹道肯定用数组的好

刚开始写 后面再继续优化了

mule_52pj 发表于 2021-4-18 15:49

太厉害了,属于半硬件G了把
页: [1] 2 3
查看完整版本: 罗技宏小白教程,我的第一个宏代码。