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

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



EnablePrimaryMouseButtonEvents(1) 使能鼠标左键
SetBacklightColor(0,0,0) 设置鼠标灯光颜色(罗技502不支持,后面涉及RGB的我PASS)
Gun = nil 清空枪械指针(通俗点的解释就是让他什么都不指)
Gun_Table = {} 初始化时建立一个枪械数据库空表

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 清空开火按键(如果用鼠标左键开火,这个就没用)













Key_Tab = {} 新建一个鼠标按键表,用来存取鼠标按键信息
Keyboard_Tab = {} 新建一个键盘按键表,用来存取键盘按键信息
键盘G按键按下后......

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



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




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



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








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




假如在自动左倾状,自动抬起Q,倾斜标记赋值为0,假如在自动右倾状态,自动抬起E,倾斜标志赋值为0


G502鼠标滚轮控制左右倾,偏移滚轮打开,再按关闭,同时鼠标移动指示。




按住Shift再按鼠标G4按键,经过修饰后的按键为"s4"
按住Alt再按鼠标G5按键,经过修饰后的按键为"a5"
同时按住Shift、Alt再按鼠标G6按键,经过修饰后的按键为"sa6"
同时按住Ctrl、Shift、Alt再按鼠标G7按键,经过修饰后的按键为"csa7"










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


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


扔雷程序:释放鼠标左键,假如次时按了SHIFT按键,则自动跳一下,扔雷扔的远些。扔完雷自动切回第一把枪。









CTRL + 键盘G1 把第1把枪的宏指针存入第二个寄存器

存第1把枪械指针、倍镜信息、满配信息等



存第2把枪械指针、倍镜信息、满配信息





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

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


未完待续
