トリアコンタン様のAnotherNewGameプラグインについて

杏仁豆腐
記事: 38
登録日時: 2020年5月28日(木) 00:22

トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by 杏仁豆腐 »

設定でファイルロードをonにしたのち、
ゲーム起動後タイトル画面でAnotherNewGameを選ぶと

ReferenceError
index is not defined

とエラーが発生します。
新規プロジェクトで試しても同様の結果でした。
原因がまったく分かりません。
ご教授願います……。
アバター
DoujinRuis
記事: 166
登録日時: 2022年10月25日(火) 10:59

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by DoujinRuis »

今回の解説動画を撮りました良ければ確認ください
解説動画
https://www.youtube.com/watch?v=ZjndE0Fe8c4

解決用
Scene_Title.prototype.callAnotherNewGame = function(command, index) {
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH

普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
杏仁豆腐
記事: 38
登録日時: 2020年5月28日(木) 00:22

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by 杏仁豆腐 »

想定通りの動きになりました!!
動画が分かりやすく解説していただきありがとうございました!!
すごく助かりました!


DoujinRuis さんが書きました:今回の解説動画を撮りました良ければ確認ください
解説動画
https://www.youtube.com/watch?v=ZjndE0Fe8c4

解決用
Scene_Title.prototype.callAnotherNewGame = function(command, index) {
杏仁豆腐
記事: 38
登録日時: 2020年5月28日(木) 00:22

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by 杏仁豆腐 »

と思いましたが……
ロード後、指定したマップに飛ばす……。
普通にセーブデータを読み込むだけでした……。
アバター
DoujinRuis
記事: 166
登録日時: 2022年10月25日(火) 10:59

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by DoujinRuis »

希望した動作では無かったですか?
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH

普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
杏仁豆腐
記事: 38
登録日時: 2020年5月28日(木) 00:22

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by 杏仁豆腐 »

いえ!希望通りエラーを回避する事は可能になりました!
これだけでも凄く助かります!

ですがプラグイン内の機能に、アナザーニューゲームを選んだ後に指定のマップへ移動させる機能があるのですが、
ロードを挟んだ場合に限って指定のマップには移動せずそのままセーブした場所からの再開となるのです……。

DoujinRuis さんが書きました:希望した動作では無かったですか?
アバター
DoujinRuis
記事: 166
登録日時: 2022年10月25日(火) 10:59

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by DoujinRuis »

そうですね、それは正常な動作ですね
セーブ時点のMAP情報やアクター情報を記録するので、

多分やりたいこととしては
セーブ時点でのアクターの状態で、
特定のMAPへの移動だと思うのですが、それは
別の改造が必要ですね
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH

普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
杏仁豆腐
記事: 38
登録日時: 2020年5月28日(木) 00:22

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by 杏仁豆腐 »

あ!なるほど!
マップの指定はあくまでも本当にニューゲームのみの挙動でしたか!
強くてニューゲームを想定してまして、ゲーム開始時のマップに飛ばそうと思ってたました!

アナザーニューゲーム時に特定のスイッチをオンにしてくれる機能があるので、コモンイベントの自動実行と組み合わせ実装しようと思います!

この度は本当にありがとうございました!
これでまた一歩理想へと近付きました!!
DoujinRuis さんが書きました:そうですね、それは正常な動作ですね
セーブ時点のMAP情報やアクター情報を記録するので、

多分やりたいこととしては
セーブ時点でのアクターの状態で、
特定のMAPへの移動だと思うのですが、それは
別の改造が必要ですね
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
杏仁豆腐 さんが書きました:あ!なるほど!
マップの指定はあくまでも本当にニューゲームのみの挙動でしたか!
強くてニューゲームを想定してまして、ゲーム開始時のマップに飛ばそうと思ってたました!

アナザーニューゲーム時に特定のスイッチをオンにしてくれる機能があるので、コモンイベントの自動実行と組み合わせ実装しようと思います!

この度は本当にありがとうございました!
これでまた一歩理想へと近付きました!!
DoujinRuis さんが書きました:そうですね、それは正常な動作ですね
セーブ時点のMAP情報やアクター情報を記録するので、

多分やりたいこととしては
セーブ時点でのアクターの状態で、
特定のMAPへの移動だと思うのですが、それは
別の改造が必要ですね
正常な動作ではありませんね。

AnotherNewGame.js の中身をきちんと見ると、
セーブデータをロード時にも、
パラメータで設定したデータから、プレイヤーを指定した位置に転移させるようになっています。

ただ、MZのバージョン 1.9.0 で、イベントコマンドの『場所移動』で『直接指定』をするときのように、
ダイアログを表示して、場所指定できるようになったことへの対応をしたため、
パラメータの取得の仕方が変わったのですが、
ロード時に実行される関数で、変更以前の取得の仕方でパラメータを取得してしまっているので、
正しくパラメータが取得できずに、場所移動してくれないようになってしまっています。

プラグインの以下の部分を改変してください。
  • 351 行目あたりから、
    Scene_Load.prototype.onLoadSuccess
    というメソッドの定義が始まっているので、それを、以下に書き換える。

    コード: 全て選択

        Scene_Load.prototype.onLoadSuccess = function() {
            _Scene_Load_onLoadSuccess.call(this);
            if (localExtraStageIndex >= 0) {
                const command = parameters.anotherDataList[localExtraStageIndex];
                const location = command.location;
                if (location) {
                    const mapId = location.mapId;
                    const x     = location.x || 0;
                    const y     = location.y || 0;
                    $gamePlayer.reserveTransfer(mapId, x, y);
                }
                $gameMap.abortInterpreter();
                DataManager.selectSavefileForNewGame();
                const switchId = command.switchId;
                if (switchId > 0) {
                    $gameSwitches.setValue(switchId, true);
                }
            }
        };
    
あとですが、callAnotherNewGame メソッドの引数が変更されて、index と引数が付け加えられましたが、
メソッドを呼び出している方で、きちんと index として渡す値を指定していますでしょうか?

動画を軽く流した感じだと、そこら辺を修正してなかったように見えたのですが、
呼び出している方で、index として渡す値を記述していない場合、 undefined になってしまうため、
きちんと、場所移動してくれないはずです。

Scene_Title.prototype.updateWait というメソッド と、
Scene_Title.prototype.commandNewGameSecond というメソッドの中で、
callAnotherNewGame メソッドを呼んでいる部分がありますので、
引数として index に相当するものが きちんと指定されているかも確認してください。

ご確認ください。
杏仁豆腐
記事: 38
登録日時: 2020年5月28日(木) 00:22

Re: トリアコンタン様のAnotherNewGameプラグインについて

投稿記事 by 杏仁豆腐 »

書き換えてみましたが依然として指定した場所に飛ばなかったです……!

ecf5DTTzl6h6lJj02 さんが書きました:こんにちは。
杏仁豆腐 さんが書きました:あ!なるほど!
マップの指定はあくまでも本当にニューゲームのみの挙動でしたか!
強くてニューゲームを想定してまして、ゲーム開始時のマップに飛ばそうと思ってたました!

アナザーニューゲーム時に特定のスイッチをオンにしてくれる機能があるので、コモンイベントの自動実行と組み合わせ実装しようと思います!

この度は本当にありがとうございました!
これでまた一歩理想へと近付きました!!
DoujinRuis さんが書きました:そうですね、それは正常な動作ですね
セーブ時点のMAP情報やアクター情報を記録するので、

多分やりたいこととしては
セーブ時点でのアクターの状態で、
特定のMAPへの移動だと思うのですが、それは
別の改造が必要ですね
正常な動作ではありませんね。

AnotherNewGame.js の中身をきちんと見ると、
セーブデータをロード時にも、
パラメータで設定したデータから、プレイヤーを指定した位置に転移させるようになっています。

ただ、MZのバージョン 1.9.0 で、イベントコマンドの『場所移動』で『直接指定』をするときのように、
ダイアログを表示して、場所指定できるようになったことへの対応をしたため、
パラメータの取得の仕方が変わったのですが、
ロード時に実行される関数で、変更以前の取得の仕方でパラメータを取得してしまっているので、
正しくパラメータが取得できずに、場所移動してくれないようになってしまっています。

プラグインの以下の部分を改変してください。
  • 351 行目あたりから、
    Scene_Load.prototype.onLoadSuccess
    というメソッドの定義が始まっているので、それを、以下に書き換える。

    コード: 全て選択

        Scene_Load.prototype.onLoadSuccess = function() {
            _Scene_Load_onLoadSuccess.call(this);
            if (localExtraStageIndex >= 0) {
                const command = parameters.anotherDataList[localExtraStageIndex];
                const location = command.location;
                if (location) {
                    const mapId = location.mapId;
                    const x     = location.x || 0;
                    const y     = location.y || 0;
                    $gamePlayer.reserveTransfer(mapId, x, y);
                }
                $gameMap.abortInterpreter();
                DataManager.selectSavefileForNewGame();
                const switchId = command.switchId;
                if (switchId > 0) {
                    $gameSwitches.setValue(switchId, true);
                }
            }
        };
    
あとですが、callAnotherNewGame メソッドの引数が変更されて、index と引数が付け加えられましたが、
メソッドを呼び出している方で、きちんと index として渡す値を指定していますでしょうか?

動画を軽く流した感じだと、そこら辺を修正してなかったように見えたのですが、
呼び出している方で、index として渡す値を記述していない場合、 undefined になってしまうため、
きちんと、場所移動してくれないはずです。

Scene_Title.prototype.updateWait というメソッド と、
Scene_Title.prototype.commandNewGameSecond というメソッドの中で、
callAnotherNewGame メソッドを呼んでいる部分がありますので、
引数として index に相当するものが きちんと指定されているかも確認してください。

ご確認ください。
返信する

“MZ:質問”に戻る