各MAPに入るたびに1度だけ発生するイベントを作りたい

返信する
teisuto
記事: 4
登録日時: 2025年7月13日(日) 23:09

各MAPに入るたびに1度だけ発生するイベントを作りたい

投稿記事 by teisuto »

特定のスイッチがONになっていた場合、各MAPに入るごとにイベントを1度だけ実行したいです。
(具体的にはピクチャの表示などを行いたい)

トリガーを自動実行にして、
・「やりたい作業」
・イベントの一時消去
で、出来るかと思ったのですが、どのマップでもやろうとおもうと全MAPにおなじイベントを用意しなくてはいけません。
かといってコモンイベントにいれると「イベントの一時消去」が発動してくれず、無限に自動実行を続けてしまいます。

上手いことコモンイベントで対応したいのですが良いやり方ございませんでしょうか。
アバター
DoujinRuis
記事: 170
登録日時: 2022年10月25日(火) 10:59

Re: 各MAPに入るたびに1度だけ発生するイベントを作りたい

投稿記事 by DoujinRuis »

こんにちは
今回の件をYoutubeで解説してみました。
もしよければ見てください
https://www.youtube.com/watch?v=GWs7pmn_6YA

スクリプトの参考コード
初期化
$gameVariables.setValue(2, {
2: "Actor1_1",
3: "Actor1_2",
4: "Actor1_3"
});

$gameVariables.setValue(3, []);

コモンイベント
const mapPicMap = $gameVariables.value(2); // { 2: "picA", 3: "picB" ... }
const currentMap = $gameMap.mapId();

if (mapPicMap.hasOwnProperty(currentMap)) {
const switchId = 100 + currentMap;
if (!$gameSwitches.value(switchId)) {
const pictureName = mapPicMap[currentMap];
$gameScreen.showPicture(1, pictureName, 1, 100, 100, 100, 100, 255, 0);
$gameSwitches.setValue(switchId, true);

// ★ オブジェクトから削除して除外リスト化!
delete mapPicMap[currentMap];
$gameVariables.setValue(2, mapPicMap); // 念のため再セット
}
}

初心者の悩みの9割は秒で解決するDiscord↓
discord.com/invite/dzUAC3CSMH
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH

普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
teisuto
記事: 4
登録日時: 2025年7月13日(日) 23:09

Re: 各MAPに入るたびに1度だけ発生するイベントを作りたい

投稿記事 by teisuto »

ありがとうございます、早速動画見てきたいと思います。
参考にさせていただきます!
返信する

“MZ:質問”に戻る