[掲示板へもどる]
一括表示

記事No: 21746 [関連記事]
タイトル隠しコマンド「空イベント生成」のマップ移動時の挙動について
投稿日: 2025/08/29 00:59
投稿者ワイス [LdeOd1229]

下記の通り、お知恵をお帰りできれば幸いです。

[やりたいこと]
隠しコマンド「空イベントの作成」にてmapAに空イベントを作成し、無事作成された。
しかし、主人公がMapBに移動し、再びMapAに戻ると作成したはずのイベントは削除されている。

マップ移動を挟んでも、MapA上に作成したイベントが消えないようにしたい。
(ver. 3.639/ 基本システム利用中およびまっさらな状態の両方で試した)

[やってみたこと、どう上手くいかなかったか]
隠しコマンド<<MAKE_EVENT_X=(数値1)/Y=(数値2)>>にて
MapA(仮)にてイベントを作成した。
この時点でのイベントIDを仮にID10とする。

MapB(仮)にマップ移動を行った後、
再びMapA(仮)に戻ると隠しコマンドで作成したID10のイベントが消えている。
( <<DELETE_EVENT_ID>>の削除コマンドは実施していない)

やったこと1
グラフィックが消えているだけ、もしくは場所が移動している可能性を考えて、該当IDが存在するかを確認したが、ID10そのものが存在していない(=削除されている)状況だった。

やったこと2
マップ移動に余計なコマンドが入っていないことを確認し(主人公の場所移動のコマンドのみであることを確認)、複数のマップで試したが同じ挙動だった。
また、基本システムおよびまっさらな状態にて試した。
結果は同じだった。

やったこと3
パーファクトガイド等にて空イベント作成の個所を読んだが解決しなかった。

[聞きたいこと]
1.上記の挙動は仕様なのか?
(パーフェクトガイド、よくある質問等記載のマニュアル類を読んだが、
マップ移動で削除される記載がなかったため、仕様ではないと考え
質問をしているが、読解ミスなどもあり得ると思ったため質問)

2.仕様ではない場合、何が原因で上記の状況が起きている可能性があるのか。

3.(仕様の場合でも、仕様でない場合でも)どのようなアプローチ方法を行うことで、MapA上に作成した空イベントID10を、MapBなどほかマップに移動し、またMapAに戻ってきた場合でも、残しておけるか。

以上となります。
どうぞよろしくお願いいたします。


記事No: 21747 [関連記事]
タイトルRe: 隠しコマンド「空イベント生成」のマップ移動時の挙動について
投稿日: 2025/08/29 02:17
投稿者Masaqq [reFeepeO402]

Re: 隠しコマンド「空イベント生成」のマップ移動時の挙動について (画像サイズ: 2391×1080 353kB)

>1.上記の挙動は仕様なのか?
仕様です。

比較的、新しい機能なため説明書には記載されてなかったようです。
従来のマップEvに近い挙動に寄せたり、まとめてリセットする考えから
この仕様になってるのかと思います。

>3.(仕様の場合でも、仕様でない場合でも)どのようなアプローチ方法を行うことで、MapA上に作成した空イベントID10を、MapBなどほかマップに移動し、またMapAに戻ってきた場合でも、残しておけるか。

通常のマップイベントを置いておき、条件でON/OFFなどさせればよいかと思います。

例:
1.MapEvID10をEditor上で作成
2.ページ1の起動条件:self0=1にする、キャラチップ(グラフィック)を設定
3.使用時、なんらかの方法でEvID10のself0=1にする
※X番変数の呼び出しを利用し、1000100を代入した変数=1にする等
※空いてる通常変数を使った方が動作確認には楽かもしれない

以上になります。


記事No: 21748 [関連記事]
タイトルRe: 隠しコマンド「空イベント生成」のマップ移動時の挙動について
投稿日: 2025/08/29 11:08
投稿者ワイス [LdeOdFg704]

ご回答、ありがとうございます!!
迅速かつ的確なご回答とご助言、本当に助かりました。

仕様であること、またその背景のご推察ふくめて理解いたしました。
仕様ではないと思い込み、このままドツボにはまるところでした。
その仕様も前提としてうまく利用していけるようにいたします。

通常のマップイベントでの対処についても、
丁寧にご教示いただきありがとうございます。
非常にわかりやすい画像までいただき、重ねて感謝申し上げます。
現在実装したい機能については頂いた助言をもとに実装したいと思います。

ありがとうございました!!!


記事No: 21750 [関連記事]
タイトルRe: 隠しコマンド「空イベント生成」のマップ移動時の挙動について
投稿日: 2025/08/31 13:37
投稿者としこC [FreiFeWe787]


(1.)仕様について

【空イベント作成】で作成したイベントはマップ移動時に消失します
(※)注意イベントIDに割り当てられた内部変数はマップ移動後も保持


(3.)作成したイベントをマップ移動後も保持する方法
  答え:可変DBに保存する

どのようなイベントを作成するかによって対処は変わります。

質問者のウディタ理解度も分からなければ、具体的に行いたいことが書かれていないと、下記のような長々とした仕様解説をすることになります。
だから、(3.)への答えは、苦しんで頑張ってマニュアルを読んで……としか。



作成されるイベントの、おおまかな分類:

(A)マップ内で作成するマップイベントの処理内容が同一か、否か
(B)イベントを移動させるか
(C)プレイヤーとの距離、条件により変化する移動を行うか(Bと異なる)
(D)Self内部変数を利用するか


主に必要となる処理は下記:(分類の理由もそれぞれの説明に)

『基本』
【空イベント作成】コマンドを実行するたびに、戻り値となる作成イベントIDを可変DBに保存。加えてマップ移動時には、「現在マップの作成済み空イベント保存」と「移動先マップの空イベント再作成」を行う


『可変DBの内容』
・生成したマップID
・割り当てられたイベントID
・生成時マップ退出時のイベントの座標XY
・イベントの種類(異なるイベントを作成する場合)
・イベントのSelf変数(異なるイベントの作成順が変わる場合は特に必須)
これらを要、不要に応じて実装すること


『マップ移動の検知』
(A)【変数操作+】から【現在のマップ番号】の変更を常時並列コモンで監視。
(楽だけど1フレーム遅延、ただしトランジション暗転で隠せる)
(B)【場所移動】コマンドを直接呼ばず、コモンイベントを呼び出し、その中で場所移動コマンドの前後に空イベント管理の処理を置く


『空イベントの起動検知』
(A)マップ内の他のイベントorコモンイベントから並列実行で【変数操作+】その他「[起動]今フレームに決定/接触起動したマップEvID」を確認
(B)空イベントではなく、起動条件&イベント内容が書かれたイベントをコピーする
(こちらは【<<DELETE_EVENT>>】ではなく【イベント一時削除】でのみマップ中の削除が可能)


『マップ内で異なるイベント処理を行うイベントを作成する』
(A)COPY複製元となるイベントそれぞれに記述
(B)マップイベントのSelf変数、可変DB側にSelf変数を用意し、イベントの種類を保存、マップイベント起動時にSelf変数を引数として、それぞれ呼び出す処理を切り替える


『作成したイベントに複雑な移動動作をさせる』
(A)複製元のマップイベントで、ページ毎に移動ルートをカスタムで設定
Self変数をページの条件にして、イベント作成時に変数呼出でマップイベントのSelf変数を代入
(B)並列実行から作成したイベントの動作指定を管理、プレーヤーとの距離を条件にイベント内容を実行する
(【■キャラ動作指定】ループによる移動指示では、起動条件【イベントと接触】が機能しない)


『マップイベントのSelf変数の初期化』
【空イベント作成】時には、Self変数が初期化されない。
(マップ移動時に作成イベントが自動で消去される場合も同様)

作成するイベントに種類があり、Self変数の用途が異なる場合、
初期化されていないSelf変数の値が、その種類のイベントが通常持ちえない数値だった場合に、誤作動の可能性がある。
作成イベントを削除する際には、Self変数の初期化は必須



―――――――――



これらを理解できない場合、
Masaqq様が書かれているとおり、【空イベント作成】を使わず、通常のマップイベントで対処する方が(!!安全!!)です。

ウディタ自体が壊れることは、おそらくありませんが、
【X番の変数呼出】や【コモンイベント呼出、イベントページ呼出】といった間接参照が意図しないタイミングで行われた場合に、エラー原因の特定に苦労することになります