戦闘の処理 / ツクールMVスクリプトリファレンスwiki
ツクールMVで戦闘の処理をスクリプトで行うなら以下の通りです。
BattleManager.setup(敵グループID,逃走可,敗北可)
BattleManager.setEventCallback(function(n) {this._branch[this._indent] = n;}.bind(this))
$gamePlayer.makeEncounterCount()
SceneManager.push(Scene_Battle)
サンプルコード(敵グループIDが4の敵グループに逃走可、敗北不可で戦闘処理)
BattleManager.setup(4, true, false)
BattleManager.setEventCallback(function(n) {this._branch[this._indent] = n;}.bind(this))
$gamePlayer.makeEncounterCount()
SceneManager.push(Scene_Battle)
敵グループを変数で指定したい場合は敵グループIDのパラメータに変数を代入してください。
また、ランダムエンカウントにしたい場合は敵グループIDのパラメータに以下の変数を代入してください。
$gamePlayer.makeEncounterTroopId()
//以下のようになります。
BattleManager.setup($gamePlayer.makeEncounterTroopId(), true, false)
ちなみに戦闘結果は結果はthis._branch[this._indent]に以下のように返されます。
0:勝利
1:逃走
2:敗北
コード解説
1行目:BattleManager.setup(敵グループID,逃走可,敗北可)
敵グループの設定や逃走・敗北の可否、戦闘で使用される変数の初期化、画面の処理、逃走が出来る割合を設定しています。
逃走可はtrueで逃走可能、falseで逃走不可、敗北はtrueで敗北可、falseで敗北不可能にしています。
2行目:BattleManager.setEventCallback(function(n) {this._branch[this._indent] = n;}.bind(this))
"BattleManager.setEventCallback"は戦闘終了時に戦闘結果を表す関数を実際の処理に使用する変数に代入しています。
ここでは"BattleManager"内部の処理で返される戦闘結果(勝利:0,逃走:1,敗北:2)を設定した行のインデント(横のズレ)の分岐結果に代入しています。
"this._indent"とはスクリプトを記述した行のインデント(横のズレ)を表します。
"this._branch"とは"Game_Interpreter"において分岐を扱うコマンドで一般的に使われる配列です。
これらを合わせた"this._branch[this._indent]"とは記述したインデントにおける分岐結果を表します。
これにn(戦闘結果)を代入しているのです。
"function(n)"とはnをパラメータに持つ関数を表しています。
setEventCallback{function(n)~}という記述は戦闘終了後に{}内の関数を呼び出す、ということを意味します。
{}の後ろについている".bind(this)"は{}内で使用されているthis(BattleManagerを指す)をbind()内のthis(Game_Interpreterを指す)に変更しています。
"bind"とは{}内のthisを変更させる機能を持つメソッドです。
3行目:$gamePlayer.makeEncounterCount()
"makeEncounterCount"とは次にエンカウントする歩数を決めるメソッドです。
敵にエンカウントした時点で次のエンカウントする歩数を決定しているのです。
4行目:SceneManager.push(Scene_Battle)
"SceneManager.push"メソッドは内部のシーンをスタックしている配列に()内のシーンを入れ、そのシーンに移るというものです。
pushメソッドでシーン遷移を行うことによってpopした際に前のシーンに容易に戻ることが出来ます。
戦闘を行うだけなら上記のスクリプトで完結しますが、戦闘結果を反映させる場合は以下のようにしてみて下さい。

上の例ではなるべくイベントコマンドでその後の処理を記述できるようにしています。
ポイントは2番目のスクリプトです。
"$result = this._branch[this._indent]"とは$resultというグローバル変数に戦闘の結果を入れています。
このスクリプトを戦闘の処理を行うスクリプトとは別にすることによって戦闘終了後に$result変数に戦闘結果が代入されるようにしているのです。
もし戦闘の処理と同じイベントスクリプトで行うと戦闘が始まると同時に変数代入処理がなされ、正しい戦闘結果が代入されません。
それ以降は$resultというグローバル変数の値によって条件分岐を行っています。
$resultという名前は汎用性があるため、他の場所でも使用する場合は"$sentou_kekka"などユニークな名前を付けてください。
ツクールMVスクリプトリファレンスwikiトップページへ戻る
オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。