欢迎光临散文网 会员登陆 & 注册

MDT-JS模组事件触发器

2023-07-13 22:28 作者:NullPointerErr  | 我要投稿

事件触发器,在MDT中就像一个广播,为游戏里各种事件的触发提供了一个信号,让游戏各个部分的运行更有逻辑,而在JS模组中也算一个相对重要的东西

事件触发

源码

从上述源码不难得出,事件触发有两种方法。接下来,我们将这两种方法结合到游戏直观的体会用处

on方法

上述代码在收到`WaveEvent`后会进行地图最高波数的检测与修改操作,并且在最后播放`wave`(Mindustry\core\assets\sounds\wave.ogg)的音效

不难看出,在传入参数时:

  • 第一个应传入`类型事件`

    所有可用的事件类型均在mindustry.game.EventType#58行以后

    所有js已经导入直接可用的事件类型可均在Mindustry\core\assets\scripts\global.js#129-196

  • 第二个应传入一个`函数`

    一般形式的函数和箭头函数均可使用

接下来将其改写成js形式,使每次`WaveEvent`发出后显示一段文本,可以得到

或许你注意到了,有一些事件在收到之后会额外附带一些信息,这些信息可以让我们进一步判断这个发出的事件是否是我们想要的,接下来我们结合源码体会其用处

上述代码会在玩家捡起T5级别单位时完成一个成就(成就系统我不清楚是以什么样的形式显示的)。再查看`PickupEvent`的定义

我们便可以知道,这些额外的信息为拾起单位、被拾起单位和被拾起方块

所以在使用on方法时,我们可以在传入第二个参数(即函数)时给函数添加一个形参,用于接收这个具体事件的额外信息

然后,将其改为js的形式,使每次`PickupEvent`发出后且被拾起方块边长为2时显示一段文本,可以得到

run方法

这段代码会在收到`teamCoreDamage`触发器时显示提示字样(实际上是间接显示的,只是本期教程针对的是`事件触发器`)

由此可以得出,在使用run方法时应传入参数:

  • 第一个为`触发器`

    因为触发器在游戏没有直接引入而是引入的`Trigger`,所以需要通过`Trigger`来引用

    所有可用的触发器在mindustry.game.EventType#17找到

  • 第二个为`函数`

    注意的事项就和on方法一样。但不同的是,使用Trigger时没有额外的信息

于是,在核心受到攻击时,我们可以改写为如下形式

事件发出

如果没有事件没有发出,其他的东西也就不会触发,因而我们需要有发出事件的方法。接下来查看源码的定义

从这段代码,我们可以得出共有两种方法来发出事件,接下来结合游戏和源码

触发器

这段代码可以在本队核心受到攻击时,发出`teamCoreDamage`的触发器

于是我们便可以得出,若要使用发出一个触发器的fire方法,直接传入一个触发器即可,改写成js,并在点击任何地面时发出

类型事件

这段代码会在玩家研究新内容时,发出一个类型事件,并且附带`解锁的方块`这一信息

所以我们可以知道,在发出一个类型事件时,需要传入一个实例化的类型事件
将其改成js的形式,使核心在受到攻击时发出`UnlockEvent`可以得到

但是看完上述代码,你可能会有疑问:`Events.fire`不是本身就是个函数吗?为什么不可以直接传入`Events.run`的第二个参数,但由于内容加载的顺序(这个我并不清楚),如果将其改写之后会抛出空指针异常。所以我们需要将其写在一个函数里面,来避免这种情况的发生

后言

关于游戏原版的具体内容,大概上算是定型了,字段的名称也大概不会再变了,而且很多的字段翻译后即可简单使用。但是对于js模组,我个人也在慢慢摸索,所以会出的比较慢,每篇文章找游戏内合适的示例就要找挺久,同时请谅解一下

杂言

此处内容与教程没有任何关系

为在考之后,终于可以在回头更新一下js教程,稍微填一下之前留下的坑,但是考的结果不尽人意:行,文科更行,连擅长的科目都犯错尽管家人让我不要在意考试的成绩,让我暑假放松一下,但我发现我玩的时候压根就没法好好玩,玩的时候没法专注,玩完了以后又不知从何而来的负罪感和后悔感导致了学习不好、玩游戏不行,干啥啥行。感觉这三年来,我的情绪波动是越来越大,有些时候可能上一秒还在开心,然后就突然僵住。对于社交,是越来越胆以前我和别人在线下随便就搭上话了,现在和同学或老师交谈时连基本的眼神对视都不敢,不知从何而来的底气不足,有时交谈自己的真情时明明就是芝麻小事,都不知道为什么情绪控制不住,或者在网上玩狼人杀、或者cfm啥的多人游戏,明明别人都不认识我,见不到我,就是连个开麦说话的勇气都没有;队友观战我时,总是怕自己拖累整个队伍,明明都只是场游戏,但我发现我做不到。学习成绩比我好,心态好的人可比我多太多了,每次都会想:对这个世界有什么用处呢?又或者我自出生到现在以来是不是过于矫情了呢?总是觉得自己之前做过的事情都非常的傻,每次都会怀疑之前为什么做这件事情。大概就说这么多吧

MDT-JS模组事件触发器的评论 (共 条)

分享到微博请遵守国家法律