罗技鼠标宏lua分享之压枪的实现
# 罗技鼠标压枪代码
## 本节重点代码:MoveMouseRelative(X, Y)
> 其中X、Y是表示直角坐标轴
>
> 当X等于0时,鼠标水平不移动,当X为正数则向右移动,为负数则向左移动
>
> 当Y等于0时,鼠标垂直不移动,当Y为正数则向下移动,为负数则向上移动
基于这个我们可以实现将弹道移动的方向调整过来
首先先在GHub里面创建一个新脚本如下:
```lua
function OnEvent(event, arg)
--OutputLogMessage("Event: "..event.." Arg: "..arg.."\n")
end
```
> 在此之前,我们先来学习一下判断语句 **if** 这是所有语言都是很重要的语句
>
> 它的形式是这样的:
>
> ```lua
> if 条件语句 then
>--正确条件下的执行语句
> else
>--非正确条件下的执行语句
> end
> ```
>
> 条件语句为真,即true
将脚本加一点判断实现代码一部分展示
```lua
function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then
MoveMouseRelative(0, 30)
end
end
```
> if (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then 是表示当鼠标左键被按压时发生的事情
基于这个操作,我们将这些代码重复执行几遍就能实现压枪操作,所以我们把代码写进循环里面
> 在此之前,我们先了解一下数组(一维数组)
>
> 数组是对象的有序排列,可以是包含行集合的一维数组,也可以是包含多行多列的多维数组。
>
> 在 Lua 中,数组是使用带有整数的索引表来实现的。 数组的大小不是固定的,它可以根据我们的要求增长,受内存限制。
举个例子:
```lua
a = {1, 2, 3, 4, 5}
OutputLogMessage(a)
```
> 接着再了解一下循环
```lua
i = 0
while i<5 do
OutputLogMessage(i)
i = i + 1
end
```
> 其中循环内容是这样的,第一次循环:
>
> i=0,i=i+1,当前的 i=i+1=0+1=1
>
> 第二次:由于上面的原因,现在 i=1,i=i+1=1+1=2
>
> ......
>
> 一直到 i=5 ,这时 **while i<5 do** 中 *i<5* 的条件不成立就会结束此处代码
不知道为什么,注释太多运行不了,所以记得删注释
```lua
yq = 3 -- 这是压枪开关对应的侧键
down = {5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3} --向下压枪 这里有20个数值
--想往下压幅度大一点一点就改大这里面的数值,或者在后面添加数值 改小反之
ZY = {-3, -3, -3, -3, -4, -4, -4, -4, -4, -4, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3} --向左右压枪
yaqiang = false --压枪开关判断
function OnEvent(event, arg)
if event == "MOUSE_BUTTON_PRESSED" and arg == yq then
--上面判断语句是鼠标被按压且按压的键是yq,yq也就是3
yaqiang = not yaqiang --这里 false = not false 即变成true 当再次按下就再次变成 false 实现开关功能
end
if yaqiang then
i = 1 --从第一个数开始
z = 1
if event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
Sleep(math.random(105, 115))
while (IsMouseButtonPressed(1)) do --当鼠标左键被按压时执行的循环
MoveMouseRelative(0, down) --向下移动20个数值
i = i + 1 --执行完这个下压,当大于的时候将会是nil将不会再移动,当i大于20就会是nil
if i>20 then -- i>20 表示向下压完成了
MoveMouseRelative(ZY, 0)
z = z + 1
end
Sleep(math.random(25, 35)) --下压延时
end
end
end
end
```
想调整就改down和ZY里面的内容,增加数值或者改大改小里面的数值
这里是删注释的代码lua.zip 可以下载去试试PUBG 奇怪,不知道为什么我这里就是运行不了,提示了Script Loaded(脚本加载)后按什么按键都没有反应(也修改过yq = 3(改成4、5、6、7、8、9都没反应)),删掉注释也不行,下面的按键运行框里也没有按键运行信息弹出,而用另一个压枪的脚本又可以,按键运行框里会出现使用按键的信息。
还用了chatGPT分析解决都不行,就很奇怪不知道问题出在哪了,还是我都没激活过这个脚本?是按鼠标中键激活的吗?
有没有大佬说一下。
以下是分析后的代码:
-- 压枪参数设置
local yq = 3 -- 压枪开关对应的侧键
local down = {5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3} -- 向下压枪,这里有20个数值
-- 想往下压幅度大一点一点就改大这里面的数值,或者在后面添加数值,改小反之
local zy = {-3, -3, -3, -3, -4, -4, -4, -4, -4, -4, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3} -- 向左右压枪
-- 压枪开关判断
local yaqiang = false
-- 按键事件处理函数
function OnEvent(event, arg)
if event == "MOUSE_BUTTON_PRESSED" and arg == yq then
yaqiang = not yaqiang -- 切换压枪开关状态
end
if yaqiang and event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
local i, z = 1, 1 -- 下压和左右压枪的数组下标
Sleep(math.random(105, 115)) -- 初始延时,防止误触发
while IsMouseButtonPressed(1) do -- 当鼠标左键被按压时执行的循环
MoveMouseRelative(0, down) -- 向下移动
i = i + 1 -- 移动到下一个数值
if i > #down then -- 下压完成后开始左右压枪
MoveMouseRelative(zy, 0) -- 向左右移动
z = z + 1 -- 移动到下一个数值
end
Sleep(math.random(25, 35)) -- 下压延时
end
end
end
看着不错,感谢大佬分享 哪个游戏可以直接用 jiaozidev 发表于 2023-3-26 21:10
研究了下这个语言,在一些端游自动释放技能不太好用。
遇到问题就解决问题{:301_997:} Z65156811 发表于 2023-3-26 21:11
哪个游戏可以直接用
FPS游戏都可以用,但是要自己调整数据 通俗易懂,简洁明了! 感谢分享 收藏收藏 试用看看,感谢分享