【解決済】戦闘終了後に稀に発生するエラー

mucchiri
記事: 4
登録日時: 2023年3月23日(木) 18:26
連絡を取る:

【解決済】戦闘終了後に稀に発生するエラー

投稿記事by mucchiri » 2023年12月27日(水) 12:33

戦闘終了後などに稀に発生するエラーなのですが、なにが原因なのか、あまり知識がなくわかりません。
設置したイベントが関係してそうなのはわかるのですが、おおよその原因を教えて頂ければ幸いです。
1度ですが、アイテムを使用しようとしたときにも発生しました。

以下エラーメッセージです。

rpg_managers.js:1949 TypeError: Cannot read property 'pages' of null
at Game_Event.findProperPageIndex (rpg_objects.js:8611)
at Game_Event.refresh (rpg_objects.js:8603)
at rpg_objects.js:5811
at Array.forEach (<anonymous>)
at Game_Map.refresh (rpg_objects.js:5810)
at Game_Map.refreshIfNeeded (rpg_objects.js:5805)
at Game_Map.update (rpg_objects.js:6020)
at Scene_Map.updateMain (rpg_scenes.js:608)
at Scene_Map.updateMainMultiply (rpg_scenes.js:600)
at Scene_Map.update (rpg_scenes.js:589)
最後に編集したユーザー mucchiri on 2023年12月31日(日) 14:37 [ 編集 1 回目 ]

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 戦闘終了後に稀に発生するエラー

投稿記事by Plasma Dark » 2023年12月27日(水) 20:54

イベントに関するプラグインやスクリプトを利用されていないのであれば、$gameMapが持つイベント情報と、$dataMapが持つイベントの定義がズレているのが原因です。

$gameMapとは、ゲーム実行中のマップの状態を含むオブジェクトです。
$dataMapとは、エディタ上で編集して保存したマップデータのことです。

$gameMapはプレイヤーがそのマップに入ったときにセットアップ処理を行い、その時点でのマップデータ内のイベント定義を元にして、Game_Eventインスタンスを生成して保持します。
Game_Eventインスタンスとは、ゲーム実行中のイベントの状態を含むオブジェクトです。
ツクールのエディタで作ったイベントのデータと、Game_Eventインスタンスは、イベントIDで紐付けられます。

アイテムの増減やスイッチ・変数の更新を行うと、$gameMapオブジェクトは自身の持つGame_Eventインスタンスを最新の状態に更新しようとします。
更新のためには、Game_Eventインスタンスと同じイベントIDを持つイベント定義がマップデータの中に存在することが期待され、存在しない場合にエラーが起きます。

なので、例えばテストプレイ中にプレイヤーのいるマップからイベントを消して保存し、その後アイテムを使ったり、戦闘でアイテムを入手したりといった変化が起きた際にこのエラーが発生します。
mucchiri
記事: 4
登録日時: 2023年3月23日(木) 18:26
連絡を取る:

Re: 戦闘終了後に稀に発生するエラー

投稿記事by mucchiri » 2023年12月28日(木) 03:17

お返事ありがとうございます。
テストプレイ中に現在いるマップ上のイベント等を変更して保存すると、変更前の状態と変更後の状態を突合して
違うとエラーがでるということなのですね。

試しにイベントを削除して保存したあと、戦闘にはいり終了すると、同様のエラーがでました。

私は戦闘中に変動する変数(行動によるステータスアップ等のプラグインを入れてます)
がイベントになにか関係しているのかなと思い、いろいろ触っていたのですが、効果はなく。

テストプレイ中の不具合を見つけたときに編集しているのが、大まかな原因だと判明してとても助かりました。
ありがとうございます。

もしまだ不具合がでるようでしたら、また質問させていただくかもしれません。
本当にありがとうございました。

“MV:質問” へ戻る