Him8848 发表于 2023-3-26 20:33

罗技鼠标宏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

大黑屋 发表于 2023-3-26 21:01

可以下载去试试PUBG

silverKirsi 发表于 2023-3-29 12:08

奇怪,不知道为什么我这里就是运行不了,提示了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

ddfboy 发表于 2023-3-26 20:53

看着不错,感谢大佬分享

Z65156811 发表于 2023-3-26 21:11

哪个游戏可以直接用

Him8848 发表于 2023-3-26 22:01

jiaozidev 发表于 2023-3-26 21:10
研究了下这个语言,在一些端游自动释放技能不太好用。

遇到问题就解决问题{:301_997:}

Him8848 发表于 2023-3-26 22:02

Z65156811 发表于 2023-3-26 21:11
哪个游戏可以直接用

FPS游戏都可以用,但是要自己调整数据

angxi6 发表于 2023-3-26 22:41

通俗易懂,简洁明了!

baijiu520 发表于 2023-3-26 22:56

感谢分享

wangL0 发表于 2023-3-26 23:51

收藏收藏

netpeng 发表于 2023-3-26 23:54

试用看看,感谢分享
页: [1] 2 3 4 5
查看完整版本: 罗技鼠标宏lua分享之压枪的实现