008 External More
这期教程,我们来讲解如何使用基于battler的变量。
在之前的教程中,我们已经是介绍过基于battle的变量和基于battler的变量的区别了,所以这里就不再重复了,如果你还不太清楚区别,请去看之前的教程。
在第9代的时候,有些特性得到了削弱,比如说苍响的不挠之剑,就变成了一场战斗只能发动一次,这个我们在之前的教程中已经说过该怎么做了;
比如说闪焰王牌的自由者,就变成了一次出场只能发动一次。
这期教程,我们将通过如何让一个特性一次出场只能发动一次,来讲解基于battler的变量的使用。
在讲解基于battle的变量的时候,我们说“当你想加一个基于battle的变量的时候,就在001_Battle.rb里加,照着格式来,第一步,增加attr_accessor :xxx;第二步,初始化。”
那么现在是基于battler的变量,实际上也是同理的。
我们首先需要找到在哪里加,接着——第一步,增加attr_accessor :xxx;第二步,初始化。
那么在哪里加呢?
打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\002_Battler里的001_Battle_Battler.rb。
往下拉,找到这个地方——
![1721295685927.png 1721295685927.png](https://bbs.pokefans.cn/data/attachments/2/2394-19db9e3daaf9142aa8a6b21b7f0d67ee.jpg)
接着在下面增加attr_accessor :abilityTrigger——
![1721295697778.png 1721295697778.png](https://bbs.pokefans.cn/data/attachments/2/2395-f97772f4b63ac7d14b1fda5571023df9.jpg)
接着,初始化。
基于battler的变量的初始化并不和基于battle的变量的初始化一样,基于battler的变量需要在另一个地方初始化。
打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\002_Battler里的002_Battler_Initialize.rb。
往下拉,找到这个方法——
![1721295711650.png 1721295711650.png](https://bbs.pokefans.cn/data/attachments/2/2396-c0a12c7e93cbd0c404084512f52c7c30.jpg)
继续往下拉,找到这里——
![1721295728794.png 1721295728794.png](https://bbs.pokefans.cn/data/attachments/2/2397-8261b4edfadaed380489669717919493.jpg)
在这个地方初始化——
![1721295739852.png 1721295739852.png](https://bbs.pokefans.cn/data/attachments/2/2398-f5eb4c5bc4e96434fb64d648cf30acba.jpg)
这里的初始化比较简单,直接false就好了。
因为这个变量是基于battler的变量,那么对于单个battler来说,特性要么发动了,要么没有发动,不是false,就是true。
所以默认直接false就好了,false就是特性还没有发动过,在特性发动过之后,就会变成true了,并且,在精灵换下场之后,这个变量会重置为false,这样就实现了特性一次出场只能发动一次的目标。
那么,如何让这个变量变成true呢?
在之前讲解基于battle的变量的时候,我们是新加了一个方法,来控制是否要变成true,但是在这里的话,实际上,我们其实并不需要新加一个方法。
但是,为了统一,我们也还是新加一个方法吧。
我们按照和之前相似的格式,新加一个方法——
我们把这个方法加到pbInitEffects(batonPass)的下方,这样就好了——
![1721295777485.png 1721295777485.png](https://bbs.pokefans.cn/data/attachments/2/2399-a82c4a8ba1a25d8b2d9e92bc5f7aa869.jpg)
我们也可以对比一下之前的方法,可以发现简单了很多,这个是之前的——
这个方法的逻辑和之前battle_abilityTrigger?(battler)的是一样的,这里就不解释了。
同样的,如果理解不了,那也至少要会用。
那么怎么使用battler_abilityTrigger?这个方法呢?
battler_abilityTrigger?的使用和battle_abilityTrigger?(battler)的使用一模一样,只需要在你所有想要一次出场只会发动一次的特性里,都加上检查这个方法就好了。
比如说这样——
![1721295813414.png 1721295813414.png](https://bbs.pokefans.cn/data/attachments/2/2400-24b507fe571914508898329acc6a1197.jpg)
这样的话活力焕发就精灵每次出场只会发动一次了。
另外就是,因为battler_abilityTrigger?这个方法是写在Battler里的,所以你要对battler调用这个方法——
![1721295829779.png 1721295829779.png](https://bbs.pokefans.cn/data/attachments/2/2401-2c97a6f7143719231e9713cb3a30323c.jpg)
最后,请进游戏自行测试活力焕发是否现在真的一次出场只会发动一次了。
这样,到目前为止,我们就新实现了两个方法——
battle_abilityTrigger?(battler),用于一场战斗只能发动一次的特性。
battler_abilityTrigger?,用于一次出场只能发动一次的特性。
那么这期教程就到此为止,下期教程我们将会讲解分散在战斗系统中的那些特性的发动逻辑。
视频预览(0718)——
浏览附件2024-07-18 22-27-14.mp4
感谢阅读。
这期教程,我们来讲解如何使用基于battler的变量。
在之前的教程中,我们已经是介绍过基于battle的变量和基于battler的变量的区别了,所以这里就不再重复了,如果你还不太清楚区别,请去看之前的教程。
在第9代的时候,有些特性得到了削弱,比如说苍响的不挠之剑,就变成了一场战斗只能发动一次,这个我们在之前的教程中已经说过该怎么做了;
比如说闪焰王牌的自由者,就变成了一次出场只能发动一次。
这期教程,我们将通过如何让一个特性一次出场只能发动一次,来讲解基于battler的变量的使用。
在讲解基于battle的变量的时候,我们说“当你想加一个基于battle的变量的时候,就在001_Battle.rb里加,照着格式来,第一步,增加attr_accessor :xxx;第二步,初始化。”
那么现在是基于battler的变量,实际上也是同理的。
我们首先需要找到在哪里加,接着——第一步,增加attr_accessor :xxx;第二步,初始化。
那么在哪里加呢?
打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\002_Battler里的001_Battle_Battler.rb。
往下拉,找到这个地方——
![1721295685927.png 1721295685927.png](https://bbs.pokefans.cn/data/attachments/2/2394-19db9e3daaf9142aa8a6b21b7f0d67ee.jpg)
接着在下面增加attr_accessor :abilityTrigger——
![1721295697778.png 1721295697778.png](https://bbs.pokefans.cn/data/attachments/2/2395-f97772f4b63ac7d14b1fda5571023df9.jpg)
接着,初始化。
基于battler的变量的初始化并不和基于battle的变量的初始化一样,基于battler的变量需要在另一个地方初始化。
打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\002_Battler里的002_Battler_Initialize.rb。
往下拉,找到这个方法——
![1721295711650.png 1721295711650.png](https://bbs.pokefans.cn/data/attachments/2/2396-c0a12c7e93cbd0c404084512f52c7c30.jpg)
继续往下拉,找到这里——
![1721295728794.png 1721295728794.png](https://bbs.pokefans.cn/data/attachments/2/2397-8261b4edfadaed380489669717919493.jpg)
在这个地方初始化——
![1721295739852.png 1721295739852.png](https://bbs.pokefans.cn/data/attachments/2/2398-f5eb4c5bc4e96434fb64d648cf30acba.jpg)
这里的初始化比较简单,直接false就好了。
因为这个变量是基于battler的变量,那么对于单个battler来说,特性要么发动了,要么没有发动,不是false,就是true。
所以默认直接false就好了,false就是特性还没有发动过,在特性发动过之后,就会变成true了,并且,在精灵换下场之后,这个变量会重置为false,这样就实现了特性一次出场只能发动一次的目标。
那么,如何让这个变量变成true呢?
在之前讲解基于battle的变量的时候,我们是新加了一个方法,来控制是否要变成true,但是在这里的话,实际上,我们其实并不需要新加一个方法。
但是,为了统一,我们也还是新加一个方法吧。
我们按照和之前相似的格式,新加一个方法——
Ruby:
def battler_abilityTrigger?
if @abilityTrigger
return true
else
@abilityTrigger = true
return false
end
end
![1721295777485.png 1721295777485.png](https://bbs.pokefans.cn/data/attachments/2/2399-a82c4a8ba1a25d8b2d9e92bc5f7aa869.jpg)
我们也可以对比一下之前的方法,可以发现简单了很多,这个是之前的——
Ruby:
def battle_abilityTrigger?(battler)
if @abilityTrigger[battler.index & 1][battler.pokemonIndex]
return true
else
@abilityTrigger[battler.index & 1][battler.pokemonIndex] = true
return false
end
end
这个方法的逻辑和之前battle_abilityTrigger?(battler)的是一样的,这里就不解释了。
同样的,如果理解不了,那也至少要会用。
那么怎么使用battler_abilityTrigger?这个方法呢?
battler_abilityTrigger?的使用和battle_abilityTrigger?(battler)的使用一模一样,只需要在你所有想要一次出场只会发动一次的特性里,都加上检查这个方法就好了。
比如说这样——
![1721295813414.png 1721295813414.png](https://bbs.pokefans.cn/data/attachments/2/2400-24b507fe571914508898329acc6a1197.jpg)
这样的话活力焕发就精灵每次出场只会发动一次了。
另外就是,因为battler_abilityTrigger?这个方法是写在Battler里的,所以你要对battler调用这个方法——
![1721295829779.png 1721295829779.png](https://bbs.pokefans.cn/data/attachments/2/2401-2c97a6f7143719231e9713cb3a30323c.jpg)
最后,请进游戏自行测试活力焕发是否现在真的一次出场只会发动一次了。
这样,到目前为止,我们就新实现了两个方法——
battle_abilityTrigger?(battler),用于一场战斗只能发动一次的特性。
battler_abilityTrigger?,用于一次出场只能发动一次的特性。
那么这期教程就到此为止,下期教程我们将会讲解分散在战斗系统中的那些特性的发动逻辑。
视频预览(0718)——
浏览附件2024-07-18 22-27-14.mp4
感谢阅读。
最后编辑: