✓ ESS21仅限 【TA】【特性】011 PBEffects(0617)

TAAAAAAA

天王
管理成员
2024/06/16
279
4
39
1,270
011 PBEffects

这期教程,我们来讲解PBEffects。

你如果去翻特性效果文件的话,可能会翻到“PBEffects”,比如说这个特性——
1721562605637.png
这个是恶作剧之心。

那么,PBEffects到底是什么呢?
PBEffects其实就是一类效果。
这里的这个PBEffects效果,它本质上其实也是一种基于battler的变量,按理来说,我们应该是在前面讲基于battler的变量的时候就讲到它的,但是我们并没有。
之所以把它单独分出来,是为了更好的分类和管理。

我们打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\007_Other battle code里的001_PBEffects.rb。
可以看到,它也是通过模块进行管理的——
1721562618018.png

你如果再稍微翻一下,你就会发现其实有4类PBEffects,分别是——
针对battler的,也就是精灵的——
1721562628659.png
针对position的,也就是精灵所在的位置的——
1721562641257.png
针对side的,也就是队伍的,或者说某一方全体的——
1721562653506.png
针对field的,也就是全场的——
1721562665213.png

而我们用的最多的,也就是第一类了,所以在这里我们也只会讲解第一类,另外的三类,请自行研究。

那么,怎么新加一个PBEffects呢?
很简单,照着它的格式来,不要问为什么,做就对了。

往下拉到第一类的最后面,找到这里——
1721562677212.png
接着在下面加上你的PBEffects,我们就随便加个Test吧——
1721562689172.png

那么,这样就好了吗?
还不行,你还需要初始化。

那么,在哪里初始化呢?
还记得我们前面讲基于battler的变量的时候,是在哪里初始化的吗?
没错,就在那里,是相同的地方。

那么,我们就打开“那个文件”进行初始化,找到这里——
1721562702692.png
按照格式,添加上我们这里新增加的这个PBEffects——
1721562714332.png
这个时候,要初始化到什么,就要根据你的这个效果来了。
你想做什么样的效果,决定了你该怎么初始化。

比如说,我想用这个effects[PBEffects::Test]效果来控制精灵的特性一次出场只能发动一次。
关于如何做特性一次出场只能发动一次的效果,因为我们前面已经讲过了,相信大家已经很熟悉了,那我们这里的话就是用PBEffects的方式再做一遍——
1721562726292.png

现在,effects[PBEffects::Test]已经可以用了,那么怎么用呢?
请回忆一下之前的教程,这里我就不再过多解释了。

这是我们用之前的方式实现的活力焕发的代码——
1721562738052.png
现在——
1721562752429.png
可以看到,这里的话我们需要用到两行代码,这是因为我们用前面的方式做的时候是新写了一个方法,所以只需要调用方法就好了。
而这里的话,我们并没有新写方法,我们是在直接改变变量的值,当然这里说“变量”实际上是不对的。
总之就是,先检查这个PBEffects是不是true,是就直接跳过,不是的话,先标记为true,接着发动特性。

当然,我们也可以按照之前写的格式新写一个方法——
1721562764406.png
这样的话,就变成了这样——
1721562779485.png

那么,请自行进入游戏测试,看一下用PBEffects,并且新写一个方法,或者不写新的方法,是否能实现相同的效果。

我希望你真的自己动手去尝试过再看下面的内容。

在前面的教程中,我说过我额外安装了Deluxe Battle Kit和Enhanced Battle UI这两个插件。
如果你也安装了Deluxe Battle Kit这个插件,这个插件也叫做DBK,那么实际上活力焕发这个特性根本就不会发动。
为什么呢?
因为在DBK里有一个方法覆盖了原始的ESS中的方法,就是这个方法——
1721562793497.png
而我们就是在这个方法里把活力焕发所用到的StartOfRoundEffect接入到战斗系统中的。
这是在ESS中的这个方法——
1721655504996.png
也就是说,同名的方法只能有一个,如果有多个同名的方法,后面的方法将会覆盖前面的方法,前面的方法就失效了。
因为游戏在启动时,会先加载原始的代码,再加载插件的代码,所以原始的ESS中的方法就会被插件中的同名方法覆盖了。

所以,我们需要在新的pbCommandPhase方法里,重新把StartOfRoundEffect接入到战斗系统中——
1721655378698.png
这样就好了。

同时,这其实也引出了一个思考,那就是,你在安装新的插件的时候,一定要看过插件的代码,注意好兼容性问题。
通常来说,插件里面新写的方法一般不会有问题,但是,如果插件里有原始ESS中的同名方法,那你就需要留个心眼了。

还有一种是alias,往上面就能看到——
1721562836255.png
alias的一般也是不会有问题的。
alias就是别名,就是为原始的方法取了一个别名,因为已经取了别名,就不是原始的名字了,自然也不会覆盖原始的方法。

那么现在,请再次自行进入游戏测试。

那么这期教程就到此为止,下期教程我们将会讲解破格。

视频预览(0722)——

浏览附件2024-07-22 21-24-39.mp4

感谢阅读。
 

在线成员

现在没有成员在线。

论坛统计

主题
543
消息
2,484
成员
3,165
最新成员
暗鹰ex