こんばんは。
現状問題になっている点、マップが変わったときにセルフ変数の値が変わらないについて。
・原因について
恐らくセルフ変数のキーを正しく指定できていないことが原因かと推測します。
実際の実装が定かでないので恐縮ですが、前回答者様の動画を拝見いたしましたところ、
以下の部分で問題となってそうと思う部分がありました。
コード: 全て選択
$gameSelfSwitches.getVariableValue([1,1,2]);
セルフ変数を取得する部分のコードですが、キーの指定が1,1,2のように定数で行われています。
[]内に指定すべき値は[マップID,イベントID,セルフ変数のインデックス]ですので、
別マップに実装した際、キーの部分を修正されていないのであれば、
『ID1のマップのセルフ変数にダメージ処理をしているが、見ている変数は今のマップ』という形になっているのかなと推測します。
見当違いなら申し訳ありません。
・解決策について
まず、複数イベントで動作させるのに、EventReSpawnにてイベントを生成する手を使うとして、
自動でイベントIDが割付されるので、
どのIDを指定してよいかわからないといった懸念を感じられたのだと想定します。
そこでマップID、イベントIDは動的に取得するという方法がありますので、その方法を使えば
マップ毎、イベント毎のIDの指定という意識は必要なくなります。
動画内のコードで例を示します。以下の例を参考に実装してみてください。
コード: 全て選択
if(event3Exists){
let i = $gameSelfSwitches.getVariableValue([1,1,2]);
let z = i - 10;
$gameSelfSwitches.setVariableValue([1,1,2],z);
}
の部分を
コード: 全て選択
if(event3Exists){
const mapId = $gameMap.mapId(); // 現在のマップIDを取得します。
const eventId = adjacentEvents[0].eventId(); // 攻撃対象のイベントIDを取得します。
const selfVarIndex = 2;
const key = [mapId, eventId, selfVarIndex];
const i = $gameSelfSwitches.getVariableValue(key);
const z = i - 10;
$gameSelfSwitches.setVariableValue(key, z);
}
というように変更を加えてください。
これで、隣接した敵のセルフ変数を処理する
という処理になるかと思います。
マップ毎、敵毎に手を加える必要はありません。
問題はまだまだあるかと思いますが、ひとまずどこか参考になれば幸いです。