Project1

标题: 求大神救命,横版战斗SV脚本里的一个BUG~(暂可忽略) [打印本页]

作者: RMVXA    时间: 2021-8-7 00:08
标题: 求大神救命,横版战斗SV脚本里的一个BUG~(暂可忽略)
本帖最后由 RMVXA 于 2021-8-18 13:06 编辑

是关于指令输入后,或者取消指令时的动作(即脚本里的command_a)
默认是上一个角色A指令输入完后,A停止等待指令时的动作(command_a),光标移动到下一个角色B,B再做等待指令的动作;
取消当前角色B指令输入时,B停止指令等待动作,光标返回角色A,A再做出指令等待的动作。
但是这里有BUG:
当有3个以上的角色ABC时,中间B死亡或者是无法行动状态时,A输入完指令后,光标移动到C,但是A仍然不停止相关动作;
这时取消C指令,光标返回A时,C也无法停止指令等待的动作。
指令等待动作是command_a
指令结束动作是command_b(这里好像也是BUG,结束动作无论怎么设置也完全无效,可能是输入完没有等待时间导致?但不影响使用可以无视)

于是我找到了以下部分脚本,感觉是这里出了问题吧? 它好像没有考虑到中间角色是无法行动时的情况:请大神帮忙看看解决这个多年的BUG感激不尽






文字版:
  1. #--------------------------------------------------------------------------
  2.   # ● 次の指令输入へ ★再定義
  3.   #--------------------------------------------------------------------------
  4.   def self.next_command
  5.     begin
  6.       if !actor || !actor.next_command
  7.         $game_party.battle_members[@actor_index].sv.command_action = true
  8.         @actor_index += 1
  9.         if @actor_index >= $game_party.members.size
  10.           for member in $game_party.battle_members.reverse
  11.             break member.sv.start_action(member.sv.command_a) if member.inputable?
  12.           end
  13.           return false
  14.         end
  15.       end
  16.     end until actor.inputable?
  17.     actor.sv.start_action(actor.sv.command_b) if actor != nil && actor.inputable?
  18.     if pre_actor
  19.       pre_actor.sv.start_action(pre_actor.sv.command_a) if pre_actor != nil && pre_actor.inputable?
  20.     end
  21.     return true
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 前の指令输入へ ★再定義
  25.   #--------------------------------------------------------------------------
  26.   def self.prior_command
  27.     begin
  28.       if !actor || !actor.prior_command
  29.         $game_party.battle_members[@actor_index].sv.command_action = false
  30.         @actor_index -= 1
  31.         if @actor_index < 0
  32.           for member in $game_party.battle_members
  33.             break member.sv.start_action(member.sv.command_a) if member.inputable?
  34.           end
  35.           return false
  36.         end
  37.       end
  38.     end until actor.inputable?
  39.     actor.make_actions if actor.inputable?
  40.     actor.sv.start_action(actor.sv.command_b) if actor.inputable?
  41.     after_actor.sv.start_action(after_actor.sv.command_a) if after_actor != nil && after_actor.inputable?
  42.     return true
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 指令输入前のアクターを取得
  46.   #--------------------------------------------------------------------------
  47.   def self.pre_actor
  48.     return if @actor_index == 0
  49.     $game_party.members[@actor_index - 1]
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 指令输入后のアクターを取得
  53.   #--------------------------------------------------------------------------
  54.   def self.after_actor
  55.     $game_party.members[@actor_index + 1]
  56.   end
复制代码

作者: RMVXA    时间: 2021-8-17 13:57
因为待机指令动画偶尔也有显示的BUG,所以干脆不用这个功能。解决办法就是:不设置任何魔法战技的待机动作,简单又避开了很多问题。
而command_b是所有队员指令完成后的动作,没有BUG,是我用了循环指令导致的。





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