罗技游戏软件 LUA脚本编程 从入门到放弃 篇一:开关与简单连招 您所在的位置:网站首页 罗技鼠标宏配置文件编写 罗技游戏软件 LUA脚本编程 从入门到放弃 篇一:开关与简单连招

罗技游戏软件 LUA脚本编程 从入门到放弃 篇一:开关与简单连招

2023-09-04 10:17| 来源: 网络整理| 查看: 265

罗技游戏软件 LUA脚本编程 从入门到放弃 篇一:开关与简单连招 2017-03-27 18:39:57 75点赞 211收藏 56评论

开关与简单连招

罗技的驱动程序,从最早的Mouseware,到后来的SetPoint,再到现在的罗技游戏软件(Logitech Gaming Software),除了不支持旧鼠标比较操蛋,功能上的增强还是有目共睹的。特别是LGS有真正的脚本编程功能(非普通宏),不免会引来一些遐想:我能用这个功能做到什么程度?

事实上,LGS的脚本功能相较于外挂,甚至是按键精灵来说,是相当弱的。它有许多做不到的事情。

LGS做不到的事情有:(基于8.91.48版本)

不能屏幕取色。按键精灵有屏幕取色的功能,以实现外挂的编写。LGS当然不行。

不能响应普通键盘按键。LGS能响应的,只有驱动本身支持的鼠标按键,以及G系列键盘的M键、G键。敲下字母或者回车或者空格之类的,是不能响应的。

不能响应滚轮事件。目前LGS只能模拟滚轮,而不能响应滚轮。也就是说你只能通过别的事件,模拟滚动。而不能接收滚动事件,去做别的事。

不能区分具体设备。LGS的事件只能区分设备类别,键盘,鼠标,或是G13之类的左手控制器,但不能区分具体设备。比如同时插了G500和G600,事件无法区分。

搞明白什么做不到,也就相当于知道了大概能做到什么。

再来看LGS用的脚本语言。LGS用的是LUA,名气可能没有PYTHON大,但是在游戏行业应用还是相当广泛。以前我在某游戏公司做到过LUA项目监制,所以相较于照抄百度百科就号称内部员工的标题党,以及号称自己家3个月宝宝可以将近12个小时不吃不喝不拉稳稳安睡的夸张党,我觉得自己还是有点真干货可以分享的。

开关与简单连招

LGS的脚本,是和配置文件相绑定的。

开关与简单连招

我们可以为每个程序单独设置一个配置文件,省去手动切换的麻烦。只需要配置主程序即可,不属本文范畴,不再赘述。

最近一直都在更新DOTA2的解说,那就先拿DOTA2来做例子。注意,本系列主要的目的是认知LGS的功能,熟悉一些LUA语法,从而知道要实现某功能的时候“该怎么做”,而不是说一定就得这么做。毕竟,需求永远是在变的。

开关与简单连招

调试脚本的过程就不上了,我们直接来看成品的代码。

开关与简单连招

LGS的事件统一由OnEvent这个函数触发,并传递event, arg, family这三个参数。event指定事件类型,是鼠标按下,还是放开等。arg传递事件参数,按下的是哪一个键。family传递设备类型,只会有"mouse","kb","lhc"这几个结果,所以区分多鼠标是没希望了。

关于LGS的事件以及参数等API的详情,驱动是有自带文档,但为英文。国内有人翻译成中文,但是谢绝转载,所以请搜索“Logitech Gaming Software G 系列 Lua API 中文参考文档”以获取。

--do return end;这句注释掉的请直接无视。其实就是不想用脚本的时候,取消注释,就无条件返回。但是,LUA的语法里,return只能放在一个块结尾的前面,所以不能直接返回,而要用do和end包起来。

IsKeyLockOn这个函数可以判断键盘上三个灯的状态。大小写、NUMLOCK一般都有用,所以我还是用scrolllock这个键作为脚本的开关。以前写的魔兽改键器War3assis也是用这个当开关。

-------------------------------------------------------------------

而具体的代码,还是从简单开始吧,毕竟从入门到放弃嘛开关与简单连招

开关与简单连招

这是一个DOTA2沙王跳大的脚本。第一期的内容比较简单,属于用宏也可以做的。关键是熟悉LGS内部函数、参数的运用以及相应的LUA语法。

首先是语法细节。细心的朋友会注意到,有的单句末尾我有加分号,有的没有~嗯,是的,LUA并不强制加分号……开关与简单连招

然后是LGS的一些基础函数的应用。PressKey就是按下某按键,确切的说,在你用ReleaseKey松开某按键之前,是“一直按住”状态。这里用来模拟按住SHIFT跳大。PressAndReleaseKey就是按下并马上放开,可以比先PressKey再ReleaseKey省一句代码。Sleep是延迟功能。可能有接触过编程的朋友,有Sleep会导致某种卡死的印象,不过那是其他语言的事件,和线程有关。在这里不必担心,就是普通的延迟。最后,LGS有一个很坑的地方要提醒大家:

在OnEvent传递的参数里,123代表的值是左右中。而在PressAndReleaseMouseButton函数里,123代表的是左中右。

看出区别了么~简直坑爹~比较好的办法是把这些数值定义成参数常量,使用的时候使用参数。这个下期再讲。

然后呢,我用的是DOTA2的QWER按键布局,所以大招是R,跳刀的按键是V。如果用的是DOTA1按键,大应该是C,而物品就是PressAndReleaseKey("num4");了。

其实这段脚本比较关键的,反而是中间的SLEEP延迟。延迟太短或太长,都有出问题的风险。这个延迟根据你的用途都不一样,基本每个脚本都要精确到0.1秒级别去调。

延迟能大的,建议还是大一点为好,太快的话,很多时候都会出现问题。比如如果有DOTA1玩过来的朋友,用猛犸跳大,有时候会莫名失败,没跳出来,为什么呢?DOTA1的跳刀你如果跳身后的话,英雄是会进行一个小的转身,再跳出来的。而这时候如果你手快直接V了,在英雄还在转身的时候,还未跳出就一屁股坐下去,空大~此处直接上配套视频看效果。

就算简单连招用宏也能做,但是脚本仍然具有相当的优势。比如我需要启用的时候只需要开启scrolllock键,不用按掉即可。如果用宏,还得进驱动设置。编辑起来也更方便。

好的,第一期的内容就先到这里,代码放到度盘里,车牌1bp3oOP5。

下期预告:表与多按键开关与简单连招



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有