コモンイベント / ツクールVXAceスクリプト(RGSS3)wiki
ツクールVXAceでコモンイベントをスクリプトで行うなら以下の通りです。
ce = $data_common_events[コモンイベントのID]
if ce
child = Game_Interpreter.new(@depth + 1)
child.setup(ce.list, same_map? ? event_id : 0)
child.run
end
サンプルコード(IDが2のコモンイベントを呼び出し)
ce = $data_common_events[2]
if ce
child = Game_Interpreter.new(@depth + 1)
child.setup(ce.list, same_map? ? event_id : 0)
child.run
end
簡易的なものであれば以下のコードでも実行可能です
$game_temp.reserve_common_event(コモンイベントのID)
サンプルコード(IDが2のコモンイベントを呼び出し)
$game_temp.reserve_common_event(2)
コード解説
まずは上のスクリプトから解説します。
このスクリプトはイベントコマンドから行うコモンイベントの呼び出しと同じ手順を踏んだもので、無難にコモンイベントを行いたいならこちらを使用した方が良いでしょう。
1行目 "ce = $data_common_events[コモンイベントのID]"
単純にceという変数にデータベースにあるコモンイベントの実際の処理等のデータを代入しています。
ceという名称はなんでも良いのですが、 ここではイベントスクリプトに記述することを想定しているのでなるべく短い変数名にしています。
2行目,6行目 "if ce"
if文です。
もし指定したコモンイベントが存在すれば実際にコモンイベントを実行するという意味です。
例えばコモンイベントIDにデータベースにないコモンイベントIDの数値を入れるとこのif文に弾かれます。
3行目 "ichild = Game_Interpreter.new(@depth + 1)"
コモンイベントを実行するクラス、"Game_Interpreter"を宣言しています。
分からない場合はコモンイベントを実行する準備をしていると思って頂ければ大丈夫です。
4行目 "child.setup(ce.list, same_map? ? event_id : 0)"
コモンイベントを設定しています。
処理に使用する変数にマップid、コモンイベントが呼び出しているイベントid、実行する内容、ファイバーを作成しています。
分からない場合はコモンイベントを実行する準備をしていると思って頂ければ大丈夫です。
5行目 "child.run"
設定されたコモンイベントを実行しています。
それと同時にコモンイベントの1行の処理が実行・完了されるまでウェイトをかけています。
では次に下のスクリプトに関して解説します。
"$game_temp.reserve_common_event(コモンイベントのID)"は書いてある通りコモンイベントの予約を行う処理です。
これが実行されると$game_temp内の変数(common_event_id)に指定したコモンイベントのIDが代入されます。
すると変数が0以上になったことが検知され、上のスクリプトにあった"child.setup"に相当する処理がなされます。
このため、たった一行でもコモンイベントが実行されるのです。
しかし、その代わりにウェイト処理がなされないため、コモンイベントをイベント処理の最後に置いた場合などに思ったような動作をしないことがあります。
これは使用したい場面によるので下のスクリプトで不具合がある場合は上のスクリプトを試す、というようにすればよいかと思います。
ツクールVXAceスクリプトリファレンスwikiトップページへ戻る
オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。