【解決済み】トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

のののののの
記事: 19
登録日時: 2020年1月26日(日) 00:02

【解決済み】トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by のののののの » 2020年2月01日(土) 16:48

こんにちはお世話になってます。
トリアコンタン様のEventReSpawn.js(イベント動的生成プラグイン)を
ループMAPで使用する方法はありませんか?。

現状です。
1.マップの設定にてMAPをループにします。
2.イベント設置。プレイヤーが接触設定。
3.EventReSpawn.jsでイベントをランダムに出現させます。

↑の処理をした場合の結果です。
イベントをプレイヤーが踏むたびに、処理が行われるため設定した数で表示できません。
例)EventReSpawn.jsでランダム位置配置を2に設定。次踏むと出現数が4→6→8...と増えてしまいます。

またイベントにイベントの一時消去の処理を入れた場合、出現が止まります。
(ループMAPのためイベントの一時消去が残ります)

質問内容。
ループMAPのときEventReSpawn.jsで配置の数が設定値と同じで、
イベントを踏むたびにランダム配置だけ再試行を行う方法はありませんか?


※MAPをループにせず2つMAPを使用して場所移動で繋げた方法では、望む動作ができました。
しかし、実際制作してみてループMAPにしたほうが自然だと思い、
今回質問致しました。

以上、よろしくお願い致します。
         
最後に編集したユーザー のののののの on 2020年2月05日(水) 19:58 [ 編集 1 回目 ]

アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by トリアコンタン » 2020年2月02日(日) 15:36

こんにちは!
プラグインのご利用ありがとうございます。

すみません、ご提示の手順で確認しましたが現象を再現できませんでした。。

再現手順
1. マップの設定にてMAPをループにします。
2. イベント設置。プレイヤーが接触設定。
3. EventReSpawn.jsでイベントをランダムに出現させます。(「ERS_MAKE_RANDOM 13 0 1 0 0 0 2」を実行。13は生成したいイベントID)

2020-02-02.png


3を繰り返し実行しましたが、生成数は毎回2ずつでした。
新規プロジェクトでも同様の現象が再現するでしょうか?

またイベントにイベントの一時消去の処理を入れた場合、出現が止まります。


こちら一時消去の命令を入れたのは、2で設置したイベントに対してでしょうか。
その場合、場所移動で別マップに移動するまでイベントは消去されたままです。
これは本プラグインではなくツクールMVの仕様なので、本プラグインから変更することは難しいです。。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
のののののの
記事: 19
登録日時: 2020年1月26日(日) 00:02

Re: トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by のののののの » 2020年2月02日(日) 23:24

トリアコンタン様大変お忙しいところご回答いただきありがとうございます。

トリアコンタン さんが書きました:3を繰り返し実行しましたが、生成数は毎回2ずつでした。
新規プロジェクトでも同様の現象が再現するでしょうか?


私の表現の仕方が悪くトリアコンタン様に誤解を与えてしまい、すみませんでした。
プラグインは正常に機能しています。

イベント2つ用意します。
イベント1、キャラクター下、プレイヤー接触。プラグインコマンド ERS_MAKE_RANDOM 2 1 1 0 0 1 5
イベント2、 出現用グラフィック
とした場合、
ループMAP全部にリージョン1を設定して、
イベント1をプレイヤーが踏むたびイベント2が5個ずつ生成されます。

という前提のうえで質問です。
イベント2を2度踏むと、5(出現数)×2(実行)で合計10個イベントが生成されます。
これを
出現数を合計5にしたいです。

つまり、
イベント2を2回踏んだとき、2回分の処理で合計10個生成されるのでは無く、
前回のイベント生成数をリセットして、合計5個にしたいです。

現在の処理
イベント2を踏む(グラフィック5個生成)

イベント2を踏む(グラフィック5個生成)

合計生成数10個
※この処理の場合、出現を繰り返し、画面上の合計数が5→10→15→20.....。


望む処理
イベント2を踏む(グラフィック5個生成)

イベント2を踏む(グラフィック5個生成)-5(前の生成数-5)

合計生成数5個
※この処理の場合、出現を繰り返しても、画面上の合計数が5のまま配置のみ再試行。

◆望む処理を実現するためにはどうしたらよいでしょうか?

プラグインは正常に動いています。
しかし、上記のような処理ができないかと模索しています。
イベントの組み方をご教授頂ければ幸いです。

大変お忙しいところ恐縮ですが、何卒よろしくお願い致します。
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by トリアコンタン » 2020年2月04日(火) 07:43

こんにちは!
状況について理解しました。
イベントコマンドで実現する場合、少し複雑かつ実現可能な条件が限定されますが参考になりましたら。

生成したイベントを再配置したい場合、初回の生成時に任意のスイッチをONにして処理を切り替える必要があるかと思います。
さらに条件分岐で、スイッチがONならコマンド「イベントの位置設定」で生成したイベントを再配置します。
このとき、単純なランダム配置だと壁の中などに入ってしまうので、複数の配置先候補を作っておいてその中からランダム配置するのが自然かと思います。

なお、この方法は生成するイベントのIDがあらかじめ分かっている場合のみ使えます。
コマンド「イベントの位置設定」がイベントIDを直接指定することしかできないためです。

コード: 全て選択

◆条件分岐:生成済みがON
  ◆注釈:この座標はいくつかの候補の中からランダム指定する。
  ◆イベントの位置設定:EV014, (11,13)
  ◆イベントの位置設定:EV015, (6,10)
  ◆
:それ以外のとき
  ◆プラグインコマンド:ERS_MAKE_RANDOM 13 0 1 0 0 0 2
  ◆スイッチの操作:#0108 生成済み = ON
  ◆
:分岐終了
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by トリアコンタン » 2020年2月04日(火) 21:15

すみません。
以下のスクリプトで「指定したIDのイベントを消去」してからもう一度「ERS_MAKE_RANDOM」を呼んで再生成するやり方ならもう少し簡単にできそうです。

コード: 全て選択

$gameMap.eraseEvent(1);
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by 奏ねこま » 2020年2月04日(火) 21:41

横から失礼します。

イベント#002を元に生成したイベントを削除するスクリプト

コード: 全て選択

$gameMap.events()
        .filter(ev=>ev.getOriginalEventId() == 2)
        .forEach(ev=>ev.erase());
のののののの
記事: 19
登録日時: 2020年1月26日(日) 00:02

Re: トリアコンタン様のEventReSpawn.jsをループMAPで使用する方法はありませんか?

投稿記事by のののののの » 2020年2月05日(水) 19:53

トリアコンタン様、奏ねこま様 
大変お忙しいところご回答をいただきありがとうございます!

お二方からご教授いただいた内容を色々試したところ、
イベント1に
スクリプト $gameMap.events()
         .filter(ev=>ev.getOriginalEventId() == 2)
         .forEach(ev=>ev.erase());
プラグインコマンド ERS_MAKE_RANDOM 2 1 1 0 0 1 1
スクリプト $gameMap.eraseEvent(2);

にて理想の動作となりました。
トリアコンタン様、奏ねこま様、
ご教授いただき本当にありがとうございました!

トリアコンタン様、奏ねこま様、
ご制作された素晴らしいプラグインを現在のゲーム制作で使用しています。
重ねて御礼申し上げます。^^

“MV:質問” へ戻る