ページ 1 / 1
【解決済】【VXAce】 パーティコマンドでコモンイベント実行
Posted: 2020年2月04日(火) 02:50
by しろう
いつもお世話になっております。
今回は戦闘開始時のパーティコマンドで「たたかう」「にげる」のコマンドに例えばコモンで作った「さくせん」を実行したいと考えています。
いろんなサイト様を拝見させて頂いて似たようなスクリプトはありまして参考にさせて頂いて「さくせん」のコモンイベント自体は何とか作りました。
マップ上のメニューではコモンを呼び出すスクリプトも使わせて頂いてるのですが表題の戦闘時のパーティコマンドでコモンイベントを呼び出す方法を出来たら教えて下さい。
①パーティコマンドに「さくせん」の項目を表示したい
②「さくせん」を実行した後はパーティコマンドに戻りたい
③「さくせん」はコモンイベントで作ったものを利用したい
このように考えています。
どうか宜しくお願いします。
ちなみに①と③は何となく近い物が出来たりしたのですが、何分スクリプト内容の意味はチンプンカンプンなのでその状態だと②で「さくせん」後いきなり戦闘開始(ターン実行)したり又はフリーズしたりしてしまうので①③もキチンと分かる方の方法を知りたいです。
Re: 【VXAce】 パーティコマンドでコモンイベント実行
Posted: 2020年2月04日(火) 10:36
by ぽんぽこねるそん
①パーティコマンドに「さくせん」の項目を表示したい
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
Re: 【VXAce】 パーティコマンドでコモンイベント実行
Posted: 2020年2月05日(水) 01:20
by しろう
ありがとうございます。
スイッチ機能までつけて頂いて挙動も問題ありませんでした。