罗技游戏软件 LUA脚本编程 从入门到放弃 篇二:表与多按键
好,上一篇介绍了一下简单的连招函数之后,这次我们来看多按键如何实现。
现在的鼠标按键越来越多,所以我们可以给每个按键都分配一个功能,比如卡尔
如果鼠标按键不够多,我们也可以通过ALT、SHIFT、CTRL等辅助键的状态来给一个按键分配多组功能。
哦对了,首先有一个大家比较关注的问题,用宏或者脚本到底会不会被封?
确实,一部分职业比赛确实是禁用宏和脚本的。但前提是职业比赛,比如最近正在进行的DOTA2亚洲邀请赛这种级别。
然后,对于普通玩家,答案是:不会。
大家如果有搜一下罗技的这个脚本,会发现应用最多的是玩暗黑3的朋友们。
他们冲天梯冲层数啥的,有时候连续好几个小时都要重复同样的一套操作,每几秒或者十几秒重复一次,所以要冲得高基本都得用。
暴雪和V社目前都没有封禁普通玩家宏或者脚本的记录。并且暴雪官方蓝贴有表过态,只要不是自动游戏就没问题,具体可以搜索“暗黑三 宏 蓝贴”。
所以在上一期中,我才要整理一下,LGS的脚本到底能做什么,不能做什么。
如果能做的太强大,已经涉嫌外挂,那早就被人唾弃、淘汰了。
就比如吧,X手X灵的鼠标,最开始的大卖点就是鼠标自带付费压枪功能。它的压枪功能是外挂级别的,还要额外购买驱(wai)动(gua)。炒了一段时间后,四处被封禁,也就没消息了。哦对了,这个牌子是双飞燕底下的,但是最早炒作的时候只字不提,只会无脑说“我们是来自台湾的高端品牌”,完全撇清和双飞燕、国产的关系。外挂不好卖了之后,又回来打国产牌,现在都要在前头加上双飞燕二字~呵呵
好,说到按键多,G600应该无人能出其右吧……
我是不推荐大家买G600的,确实左右键有缺陷。懒得售后或者换微动了。
G600左面从9到20的侧键,我用其中9个来分配卡尔的9个技能。
同时为了避免误操作,将这些按键的功能都取消分配。
脚本里,按键序号是固定的,不受驱动功能分配的影响。就算把9号键分配成鼠标左键,脚本里触发的序号还是9。
LUA的表比较像数组+哈希表的组合,数字下标时,可以像数组一样使用,而非数字(字符串)下标时,则和哈希表一样的使用法。
LUA表的数字下标默认为1~而此处我直接从9开始设置,即为鼠标的按键序号。这样设置的话,1到8的下标内容就是为空(nil)。
下面的tMsEv也是表,L、R、M是字符串下标。对于字符串下标,LUA提供语法糖,你可以以tMsEv["L"]来调用,也可以用tMsEv.L来调用。用于没什么实际意义的LUA仿面向对象这个是因为上期讲过,罗技不同地方对前3个按键的定义不同,有的是左中右,有的是左右中……将其转换为常量就不会用错。
LUA表的这种特性,实际使用上还是比较灵活的。表里可以存任何东西,嵌套表或者函数都可以。
不过嘛,脚本语言的结构体好像基本也都是这样的,Python和JSON好像也都是这样的~
用表存放主要还是因为逻辑与数据的分离。在有相同功能逻辑的情况下,将数据分离,可以提升代码的可读性和维护性。以后要做增删改,就比较简单。
比如,你用的是DOTA1的按键模式,那么你只需要把表中的"D"改成相应技能的快捷键,就能用了,不需要改动代码。
如果此处没有将数据和逻辑分离开来,就得到主函数里面一个一个找……
主函数部分,稍微改一下写法。
if tBtns[arg] then 的这种写法,LUA比较常用,其他语言基本都不能省等号的判断。
这源于不同语言,对真和假的定义不同。有的语言0算假,有的语言只有假才算假,而在LUA里,只有false和nil(空),才算假,其他情况都为真。
所以此处意为,如果表中相应的按键有配置数据,则调用函数,若无,则它的内容就为nil。
然后,将表中内容传参。
主函数,循环就不讲了。
Sleep方面,仍然不建议间隔太短,还是容易失误。
比如卡尔大招切完之后,如果你是QWER模式,技能是会挤占D按键的,而这个过程也有一点延迟,间隔太短的话,新技能还没挤到D里,你按的是旧技能~
随机延迟是比较普遍的做法,你也可以缩短切球的延迟,只在大招之后留下100毫秒的缓冲时间。
此处由于格式较固定,所以就直接将逻辑写死,没有每次都判断是否为空。要求高一点的做法,需要做判断以防止报错造成的脚本中断,这个下期再讲。
嗯,此处还是一样,直接上视频。
摄像头效果就不指望了,看个响儿~
好,至于按键不够的时候,通过按下修饰键来对按键功能进行切换的部分,就留给大家自行思考,并不难。LSG提供IsModifierPressed函数,可以获取ALT,CTRL,SHIFT的状态,可以区分左右。
代码和罗技的参考文档都放到度盘里了,车牌号1bp3oOP5。
下期预告:全局变量与伪智能
朝3暮四郎
校验提示文案
A照老司机
校验提示文案
小涵宝贝_
这种辅助关键看软件层面,比如win api读内存之类的,这是可能被封的。
但是如果是一个纯硬件设备呢,实际上,世界上还没有一款游戏检测纯硬件的外挂、宏脚本,因为它和正常输入没什区别。
校验提示文案
荡荡的荡
校验提示文案
raffie_
倒背如流的幽灵漫步【手斜】
校验提示文案
magiclu
游戏只能得到微软的系统传给他的按键输入,比如SendInput发出来的和你手动按的是一回事,系统都当硬件级的来处理,再传给游戏,游戏只能检测你shift是不是按下了(GetAsyncKeyState,游戏没必要检测这个,而且这个检测也不准),鼠标的位置,运动轨迹之类的,除非菜鸟写的,不然不会出问题的
那些怕封的,还把按键宏直接写在鼠标键盘里,实际上游戏收到的数据和软件发出来的是一回事,那些用按键宏被封的人,肯定是写的太烂了,瞬间按一堆键,鼠标加速度超快
还有那些玩游戏打枪太准,看上去和外挂区别不大的职业玩家,被举报误封的,那些大神直播时还把自己的鼠标拍着。。。。因为游戏根本就检测不到写的正常的外挂,只能靠举报
校验提示文案
colintheunique
校验提示文案
geekstyle
校验提示文案
MorpheusM
校验提示文案
巴尼先生
校验提示文案
抹茶布丁
校验提示文案
值友3505398160
校验提示文案
joker-Nr
校验提示文案
荡荡的荡
校验提示文案
耶稣的晚宴Ex
校验提示文案
耶稣的晚宴Ex
校验提示文案
荡荡的荡
校验提示文案
荡荡的荡
校验提示文案
magiclu
游戏只能得到微软的系统传给他的按键输入,比如SendInput发出来的和你手动按的是一回事,系统都当硬件级的来处理,再传给游戏,游戏只能检测你shift是不是按下了(GetAsyncKeyState,游戏没必要检测这个,而且这个检测也不准),鼠标的位置,运动轨迹之类的,除非菜鸟写的,不然不会出问题的
那些怕封的,还把按键宏直接写在鼠标键盘里,实际上游戏收到的数据和软件发出来的是一回事,那些用按键宏被封的人,肯定是写的太烂了,瞬间按一堆键,鼠标加速度超快
还有那些玩游戏打枪太准,看上去和外挂区别不大的职业玩家,被举报误封的,那些大神直播时还把自己的鼠标拍着。。。。因为游戏根本就检测不到写的正常的外挂,只能靠举报
校验提示文案
joker-Nr
校验提示文案
值友3505398160
校验提示文案
抹茶布丁
校验提示文案
raffie_
倒背如流的幽灵漫步【手斜】
校验提示文案
朝3暮四郎
校验提示文案
巴尼先生
校验提示文案
小涵宝贝_
这种辅助关键看软件层面,比如win api读内存之类的,这是可能被封的。
但是如果是一个纯硬件设备呢,实际上,世界上还没有一款游戏检测纯硬件的外挂、宏脚本,因为它和正常输入没什区别。
校验提示文案
MorpheusM
校验提示文案
geekstyle
校验提示文案
colintheunique
校验提示文案
A照老司机
校验提示文案