ページ 11

【解決済み】アクターコマンド側に逃げるを追加

Posted: 2016年12月16日(金) 02:37
by SIB
こんにちは

最初のパーティコマンドの戦う・逃げるがボス戦なのでは煩わしいので他の方のやり方をもとにパーティコマンドをスキップし、直接アクターコマンドに入るようにしています。

ですが、いざ使用するとなるとやはり逃げるのコマンドは必要で、しかし二度手間のパーティコマンドはスキップしたい、そもそも一人主人公のゲームなのでアクターコマンドで十分ということから、
アクターコマンドの攻撃・スキル・防御・アイテムの部分の一番下に逃げるのコマンドを設置したいと思っています。

ちなみに現在は攻撃や防御のコマンドをスキル側で扱いたいためそれら2点を削除するために

コード: 全て選択

  Window_ActorCommand.prototype.makeCommandList = function() {
      if (this._actor) {
          //this.addAttackCommand();
          this.addSkillCommands();
          //this.addGuardCommand();
          this.addItemCommand();
      }
  };
と、rpg_window.jsにてコメントアウトで攻撃と防御のコマンドを消しております。この下に逃げる用のコマンドを追加すればいいと思うのですがthis.addEscapeCommand();のようなものを追加してもエラーが起きうまく機能しません。

戦う・逃げるのパーティコマンドを他のプラグインでスキップしつつ、逃げるのコマンドを移動させアクターコマンドをスキル・アイテム・逃げるにしようと思っております。
もしよければよろしくお願いします

Re: アクターコマンド側に逃げるを追加

Posted: 2016年12月27日(火) 20:42
by ビービー
ツクールMVのデフォルトのパーティーコマンドの逃げるを利用しないやり方なので少し動作が異なりますが、いちおうやり方がないこともないので書いておきます。

前述したとおりパーティーコマンドの逃げるをアクターコマンドに入れるわけではなく、スキルを作成し、スキルからコモンイベントを呼び出し、逃げるのような動作をコモンイベントで作成する方法です。

ちなみにスキルをアクターコマンドに入れる方法はこちらで配布されているプラグインで可能です。
RPGツクールMVで感動ものを作る。http://ktnhmv.jugem.jp/?eid=78#comments

ではまずはスキルの作成です。
↓の画像のようにほとんど何も必要ないかと思います。
キャプチャ.JPG
数値はお好みで。
あとは使用効果からコモンイベントを呼び出すよう設定するだけです。

そして次に呼び出すコモンイベントを作成します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
◆条件分岐:ボス判定スイッチがON
◆文章:なし, ウィンドウ, 下
:  :逃げられない!

:それ以外のとき
◆スクリプト:$gameParty.performEscape();
:     :SoundManager.playEscape();
:     :var escRatio = 0.5 * $gameParty.agility() / $gameTroop.agility();
:     :var success = this._preemptive ? true : (Math.random() < escRatio);
:     :if (success) {$gameMessage.add("\x1bN[1]たちは逃げ出した!");
:     : BattleManager.abort();
:     :} else {
:     :$gameMessage.add("\x1bN[1]たちは逃げ出した!\n\x1b.しかし逃げることはできなかった!");}

:分岐終了
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
こんな感じになります。
簡単に説明すると
◆条件分岐:ボス判定スイッチがON
↑逃げられる戦闘かどうかを判定する条件分岐です。すべての戦闘が逃走可能であるなら必要ありません。
◆文章:なし, ウィンドウ, 下
:  :逃げられない!

↑逃走不可の戦闘の際に表示するメッセージです。
:それ以外のとき
◆スクリプト:$gameParty.performEscape();
↑アクターに逃げるのモーションをさせます。
:     :SoundManager.playEscape();
↑逃げる効果音を鳴らしています。
:     :var escRatio = 0.5 * $gameParty.agility() / $gameTroop.agility();
↑MVデフォルトの逃走率計算式です。0.5の部分を書き換えれば逃走率も変わります。
:     :var success = this._preemptive ? true : (Math.random() < escRatio);
↑逃走判定しています。
:     :if (success) {$gameMessage.add("\x1bN[1]たちは逃げ出した!");
↑逃走成功の場合にメッセージを表示します。\x1bN[1]はN[1]をスクリプトで書くとこうなります。
メッセージは自由に書き換えてください。
成功時に行いたい処理はこの辺りに追加してください。
効果音を再生したり、変数に+1して逃走成功回数を数えるなど。

:     : BattleManager.abort();
↑イベントコマンドのバトルの中断をスクリプトで実行しています。
:     :} else {
:     :$gameMessage.add("\x1bN[1]たちは逃げ出した!\n\x1b.しかし逃げることはできなかった!");}
↑逃走失敗の場合に行う処理として、メッセージを表示しています。\nは改行。
失敗時に行いたい処理はこの辺りに追加してください。


イベントコマンドのバトルの中断をスクリプトで実行しています。
と書いてある通り、このコモンイベントは逃走ではなく中断の処理なので、イベントコマンドの戦闘の処理での逃走可のチェックは意味がありません。
なので逃げれない戦闘を作る場合は条件分岐のスイッチをONにするのを忘れないようにしてください。

ちなみにツクールMVの逃げるは失敗時にその戦闘中の逃走成功率が少しづつよくなるような処理がされています。ですがそれを表現するとコモンイベント1つでは難しいので、省いてあります。
なのでデフォルトの逃走率より少し高めに設定した方がいいかもしれません。

Re: アクターコマンド側に逃げるを追加

Posted: 2016年12月30日(金) 23:28
by SIB
ビービーさん

ありがとうございます。
そのプラグインで逃げるを出来ないかと同じ場所にたどり着いていましたが、肝心の逃げる処理が出来ず困っていました。
スクリプトを使ってそのようにしたところうまくいきました。

ご親切に解説付きでスクリプト部分を書いていただき本当にありがとうございます。
スクリプト部分の解説をしてくださるのは本当にありがたいです。無事上手くいくことが出来ました。ありがとうございました。