手撕PUBG罗技LUA脚本(进阶部分)

您所在的位置:网站首页 cfn94枪 手撕PUBG罗技LUA脚本(进阶部分)

手撕PUBG罗技LUA脚本(进阶部分)

2023-12-14 23:04| 来源: 网络整理| 查看: 265

        写在前面,该脚本为作者本人自己开发,代码不多,大概2000行左右,与市面上流传的大多数鼠标宏和脚本思路不太相同,由于同时使用了G502的鼠标和G910的键盘,因此功能多了好多。这个脚本的稳定性自认为没多大问题,差不多断断续续用了5年了;至于压枪效果,自认为也算是上等水平。话不多说直接开撕......

主程序配置文件被激活(仅在最开始的时候执行一次)

EnablePrimaryMouseButtonEvents(1) 使能鼠标左键

SetBacklightColor(0,0,0) 设置鼠标灯光颜色(罗技502不支持,后面涉及RGB的我PASS)

Gun = nil  清空枪械指针(通俗点的解释就是让他什么都不指)

Gun_Table = {}   初始化时建立一个枪械数据库空表

在枪械数据库表中插入一个off(key,键,索引),后面大括号内就是插入的数据(值,value),插入的数据还是一个表(二维、多维表格,想象成数组也可以)

Gun_Code = "turn_off",   在Gun_Table["off"]表中插入Gun_Code(key)= "turn_off"(value)

Function = function() Gun = nil Fire_cycle = nil end  Function是一个参数,这个参数包含function这个函数(子程序),这个函数的目的是为了:清空枪械指针和开火循环子程序(主要是连点用)有点绕嘴。

Load_Gun_Table()  加载枪械数,这个是一个函数(子程序),后面带括号的(),不管里面写没写字,都是一个函数(子程序)。

------    OnEvent还没结束,我遇见哪个函数就讲哪个    ------

这个是枪械的主数据,每把枪都是一个单独的表,放在了一个总的表Gun_Table里面,找两把枪,单独讲一下,M762(全自动)和MK47(单发)

枪械代码:Gun_Code = "M762",       Gun_Code = "MK47_S_10",

枪械模式:                                         Gun_Mode = "Single_Mode",

开枪间隔:Interval = 11.25,                Interval_S = 104,

下压次数:Press_Step = 8,                Press_Step = 8,    (1发子弹下压8次,平滑)

屏息倍率:Ratio_Shift = 1.327,          Ratio_Shift = 1.327,

下蹲倍率:Ratio_Ctrl_N = 0.84,         Ratio_Ctrl_N = 0.85,

                  Ratio_Ctrl_S = 0.84,         Ratio_Ctrl_S = 0.85,

倍镜倍率:Ratio_4X = 3.65,               Ratio_4X = 3.85,

满配倍率:Gun_all = 0.78,                 Gun_all = 0.73,

单枪倍率:Gun_Ratio = M762_Ratio,Gun_Ratio = MK47_S_10_Ratio,

弹道数据:"4.4x8",                             "30x1",         (第1发子弹和第2发子弹间下压距离)

                  "3.6x8",                             "12x1",         (第2发子弹和第3发子弹间下压距离)

                  以此类推......

全自动枪:4.4x8代表每步下压4.4个单位距离,一发子弹下压8次

单点枪械:30x1代表8步一共下压30个像素,每步下压30/8=3.75个单位距离

Fire_cycle = nil    清空开火循环子程序

Fire_key = nil       清空开火按键(如果用鼠标左键开火,这个就没用)

遍历整个枪械数据表,将原始压强数据展开,具体不用考虑这里面怎么操作的。取消绿色OutputLogMessage备注可以在软件里看到弹道数据,有点乱,平时不用打开。这个就不讲了,目的为了初始化枪械重新封装了outputlogmessage函数初始化单点枪械数据,也不讲了初始化显示信息

Key_Tab = {}                 新建一个鼠标按键表,用来存取鼠标按键信息

Keyboard_Tab = {}       新建一个键盘按键表,用来存取键盘按键信息

键盘G按键按下后......

罗技键盘G键按下、抬起,按键信息存入键盘按键表,按下就是true,抬起就是false

鼠标按键按下后......

鼠标按键按下,假如按的是OFF关闭压枪宏按键且OFF按键双击使能打开,则判断双击时间是不是小于100毫秒,如果小于,执行OFF按键双击子程序双击OFF按键,自动按下抬起吃药按键

Medicine_key = "9"    把吃药按键绑定为9,9在游戏里设置为打绷带,则双击OFF自动打绷带。如果不想使用此功能,可以将Off_Key_D_Click_enable = true 改为 Off_Key_D_Click_enable = false

鼠标按键抬起,配合前面按下使用锚函数假如锚函数存在且锚函数返回true,则啥都不执行,直接跳过后面。

说白了就是先判断按键有没有其他额外功能,如果有,执行完了特殊功能后,就不去执行后面的程序了。

有鼠标按键被按下,且按键表2号按键(鼠标右键)抬起状态

        通俗点的讲,就是右键没被按下的状态,有鼠标其他按键按了(左键,中键、G4、G5、G6....)

假如按下的键是,瞄准保持按键且没按ALT按键按下瞄准键P,延迟5毫秒,按下下蹲替换键(目的不和CTRL下蹲冲突),瞄准标记赋值为1这些按键在程序最上方,可以改精准延迟,替代Sleep()延迟假如当前不在自动左右倾斜(QE)状态且自动左右倾使能则执行自动左右倾假如在自动左倾状,自动按下Q,倾斜标记赋值为1,假如在自动右倾状态,自动按下E,倾斜标志赋值为1

我的QE是反向的,可以在程序最开始处更改。

互换这两个或者互换这两个假如在自动左倾状,自动抬起Q,倾斜标记赋值为0,假如在自动右倾状态,自动抬起E,倾斜标志赋值为0G502鼠标滚轮控制左右倾,偏移滚轮打开,再按关闭,同时鼠标移动指示。G502鼠标滚轮控制左右倾,偏移滚轮打开,再按关闭,同时鼠标移动指示。按键不是2,也就是不是鼠标右键按键加修饰并赋值给局部变量key修饰按键函数

按住Shift再按鼠标G4按键,经过修饰后的按键为"s4"

按住Alt再按鼠标G5按键,经过修饰后的按键为"a5"

同时按住Shift、Alt再按鼠标G6按键,经过修饰后的按键为"sa6"

同时按住Ctrl、Shift、Alt再按鼠标G7按键,经过修饰后的按键为"csa7"

假如按了一键拾取按键,则执行自动拾取函数拾取按键绑定的是鼠标G4按键自动拾取函数,获取鼠标当前坐标,然后按住鼠标左键,快速右移动6次,然后释放鼠标左键,再把鼠标回位到最开始的位置鼠标按键设置假如按了标记按键“a1”,alt+鼠标左键,程序自动按J按键标记自动左右倾使能开关,同时键盘M灯指示假如按了手雷按键ALT+G5,则执行boom_key_button赋值arg也就是5,同时把雷拿出来,读秒计时,再把雷扔出去按键盘4切换到手雷,按住鼠标左键,然后拉环

手雷绑定键盘4号按键,拿出来雷以后程序自动按鼠标右键,然后拉环

把读秒计时函数赋值给Fire_cycle开火循环

假如M1按键释放(这个是自动的),则假如按键boom_key_button不为空且按键表里5这个按键是被按下没在抬起状态,则每间隔100毫秒,系统自动按下M1按键,重复这个循环,直到抬起了鼠标G5按键,或者读秒超过3秒,则自动执行Boom_Throw()把雷扔出去。

扔雷程序:释放鼠标左键,假如次时按了SHIFT按键,则自动跳一下,扔雷扔的远些。扔完雷自动切回第一把枪。CTRL+鼠标G6关闭打开鼠标右键双击使能,同时M指示灯指示鼠标滚轮按下,瞄准及下蹲复位鼠标瞄准保持键G5抬起且没按鼠标右键,则瞄准、下蹲及左右倾复位按住了鼠标右键的同时,如果按下左右倾(鼠标滚轮偏移)或瞄准保持按键G5,自动下蹲,如果按了拾取键G4,则自动切换左右倾方向。键盘G键按下,且没按鼠标右键,按键经过修饰赋值给key训练场试枪按钮,添加枪械水平右移4个单位没用,作废CTRL + 键盘G1 把第1把枪的宏指针存入第二个寄存器存第1把枪械指针、倍镜信息、满配信息等CTRL + 键盘G2 把第2把枪的宏指针存入第二个寄存器存第2把枪械指针、倍镜信息、满配信息键盘G4按键,换枪且自动更换枪械宏指针换枪换宏程序Shift + 键盘G4清空寄存器

清除两个寄存器的指针、倍镜信息、满配信息

简化了修饰按键,封装成函数

未完待续



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3