Project1

标题: 求大佬帮忙改一下以前VA版主帮我弄的脚本内容 [打印本页]

作者: raisewing    时间: 2020-5-10 20:11
标题: 求大佬帮忙改一下以前VA版主帮我弄的脚本内容
本帖最后由 raisewing 于 2020-5-17 16:39 编辑

在VA的Game_BattlerBase写入,麻烦帮忙改成MV可用的


    if self.state?(2) && self.actor?
      #↑这句的意思是当self在状态2且是玩家人物时返回true进入接下来的判断,否者跳过。
      # 因为敌人是没有装备的,所以不添加是否是玩家的判断会报错。
      self.armors.include?($data_armors[1]) ? add_state(3) : remove_state(3)
      # 上面这句的格式叫“三目运算符”,它的作用是当?号前的内容是true时返回 : 前的内容,如果不是则返回 : 后的内容;
      # self.armors.include?($data_armors[1]) 的意思就是当主体的装备有防具1(也就是布衣时),
      # 自动附加状态3,否则移除状态3。
    end
    if self.actor? && $game_actors.include?(self) #这里是判断角色是否是玩家,且所有人物是否已经初始化
      dead = 0 #这里是设置了一个临时变量
      $game_party.battle_members.each {|actor| dead += 1 if actor.dead?} #检测参战人物中死亡者的个数,如果有则让dead变量+1
      case dead #根据dead变量的值,判断主体是否带有特定装备,并附加对应的状态
      when 1 #如果死亡者为1个,附加状态3
        self.armors.include?($data_armors[1]) ? add_state(3) : remove_state(3)
      when 2 #如果死亡者为2个,附加状态4
        self.armors.include?($data_armors[1]) ? add_state(4) : remove_state(4)
      when 3 #如果死亡者为3个,附加状态5
        self.armors.include?($data_armors[1]) ? add_state(5) : remove_state(6)
      end
    end
作者: 徐娟丹    时间: 2020-5-15 19:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: raisewing    时间: 2020-5-18 00:55
希望明天起来有大佬回复我!~~
作者: 526396987    时间: 2020-5-18 12:26
才疏学浅,不知道这样可否实现你希望的功能?

  1. for (i = 0; i < $dataActors.length; i++) {
  2.     if ($gameActor.actor(i).isStateAffected(2) && $gameActors.actor(i).equips().contains($dataArmors[1])) {
  3.         $gameActors.actor(i).addState(3);
  4.     } else removeState(3);
  5. };

  6. for (i = 0; i < $dataActors.length; i++) {
  7.     if ($gameActor.actor(i).isBattleMember()) {
  8.         switch ($gameParty.deadMembers().length) {
  9.             case 1:
  10.                 $gameActor.actor(i).equips().contains($dataArmors[1]) ? $gameActors.actor(i).addState(3) : $gameActors.actor(i).removeState(3);
  11.             break;

  12.             case 2:
  13.                 $gameActor.actor(i).equips().contains($dataArmors[1]) ? $gameActors.actor(i).addState(4) : $gameActors.actor(i).removeState(4);
  14.             break;

  15.             case 3:
  16.                 $gameActor.actor(i).equips().contains($dataArmors[1]) ? $gameActors.actor(i).addState(5) : $gameActors.actor(i).removeState(5);
  17.             break;
  18.         };
  19.     };
  20. };
复制代码

作者: 526396987    时间: 2020-5-18 17:13
你不是要加在Game_BattlerBase里面吗?我也不太清楚你是要在什么情况下触发这些判定。

我的建议是,最好用YEP_AutoPassive插件,专门为被动状态定制的,可以在状态备注里加上判定条件,包括有无装备,是否死亡等等。最方便的是可以直接在武器/护甲的备注里绑定你想要的状态,装备上这个武器/护甲就自动附加对应的状态。如果你英文好的话可以去他主页看视频教程 http://www.yanfly.moe/wiki
不好的话简书也有中文翻译的文字教程,简单易懂
作者: raisewing    时间: 2020-5-18 17:50
本帖最后由 raisewing 于 2020-5-18 17:54 编辑
526396987 发表于 2020-5-18 17:13
你不是要加在Game_BattlerBase里面吗?我也不太清楚你是要在什么情况下触发这些判定。

我的建议是,最好用 ...


我看了一下这个被动脚本,感觉好像满足不了我的需求!
我讲一下我的需求内容吧!
1.当装备某护甲时,装备者如果处于中毒状态时,自动添加X号状态全能力强化,当中毒状态解除后X号状态也随机消失。
2.当装备某护甲时,每增加一个队友战斗不能,装备者全能力得到强化1次,强化可累加,队友被复活后能力值对应恢复。
作者: raisewing    时间: 2020-5-19 14:44
本帖最后由 raisewing 于 2020-5-19 16:02 编辑
526396987 发表于 2020-5-18 17:13
你不是要加在Game_BattlerBase里面吗?我也不太清楚你是要在什么情况下触发这些判定。

我的建议是,最好用 ...


我试了,好像不行。没有合适的命令。或者说是我不知道怎么写判断语句。
<Passive State: x>
<Passive State: x, x, x>
允许你的角色获得被动状态x。你可以放在角色、敌方、武器、装备等标签栏
<Passive State: x to y>
让你的角色获得状态x到y。你可以放在角色、敌方、武器、装备等标签栏
<Passive Condition: HP Above x%>
<Passive Condition: HP Below x%>
<Passive Condition: MP Above x%>
<Passive Condition: MP Below x%>
当血量或者魔法量低于或者高于最大值时,被动状态触发。
<Passive Condition: Stat Above x>
<Passive Condition: Stat Below x>
当其他状态低于或者高于x时,被动状态触发
<Passive Condition: Switch x ON>
<Passive Condition: Switch x OFF>
当开关是开启或者关闭时,被动状态触发
<Passive Condition: Variable x Above y>
<Passive Condition: Variable x Below y>
当变量x高于或者低于y时,被动状态触发
<Custom Passive Condition>
if (user.hp / user.mhp <= 0.25) {
condition = true;
} else {
condition = false;
}
</Custom Passive Condition>
这可以使你选择特定情况来让被动状态出现。如果condition返回为true,这个被动状态就会出现。如果condition返回为false,这个被动状态就不会出现。如果condition没有定义,这个被动状态会出现。

作者: 擦不完的水    时间: 2020-5-19 16:16
raisewing 发表于 2020-5-19 14:44
我试了,好像不行。没有合适的命令。或者说是我不知道怎么写判断语句。

使用自定义ApplyRemove效果,然后自己写代码,会吗?
作者: 擦不完的水    时间: 2020-5-19 18:24
第一个
<Custom Apply Effect>
if (target.isEquipped($dataArmors[1])) {
  target.addState(2);
}
</Custom Apply Effect>
<Custom Remove Effect>
target.removeState(2);
</Custom Remove Effect>
使用YEP相关插件,中毒状态备注如上,当获得中毒时如果目标穿着护甲1则获得状态2,这里1和2要改成你要的数字,状态2是加攻击力的状态之类
然后第二个
无法战斗状态即状态1添加如下备注
<Custom Apply Effect>
$dataArmors[1].params[4]=100*(5-$gameParty.aliveMembers().length);
</Custom Apply Effect>
<Custom Remove Effect>
$dataArmors[1].params[4]=100*(5-$gameParty.aliveMembers().length);
</Custom Remove Effect>
意思是有人死了就是上了状态1即更新一次护甲1的魔法攻击力为100加上每死1人加100
护甲1添加个被动状态写如下备注,意思是战斗胜利后还原护甲1的魔法攻击力为100,允许失败的战斗估计还要添加Defeat效果
<Custom Victory Effect>
$dataArmors[1].params[4]=100;
</Custom Victory Effect>
作者: 擦不完的水    时间: 2020-5-19 18:24
本帖最后由 擦不完的水 于 2020-5-19 18:27 编辑

虽然不是特别好,有问题再问吧
作者: raisewing    时间: 2020-5-20 00:14
本帖最后由 raisewing 于 2020-5-20 00:41 编辑
擦不完的水 发表于 2020-5-19 18:24
虽然不是特别好,有问题再问吧


谢谢大佬,第一条我的测试的结果是2号状态在人物装备上后并没有中毒时已经生效了。
第二条的话如果我也是想让装备角色全能力翻倍的话应该怎么改?
params[4]是指魔法攻击吧?如果是全能力的话就[1,2,3,4,5,6,7,8]这样写么?
我测试了一下,好像人物属性并没有得到提升。麻烦大佬了!
作者: 526396987    时间: 2020-5-20 01:22
本帖最后由 526396987 于 2020-5-20 01:26 编辑

你重新定义一个新状态,比如说20号状态,什么都不要设置,图标也不要有,然后给武器/装备的备注栏里加上<Passive State: 20>,意思就是给这个武器/装备附加上20号状态,最后在这个20号状态的备注里加上下面这段:(这样做就不用判断装备是否在身上了,因为脱下装备后这个状态自动移除,而这个状态的作用就是根据死亡人数来添加别的状态)
  1. <Custom Passive Condition>
  2. if ($gameParty.deadMember().length === 1) {
  3.     user.addState(3);
  4.     user.removeState(4);
  5.     user.removeState(5);
  6.     condition = true;
  7. } else if ($gameParty.deadMember().length === 2) {
  8.     user.addState(4);
  9.     user.removeState(3);
  10.     user.removeState(5);
  11.     condition = true;
  12. } else if ($gameParty.deadMember().length === 3) {
  13.     user.addState(5);
  14.     user.removeState(3);
  15.     user.removeState(4);
  16.     condition = true;
  17. } else {
  18.     user.removeState(3);
  19.     user.removeState(4);
  20.     user.removeState(5);
  21.     condition = false;
  22. }
  23. </Custom Passive Condition>
复制代码




作者: 擦不完的水    时间: 2020-5-20 09:12
raisewing 发表于 2020-5-20 00:14
谢谢大佬,第一条我的测试的结果是2号状态在人物装备上后并没有中毒时已经生效了。
第二条的话如果我也是 ...

我测试过没什么问题,你插件弄了没
作者: 芯☆淡茹水    时间: 2020-5-20 09:39
翻译了一下,至于放在哪儿的,我也不知道

  1. if (this.isActor()) {
  2.     var result = this.isEquipped($dataArmors[1]);
  3.     if (this.isStateAffected(2)) result ? this.addState(3) : this.eraseState(3);
  4.     if (!!$gameActors._data[this.actorId()]) {
  5.         var dead = $gameParty.battleMembers().filter(function(a){return a.isDead();}).length;
  6.         var stateId = [0,3,4,5][dead];
  7.         if (stateId > 0) result ? this.addState(stateId) : this.eraseState(stateId);
  8.     }
  9. }
复制代码

作者: raisewing    时间: 2020-5-20 12:29
擦不完的水 发表于 2020-5-20 09:12
我测试过没什么问题,你插件弄了没

插件装了,确实也生效了的,因为看到中毒状态增益的那个BUFF被自动赋予了。还是说这个插件有需要放在哪个具体核心下?
作者: raisewing    时间: 2020-5-21 16:05
526396987 发表于 2020-5-20 01:22
你重新定义一个新状态,比如说20号状态,什么都不要设置,图标也不要有,然后给武器/装备的备注栏里加上, ...

再请教一下另外一条。当装备1号护甲时,装备者如果处于(2号状态)中毒状态时,自动添加3号状态全能力强化,当(2号状态)中毒状态解除后3号状态也随机消失。这个应该怎么写?
作者: 擦不完的水    时间: 2020-5-21 19:07
raisewing 发表于 2020-5-21 16:05
再请教一下另外一条。当装备1号护甲时,装备者如果处于(2号状态)中毒状态时,自动添加3号状态全能力强 ...

我前面写了自己看啊,Remove
作者: 526396987    时间: 2020-5-21 20:31
raisewing 发表于 2020-5-21 16:05
再请教一下另外一条。当装备1号护甲时,装备者如果处于(2号状态)中毒状态时,自动添加3号状态全能力强 ...

之前根据死亡成员数量强化属性的可行吗?
给1号护甲加上备注<Passive State: 3>,然后在3号状态里加上备注: (如果无效请告诉我,我再试试)
  1. <Custom Passive Condition>
  2. if (user.isStateAffected(2)) {
  3.     condition = true;
  4. } else {
  5.     condition = false;
  6. }
  7. </Custom Passive Condition>
复制代码








欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1