设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: alllll
打印 上一主题 下一主题

[有事请教] 求教RMMV,YEP的ATB战斗系统如何做到玩家一回合多次行动

[复制链接]

Lv2.观梦者

梦石
0
星屑
740
在线时间
60 小时
注册时间
2023-10-5
帖子
10
11
 楼主| 发表于 2023-10-31 15:42:51 | 只看该作者
shiroin 发表于 2023-10-30 23:46
我有汉化过这种需求的插件,你可以去试试:
https://rpg.blue/thread-494592-1-1.html

好吧,其实我发现上面那个代码一开始就有问题,这个代码哪怕把“ ATB Turn: +100%”放到“if”里面,这个Atbturn也会无视if内的条件自动执行
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5420
在线时间
1228 小时
注册时间
2016-12-6
帖子
389
12
发表于 2023-10-31 15:57:37 | 只看该作者
alllll 发表于 2023-10-31 15:42
好吧,其实我发现上面那个代码一开始就有问题,这个代码哪怕把“ ATB Turn: +100%”放到“if”里面,这 ...

额,我去翻了下代码,ATB Turn只是一个Notetags,可以加在状态注释中,但在eval里应该是没法正常生效的
就帮助文档的提示,你可以制作一个只持续N回合的状态,角色在持有这个状态的情况下才获得得ATB Turn +1的效果,多次行动后会提前消耗掉状态持续数,只要状态结束了,多次行动的效果就丧失

另外如果你是打算通过JS eval去调整行动条的初始值,对应源代码应该是这个:

Game_Battler.prototype.atbTurnFlat = function() {
    var value = 0;
    for (var i = 0; i < this.states().length; ++i) {
      var state = this.states();
      if (state) value += state.atbTurnFlat;
    }
    return value;
};

Game_Battler.prototype.atbTurnRate = function() {
    var value = 0;
    for (var i = 0; i < this.states().length; ++i) {
      var state = this.states();
      if (state) value += state.atbTurnRate;
    }
    return value;
};

直接用user.atbTurnFlat或者user.atbTurnRate去调节
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
740
在线时间
60 小时
注册时间
2023-10-5
帖子
10
13
 楼主| 发表于 2023-10-31 16:08:03 | 只看该作者
shiroin 发表于 2023-10-31 15:57
额,我去翻了下代码,ATB Turn只是一个Notetags,可以加在状态注释中,但在eval里应该是没法正常生效的
...

啊,原来是这样啊,果然写这些还是需要编程的基础的,那我去试试吧,谢谢大佬
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
740
在线时间
60 小时
注册时间
2023-10-5
帖子
10
14
 楼主| 发表于 2023-11-7 21:00:07 | 只看该作者
shiroin 发表于 2023-10-31 15:57
额,我去翻了下代码,ATB Turn只是一个Notetags,可以加在状态注释中,但在eval里应该是没法正常生效的
...

虽然我尝试过大佬的建议。但是这些变量是没有效果的,最后我是依靠立即技能释放解决的……
不过我看现在的帖子都没有详细的相关方法,以及我想要找到某种…简化的方法,所以我就借给大佬的回复把我的方法写在这里吧
首先需要yep的“技能立即释放”,“自动被动状态“,“状态核心”,以及大佬您发布的“ WAY_CustomOnEquipEval”插件
(下列数据中,我使用了3个状态和一个公共变量实现装备特殊装备时,每个装备都可以提供一个额外回合数,脱下时解除额外回合数,其中,27号状态为“多动回合次数”,28号位“多动次数冷却”,29号为持续性的被动状态“多动回合数(预载)”,10号变量为“多次行动次数”,以及我发现不可以初始给玩家多动系列装备,否则10号变量会直接+3,如果是换装则没有问题,至于为什么不用被动状态记录多次回合次数,是因为被动状态是一直持续附加的,而且可能和状态核心有点冲突,如果为被动状态附加数据,除非附加的数据本身改变(例如公共变量10改变),否则数据不会改变(比如我要求行动一次额外回合数-1就不生效,只能另外开一个新状态)
首先是加行动数的装备
<Passive State: 29>//附加被动状态29

<Custom On Equip Eval>//穿上装备后,10号变量+1
  var NOA = $gameVariables.value(10);
  $gameVariables.setValue(10,(NOA + 1));
</Custom On Equip Eval>

<Custom On Remove Equip Eval>//脱下装备后,10号变量-1
  var NOA = $gameVariables.value(10);
  $gameVariables.setValue(10,(NOA - 1));
</Custom On Remove Equip Eval>

多动回合次数(27)
<Instant Skill: 1>//处于该状态时,1号技能立即释放,基于立即释放插件规则,这里可以改为其他技能组

<Custom Apply Effect>//显示玩家这个回合可以额外行动的次数
  user._NOAM = $gameVariables.value(10);
  user.setStateCounter(27,user._NOAM);
</Custom Apply Effect>

<Custom Action End Effect>//如果在这个状态下行动,玩家行动一次,多动次数-1,如果次数为0,则解除“多次行动”进入“冷却”状态
if(user._NOAM >= 1){
  user._NOAM -= 1;
  user.setStateCounter(27,user._NOAM);
}
else{
  user.addState(28);
}
</Custom Action End Effect>

冷却状态(28,设为一回合后结束)
<Custom Apply Effect>//获得该状态时,移除27号状态
  user.removeState(27);
</Custom Apply Effect>

<Custom Remove Effect>//该状态自然解除,获得27号状态
  user.addState(27);
</Custom Remove Effect>

多次行动状态(预载)(被动状态)
<Custom Passive Condition>//当处于27,28号状态时,不再附加该被动状态
if (user.isStateAffected(27) || user.isStateAffected(28)){
  condition = false;
} else {
  condition = true;
}
</Custom Passive Condition>

<Custom Battle Effect>//当进入战斗时,移除被动状态并添加27号状态
  user.addState(27);
  user.removeState(29);
</Custom Battle Effect>
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 00:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表