手撕PUBG罗技LUA脚本(进阶部分) |
您所在的位置:网站首页 › cfn94枪 › 手撕PUBG罗技LUA脚本(进阶部分) |
写在前面,该脚本为作者本人自己开发,代码不多,大概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 |