ページ 11

エンカウント戦闘で勝利後敗北後のイベント処理について

Posted: 2020年4月12日(日) 01:04
by みたしや
フリーのエッチなゲームの制作をしています。
理想としているゲームの仕様としてはある程度が出来ていますが、エンカウント戦闘の勝敗の処理をうまく作れなくて困っています。

仕様としては
見えない敵に遭遇して、コモンイベント10でコマンド入力を行いコマンド入力に成功すれば戦闘を回避できる。コマンド入力に失敗すれば戦闘が発生する。(スイッチ21で判定してます。)
コマンド入力失敗で発生したエンカウント戦闘で勝利すればコモンイベント13が始まる。敗北すればコモンイベント14が始まりゲームオーバー。という感じです。(戦闘処理後で職業を変える処理を入れています。)

問題となっていると報告される部分のソースコードは
Game_Player.prototype.executeEncounter の途中で

コード: 全て選択

	BattleManager.setup(troopId, true, false);
        BattleManager.setEventCallback(function(n) {
          this._branch[this._indent] = n;
        }.bind(this))
        BattleManager.onEncounter();

        var result = Game_Interpreter.prototype._branch[Game_Interpreter.prototype._indent]
        if (result == 0) {
          //戦闘勝利 コモンイベント12が発動
          $gameActors.actor(12).changeClass(6, true)
          $gameTemp.reserveCommonEvent(13);
        };
        if (result == 1) {
          //戦闘敗北 コモンイベント13が発動
          $gameActors.actor(12).changeClass(6, true)
          $gameTemp.reserveCommonEvent(14);
        };
        if (result == 2) {
          //戦闘敗北 コモンイベント13が発動
          $gameActors.actor(12).changeClass(6, true)
          $gameTemp.reserveCommonEvent(14);
        };
エラー情報として

Cannot read property 'undefined' of undefined

と記載されていました。

Game_Interpreter.prototype._indentをどう書き換えればいいのでしょうか?
それとも根本的な所から間違えているのでしょうか?
解決の方をよろしくお願いします。

ごめんなさい。
画像とソースコードが上手く添付できませんでした。

Re: エンカウント戦闘で勝利後敗北後のイベント処理について

Posted: 2020年4月12日(日) 03:08
by Plasma Dark
実現したい仕様をすべて Game_Player.prototype.executeEncounter に押し込めようとするのは筋が悪いように見えます。
executeEncounter はあくまで敵遭遇処理を行っているに過ぎないので、ここで敵遭遇の代わりにコモンイベントを発生させるだけにしてみてはいかがでしょう。

コモンイベント内であれば戦闘を発生させたり勝敗後の処理を書くのも容易です。

Re: エンカウント戦闘で勝利後敗北後のイベント処理について

Posted: 2020年4月15日(水) 18:09
by みたしや
Plasma Dark 様

返信が遅れて申し訳ありません。

そして度々、相談に乗っていただきありがとうございます。

提案された通り、エンカウント戦闘の処理を取り消しコモンイベントで作成したところ、上手く動かす事が出来ました。ありがとうございました。