【解決済】【VXAce】 パーティコマンドでコモンイベント実行

しろう
記事: 16
登録日時: 2020年1月25日(土) 17:40

【解決済】【VXAce】 パーティコマンドでコモンイベント実行

投稿記事by しろう » 2020年2月04日(火) 02:50

いつもお世話になっております。
今回は戦闘開始時のパーティコマンドで「たたかう」「にげる」のコマンドに例えばコモンで作った「さくせん」を実行したいと考えています。

いろんなサイト様を拝見させて頂いて似たようなスクリプトはありまして参考にさせて頂いて「さくせん」のコモンイベント自体は何とか作りました。
マップ上のメニューではコモンを呼び出すスクリプトも使わせて頂いてるのですが表題の戦闘時のパーティコマンドでコモンイベントを呼び出す方法を出来たら教えて下さい。

①パーティコマンドに「さくせん」の項目を表示したい
②「さくせん」を実行した後はパーティコマンドに戻りたい
③「さくせん」はコモンイベントで作ったものを利用したい

このように考えています。
どうか宜しくお願いします。

ちなみに①と③は何となく近い物が出来たりしたのですが、何分スクリプト内容の意味はチンプンカンプンなのでその状態だと②で「さくせん」後いきなり戦闘開始(ターン実行)したり又はフリーズしたりしてしまうので①③もキチンと分かる方の方法を知りたいです。
最後に編集したユーザー しろう on 2020年2月05日(水) 01:20 [ 編集 1 回目 ]

ぽんぽこねるそん
記事: 53
登録日時: 2018年10月26日(金) 12:24

Re: 【VXAce】 パーティコマンドでコモンイベント実行

投稿記事by ぽんぽこねるそん » 2020年2月04日(火) 10:36

①パーティコマンドに「さくせん」の項目を表示したい
Window_PartyCommandのmake_command_listというのが
パーティコマンドを作っている箇所なのでそこに
add_commandなりなんなりでコマンドを追加して
Scene_Battleのcreate_party_command_windowあたりで
パーティコマンドウィンドウに追加したコマンドのシンボルに対応する
ハンドラを設定すればいいかと思います。

②「さくせん」を実行した後はパーティコマンドに戻りたい
③「さくせん」はコモンイベントで作ったものを利用したい
$game_temp.reserve_common_eventでコモンイベントを予約して
process_eventでイベントを実行してから
start_party_command_selectionでパーティコマンドの選択に戻ればいいかと思います。

やっつけですが作ってみました。

コード: 全て選択

=begin
戦闘画面のパーティコマンドに
コモンイベントを実行するコマンドを追加します

コマンドはLISTにハッシュで設定してください
・必須項目
:common_id  :実行するコモンイベントのIDです

・オプション
:name       :コマンド名です
              設定しない場合はコモンイベントの名前になります

:enabled    :選択を許可するかのスイッチ番号です
              この番号のスイッチがONになっている時に選択を許可します
              設定しないか0にすると常に許可します
             
:include    :コマンドに追加するかのスイッチ番号です
              この番号のスイッチがONになっている時にコマンドに追加します
              設定しないか0にすると常に追加します

※コマンドは戦うと逃げるの間に順番に追加されていきます
※戦闘行動の強制を行った時は即座に実行されます
=end
module BATTLE_PARTY_COMMON_EVENT
  LIST = []#パーティコマンド追加リスト[消さない!]
  LIST << {:name=>"さくせん", :common_id=>5, :enabled=>0, :include=>0}
end
#==============================================================================
# ■ Window_PartyCommand
#------------------------------------------------------------------------------
#  バトル画面で、戦うか逃げるかを選択するウィンドウです。
#==============================================================================

class Window_PartyCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● コマンドリストの作成
  #--------------------------------------------------------------------------
  alias common_make_command_list make_command_list
  def make_command_list
    common_make_command_list
    BATTLE_PARTY_COMMON_EVENT::LIST.reverse.each do |hash|
      next unless hash[:common_id] && $data_common_events[hash[:common_id]]
      name = hash[:name] || $data_common_events[hash[:common_id]].name
      enabled = hash[:enabled] ? (hash[:enabled] == 0 || $game_switches[hash[:enabled]]) : true
      include = hash[:include] ? (hash[:include] == 0 || $game_switches[hash[:include]]) : true
      @list.insert(1, {:name=>name, :symbol=>:common_event, :enabled=>enabled, :ext=>hash[:common_id]}) if include
    end
  end
end
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
#  バトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● パーティコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  alias common_create_party_command_window create_party_command_window
  def create_party_command_window
    common_create_party_command_window
    @party_command_window.set_handler(:common_event,  method(:command_party_common_event))
  end
  #--------------------------------------------------------------------------
  # ● パーティコマンドのコモンイベントの実行
  #--------------------------------------------------------------------------
  def command_party_common_event
    $game_temp.reserve_common_event(@party_command_window.current_ext)
    $game_troop.interpreter.setup_reserved_common_event
    process_event
    $game_party.make_actions
    $game_troop.make_actions
    start_party_command_selection
  end
end
しろう
記事: 16
登録日時: 2020年1月25日(土) 17:40

Re: 【VXAce】 パーティコマンドでコモンイベント実行

投稿記事by しろう » 2020年2月05日(水) 01:20

ありがとうございます。
スイッチ機能までつけて頂いて挙動も問題ありませんでした。

“VX / Ace:質問” へ戻る