【解決済み】「イベントの一時消去」を実行したイベントの判定

アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡を取る:

【解決済み】「イベントの一時消去」を実行したイベントの判定

投稿記事by MEIKOI » 2021年5月06日(木) 19:15

こんにちは。いつもお世話になってます。

イベントに対して、一時消去されたイベントか?の判定を行いたいのですが
上手くいきません。

具体的に作っている動作は、

1,マップ上に複数のイベントを配置。※イベントのメモ欄に[りんご]と記述
2,配置した全てのイベントを一時消去。
3,イベントがすべて消去されている時は、文章「りんごがありません」を表示する。

↓3に各当する部分のコード

コード: 全て選択

var check = 0;
for (var i = 0; i < $gameMap.events().length; i++)

if (~$dataMap.events[$gameMap.events()[i]._eventId].note.indexOf("[りんご]")
&& $gameMap.event($gameMap.events()[i]._eventId)._erased == false)
{check += 1}
}
if ( check == 0){$gameMessage.add("りんごがありません")}
if ( check >= 1){$gameMessage.add("りんごがあります")}



一時消去したイベントは、配列から削除されると思っていたのですが
どうも削除されてない??ようなので ._erasedの判定を加えてみたのですが
checkの値は、0になってくれません。

何か気が付いた点がありましたら、教えてください。
よろしくお願いします。
最後に編集したユーザー MEIKOI on 2021年5月06日(木) 22:46 [ 編集 1 回目 ]

奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: 「イベントの一時消去」を実行したイベントの判定

投稿記事by 奏ねこま » 2021年5月06日(木) 20:10

checkを+1してるイベントがどれなのか調べたら何かわかるんじゃないでしょうか?
名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: 「イベントの一時消去」を実行したイベントの判定

投稿記事by 名無し蛙 » 2021年5月06日(木) 20:15

こんにちは
自分の環境で試しにコードコピペしましたが問題無く反映されましたね
適当なイベントに[りんご]と書き、
スクリプトコード→一次消去→スクリプトコードのみのシンプルな確認ですが
りんごがあります
りんごがありません
と表示されました。何か他の要素で競合している可能性があります

それとは別に余計なお節介ですがリファクタリング(機能そのままで最適化)したくなるコードですねぇ
①ツクールMVのメモ欄では<りんご>と書く事で.meta['りんご']にtrueが格納されるのでmetaを活用した方が良いです。
②イベントデータを取得する場合は$dataMapからではなく、Game_Event.prototype.eventから取得した方が良いです。
③配列にアクセスする時はforを使うよりもforEach系のメソッドを使用した方が良いです。
someメソッドは「一つでも条件を満たす場合はtrueを返す」という代物なので今回は特に有効です。
アロー関数と組み合わせるとなお良い。

コード: 全て選択

const result = $gameMap.events().some(e => e.event().meta['りんご'] && !e._erased);
const text = result ? "りんごがあります" : "りんごがありません";
$gameMessage.add(text);
this.setWaitMode('message');
最後に編集したユーザー 名無し蛙 on 2021年5月06日(木) 23:01 [ 編集 1 回目 ]
アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡を取る:

Re: 「イベントの一時消去」を実行したイベントの判定

投稿記事by MEIKOI » 2021年5月06日(木) 22:45

アドバイスいただきありがとうございますm(_ _)m

動作テストして頂き、動くとの事でしたので
再度隅々チェックしてみたところ
イベントの一時消去した後に
セルフスイッチがコモンイベントから操作されていたので
削除しましたら問題なく動きました。

プログラミングに関しては、赤子の様に疎いので
someについてググり簡単な記述に関しては軽く理解しました。
イベントコマンドのスクリプト欄は少ないのでそれも含め大変ありがたいです!
metaを使うかまだ悩んでいるのですが、結構作ってる中でnoteOfを使っちゃっているので
イベントのメモ欄含めて書き換えも大変だなと感じているので、また精査してみます。

今回の悩みは解決いたしました。
ありがとうございました!

“MV:質問” へ戻る