【解決済み】RPG探検隊様 サイドビュー スクリプトの不具合

返信する
fromXII
記事: 2
登録日時: 2019年11月30日(土) 15:15

【解決済み】RPG探検隊様 サイドビュー スクリプトの不具合

投稿記事 by fromXII »

RPG探検隊様のRGSS3素材(サイドビュースクリプト)を用いてゲーム作成してる初心者です。

PT内の誰かが行動不能になることで、他キャラの挙動がおかしくなる不具合で困っております。

本来はアクターのコマンド入力が終わって次アクターに移る時、前アクターが「一歩下がる」行動をするのですが、
上記の条件を満たすと「一歩下がる」行動をしなくなってしまいます。
(さらに前々アクターのコマンド入力に戻すと、「一歩進む」行動をしなくなります)

スクリプト【Sideview】の3905行目以降のコードで、
【次のコマンド入力へ】【前のコマンド入力へ】があります。

次アクターに移れない状況に陥ったとき、この箇所で不具合が起きてしまうのでしょうか?
どうすれば回避できるでしょうか。

調べるに調べたのですが分かりませんでした・・・回答お願いします。

↓以下画像です
1.png
1.png (255.03 KiB) 閲覧された回数 3827 回
2.png
2.png (258.46 KiB) 閲覧された回数 3827 回
最後に編集したユーザー fromXII [ 2019年12月02日(月) 19:49 ], 累計 1 回
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: 【質問】RPG探検隊様 サイドビュー スクリプトの不具合

投稿記事 by ecf5DTTzl6h6lJj02 »

こんばんは。
fromXII さんが書きました:RPG探検隊様のRGSS3素材(サイドビュースクリプト)を用いてゲーム作成してる初心者です。

PT内の誰かが行動不能になることで、他キャラの挙動がおかしくなる不具合で困っております。

本来はアクターのコマンド入力が終わって次アクターに移る時、前アクターが「一歩下がる」行動をするのですが、
上記の条件を満たすと「一歩下がる」行動をしなくなってしまいます。
(さらに前々アクターのコマンド入力に戻すと、「一歩進む」行動をしなくなります)

スクリプト【Sideview】の3905行目以降のコードで、
【次のコマンド入力へ】【前のコマンド入力へ】があります。

次アクターに移れない状況に陥ったとき、この箇所で不具合が起きてしまうのでしょうか?
どうすれば回避できるでしょうか。

調べるに調べたのですが分かりませんでした・・・回答お願いします。
コマンド入力を別のアクターに移動した際に、前に入力していたアクターに対して、元の座標に戻るアクションを実行する命令を出すはずが、アクターを指定する際に、『今コマンド入力をしているアクターのひとつ前(ひとつ後ろ)のインデックスのアクター』を指定しており、アクターが戦闘不能等でコマンド入力できずにスキップされた状態が考慮されていないため、正しくアクションが行われない状態になっているようです。

質問内容にも書かれている3905行目以降の該当部分を以下のコードに書き換えてみてください。
(一応チェックはしているつもりですが、予期せぬ不具合を起こす可能性がありますので、書き換えの前に、スクリプトのバックアップをしておいてください。)

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 次のコマンド入力へ ★再定義
  #--------------------------------------------------------------------------
  def self.next_command
    begin
      if !actor || !actor.next_command
        $game_party.battle_members[@actor_index].sv.command_action = true
        @actor_index += 1
        if @actor_index >= $game_party.members.size
          for member in $game_party.battle_members.reverse
            break member.sv.start_action(member.sv.command_a) if member.inputable?
          end
          return false 
        end
      end
    end until actor.inputable?
    actor.sv.start_action(actor.sv.command_b) if actor != nil && actor.inputable?
    if pre_actor 
      (@actor_index - 1).downto(0){ |n|
        if $game_party.battle_members[n].inputable?
          pre_actor_inputable = $game_party.battle_members[n]
          break pre_actor_inputable.sv.start_action(pre_actor_inputable.sv.command_a)
        end        
      }
#~       pre_actor.sv.start_action(pre_actor.sv.command_a) if pre_actor != nil && pre_actor.inputable?
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 前のコマンド入力へ ★再定義
  #--------------------------------------------------------------------------
  def self.prior_command
    begin
      if !actor || !actor.prior_command
        $game_party.battle_members[@actor_index].sv.command_action = false
        @actor_index -= 1
        if @actor_index < 0
          for member in $game_party.battle_members
            break member.sv.start_action(member.sv.command_a) if member.inputable?
          end
          return false 
        end
      end
    end until actor.inputable?
    actor.make_actions if actor.inputable?
    actor.sv.start_action(actor.sv.command_b) if actor.inputable?
    (@actor_index + 1).upto($game_party.battle_members.size - 1){ |n|
      if $game_party.battle_members[n].inputable?
        after_actor_inputable = $game_party.battle_members[n]
        break after_actor_inputable.sv.start_action(after_actor_inputable.sv.command_a)
      end      
    }
#~     after_actor.sv.start_action(after_actor.sv.command_a) if after_actor != nil && after_actor.inputable?
    return true
  end
fromXII
記事: 2
登録日時: 2019年11月30日(土) 15:15

Re: 【質問】RPG探検隊様 サイドビュー スクリプトの不具合

投稿記事 by fromXII »

ecf5DTTzl6h6lJj02 様

実行して確認してみましたが、無事動作ができました。
ここまで対応してくださり本当にありがとうございます。助かりました m(_ _)m
返信する

“VX / Ace:質問”に戻る