【教程】 唯的小白Lua教学 第五期:Lua脚本实战——自定义键位技能

大家好。这里是唯。

还有最后一个理论要讲,不过我们把它放在实践里。接下来的教程会手把手带大家思考,实现一些小功能。编程其实就是这样的一个过程,你把你的小积木搭好了,不断堆砌起来,就是一座你的小城堡。既然走到这里,我默认你已经看过我前面四期的教程,当然,看不懂,看了不明白或者没看,也不要紧,跟着我一起动手,一起思考,就会成功的。

好了,话不多,我们开始。

一、实现一个小功能

我们这里实现一个简单的小功能:按下某个我设置好的键位,触发一个我们想要的技能。

1、创建一个名叫skill.lua的lua脚本,当然,名字可以随意,接下来的实现你也可以和我不同,但是步骤是一样的。

2、为了让脚本顺利被LuaScript识别,我们需要一个函数来运行我们的代码。

3、函数写好了,我们想一想我们的功能:按下一个键,触发一个技能。

键盘的键位需要查询键盘的ascii码表,来得到它的对应编号。随便找一个看起来舒服的键盘ascii码表网页:

https://www.bejson.com/othertools/keycodes/

为了避开大家的惯用键,就选一个不常用的键吧。这里我选择C键。你也可以选别的,你喜欢就好。

4、想一下我们的功能:如果按下了C键,触发一个技能。触发什么技能呢?我们现找一个吧。还记得第四期的Lua控制台吗?我们就用它来找技能。

LuaScript官网:https://docs.alcedogroup.com/

我们看一下,键盘的函数有好多,选哪一个呢?效果最好的是单击的,单击的函数有两个:

看描述似乎看不出很大的区别。但是实际编写代码的过程中,后者更好用,前者有延迟,有时候不会响应。所以我们采用后者。写一下代码,C键的ascii码是67。

好了,按键的逻辑写好了。之前我有的Mod没有考虑写手柄按键,现在要注意啦,那,怎么加手柄的按键呢?一样的,找一下手柄按键的函数。同样有两个,我们也选后者吧。


查一下手柄的按键代码。我不太清楚手柄的按键,这里就选LB吧,按键代码是12

那么,只要按下了鼠标和手柄其中一方对应的键位,就可以触发我们的技能。所以用或(or),二选一来完成。继续完善我们的代码。

这里,外边括号的作用和数学里的括号是一样的,带括号的运算优先级更高。加括号只是我为了逻辑清晰而已,因为之后可能还要加条件。

为什么不用and?请想一想,如果是and的逻辑,那么,就需要键盘按下C的同时手柄也按下LB,这显然不是我们想要的效果。

5、寻找,添加技能。

运行技能的函数也有两个,它们分别是:

选哪个呢?这次不是后者了。

运行Fsm动作,是运行了派生表里的动作,运行的这个动作,如果有派生,可以按出派生,如果有判定,判定会生效。

但是如果运行Lmt动作,那么本质上只是执行了动画,而且只是这个动作的动画。比如说,假如一个动作有两段完整的动画,一段是攻击动作,一段是后摇,那么,如果用Lmt来跑的话,这个动作的后摇并不会执行,因为在Lmt里的这个动作的后摇和攻击的动画是分开的;也不会有判定,因为只是运行了动画。

好了,清楚了这一点之后,我们以太刀为例,去找一个平时按不出的技能,试试。

不会使用Lua控制台的,说明你第四期没有看,我这里不重讲了,回去看吧。

这里我们选用逆袈裟做示范,逆袈裟本来是要袈裟斩之后才能按出来。

它的Fsm是3,70。我们完善一下代码。

好了,我们的小技能写好了。刚才为了查看Lua控制台的Fsm,我们进入了游戏,现在可以退出了。

把我们刚才写好的小脚本,放成这个样子:nativePC/LuaScript/skill.lua

当然,你也可以学着自己打包Mod,新建一个文件夹,名字是你自己想取的Mod名字,然后在里面新建一个nativePC文件夹,再在里面新建一个LuaScript文件夹,然后把刚才写好的skill.lua脚本文件放到LuaScript里。之后压缩一下,压成压缩包,就可以安装了。是不是很简单呢?

现在可以重新进游戏看看效果了。

我按了C键,游戏里没有这个键触发逆袈裟的说法,所以它显示的按键是错位的,但可以看到,我没有任何前置动作,就打出了逆袈裟。现在你应该体会到Lua的乐趣了吧?

不过这样写是不严谨的,会有问题。大家可以思考思考为什么有问题,有什么问题,其实,和上一期问题,是一样的。最好能结合我的教程,尤其是第四期,想一想怎么解决这个问题,我下一期会讲。代码很简单,不花几分钟,我希望大家动手写,我这里就不留我的代码文件了。

留一个小作业吧,用这样的逻辑,写一个其他武器,其他键位派生一个技能的。

光说不练可不行哦(笑)

好的,那么我们下期见。

by 爱尔斯蒂亚 更新于 2022-03-16
打赏后可直接下载附件 赠人玫瑰 手留余香
默认
最新
1