宿屋に泊った後、話しかけると進行するイベント

アバター
とらんすコアラ
記事: 23
登録日時: 2018年2月04日(日) 00:28

宿屋に泊った後、話しかけると進行するイベント

投稿記事by とらんすコアラ » 2018年3月12日(月) 15:58

お世話になります。
表題の件、なかなかいい処理のアイディアが浮かばず困っています・・・。
お手数ですが、アドバイス頂けないでしょうか?

【やりたいこと】
複数の村人に対して、
1イベント毎に一晩泊った後で話しかけると進行するイベントを作りたい。

【例】
◇村人A 
イベント①⇒最初は普通に話しかけるだけ
イベント②⇒①の後、一晩泊まった後で進行
イベント③⇒②の後、一晩泊まった後で進行

◇村人B 
イベント①⇒最初は普通に話しかけるだけ
イベント②⇒①の後、一晩泊まった後で進行
イベント③⇒②の後、一晩泊まった後で進行

【その他】
はじめは、宿屋スイッチON⇒イベント終わると宿屋スイッチOFFで
繰り返そうと考えていたのですが、
複数人になってくると、他の村人のイベントで宿屋スイッチがOFFになってしまい・・・よくわからない事に・・。

説明がわかりづらく申し訳ございませんが、
少しでもアドバイス頂けたら幸いです。。

たびびと
記事: 16
登録日時: 2017年9月29日(金) 15:58

Re: 宿屋に泊った後、話しかけると進行するイベント

投稿記事by たびびと » 2018年3月12日(月) 20:16

自分も似たようなイベントを今作っているので参考になりましたら。

対応例

村人A
イベント① 初日は 宿泊スイッチon(自分は昼と夜の概念を導入してるので、一日のどこかで宿泊スイッチをoffに戻しています。) + 村人Aイベント用の変数を一つ用意し、進行度の目安として1加算の記述を入れる。

イベント② 上で作成した、村人Aイベント用の変数と宿泊スイッチをイベントページの開始条件にする。以降、イベント事に変数に1加算して行けばいけるかと。

この変数をイベント数ごとに用意してあげれば対応できると思いますよー

宿泊スイッチもON OFFのみで対応できなさそうだったら、変数を利用し
一泊泊まるごとに1加算していくような、宿泊日数の変数として利用する形や、
変数で宿泊状態を管理する形(0=宿泊判定なし 1=宿泊判定あり 2=宿泊後だが一時的にイベントを発生させたくない) 等、対応の幅が広がると思います。

参考になれば幸いです。
作成したいイベントの認識が違ったらすみませんー!
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 宿屋に泊った後、話しかけると進行するイベント

投稿記事by まっつUP » 2018年3月12日(月) 21:56

とらんすコアラ様

お世話になります。
こういう時は剰余を使うとよいと思います。

①Yanfly様のYEP_SelfSwVar.jsを導入してぱぱっと済ませましょう。
とても便利なセルフ変数機能をしこたま使用できるようになるプラグインです。
http://yanfly.moe/

②変数を一つ使うので命名します。YEP_SelfSwVar.jsの記述に従って命名してください。
スイッチも一つ使います。こちらは任意の名前でよいです。

③村人側のイベントをつくります。出現条件に①で命名したセルフ変数を指定します。
(セルフ変数による分岐です。イベントの実行内容の条件分岐でも本質的に同様です。)
値は100の倍数を指定してください。
イベントの実行内容は任意の実行内容とセルフ変数の加算を設定します。
ただし、セルフ変数の加算は上限を設けないと後述の理由で問題があるので
適宜条件分岐を行ってください。
例:◆変数の操作:#0010 Self Var += 1

④宿屋のイベントに処理を追加します。
①で命名したスイッチをオンにするだけです。

⑤村人がいるマップに以下の自動実行イベントを置きます。
④でオンにしたスイッチを出現条件にしてください。
また、以下の実行内容を設定します。
書いてあることは
そのイベントのセルフ変数が100の倍数でない時は次の100の倍数にする
です。
一部引数に指定しているthis._mapIdは現在のマップIDです。
7と入れることでID7のマップのイベントを走査することもできますが
全ての村人が同一マップに居る場合はこのままの方がよいと思います。

イベントコマンド「スクリプト」
var svid = 10;//セルフ変数id
var flvalue = 100;//基準が100の倍数であればこのまま
for(var i = 0; i <= $gameMap.events().length; i++){
if(!$gameMap.event(i)) continue;
var eventid = $gameMap.event(i).eventId();
var svvaule = this.getSelfVariableValue(this._mapId,eventid,svid);
if(svvaule % flvalue === 0) continue;
svvaule = Math.floor(svvaule / flvalue) * flvalue + flvalue;//次の100の倍数
this.setSelfVariableValue(this._mapId,eventid,svid,svvaule);
}

◆スイッチの操作:#0010 = OFF等自動実行イベントの出現条件を切る。

以上です。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
とらんすコアラ
記事: 23
登録日時: 2018年2月04日(日) 00:28

Re: 宿屋に泊った後、話しかけると進行するイベント

投稿記事by とらんすコアラ » 2018年3月13日(火) 18:44

>たびびと様、まっつUP様

さっそく返信いただき、ありがとうございます!!
お二方とも具体的な例を記載いただき、すごい助かりました!

少し時間がかかりそうですが、
なんとか両方とも試して、イメージ通り行くか考えてみたいと思います。。。

ツクール、初めてですが上手く処理の裏道を突くというか・・・
パズルのような感覚で楽しいです。

解決しましたら、後程コメントさせていただきます!!

“MV:質問” へ戻る