こんにちは。
今回は「しばらくしたら数が回復するアイテム」を実装してみたのでその話です。
年末頃に詰み回避の手段としてそういうのを実装してみたいって話をしました。
いざやってみたら結構簡単だったので記事にするほどでもないかなと思ったのですが、まぁ宣言しちゃったし実装した方法以外にもいろんなやり方があるハズなのでこの機会に考えて書いてみようと思います。
※初心者が考えてみた、という記事です。他の方法もあるでしょうしここの方法がベストとも限りません。
まず、"しばらくしたら"っていうのを時間経過にするのか、行動の回数にするのかっていう分け方があると思いますが、いずれにしても何かをカウントして そのカウントに応じてアイテム数を増やすっていう流れになりますよね。
カウントで思いつく方法が↓
①イベントの発生に応じて経過時間とする
②歩いた歩数で経過とする
③実際の経過時間(常にカウントする)
④実際の経過時間(時間を取得する)
先に言っておくと私が採用したのは③です。
①の方法は会話などのイベント発生時に計測用変数に加算していく方法。イベント内に変数の加算コマンドを仕込むだけ。イベントのボリューム次第で経過時間を自由に設定できたりするのがメリットですが仕込むのが大変ですね。宿などの日を跨ぐイベント時に大きく加算するくらいが使いどころ? ②と併用するといいかも。
②歩数は常に内部で計測されており、変数の操作コマンドで取得できます。
この歩数はゲーム開始からずっと計測が続き、場所移動やロードなどをしてもリセットされません。
なのでアイテム数回復時にリセットできるようなカウンター変数を作るためには、総歩数を格納する変数に加えて"歩数を一時的に保存する変数"が必要になります。
一時保存歩数の変数はゲーム開始時に0としておきます(設定しなければ0になるんだっけ?)。
アイテム回復時は総歩数の変数に歩数を格納、カウンター変数に(総歩数-一時保存歩数)を"加算"。
カウンター変数の数次第でアイテム数を増加させ、カウンターをゼロにリセット(下の例では計算で余った分から)。そして一時保存歩数に歩数を格納。
そうするとイベント実行毎に前回からの歩数に応じてアイテム数が増えることになります。
で、これをいつ実行するかというとアイテム数が表示されるようなときに実行できたら良いのですが それってショップイベントやメニューを開いたときですよね。
ショップイベントはいいとして、メニューを展開したときにイベントを実行するのってプラグインが必要だった気がします。
プラグインを使っても全然良いのですが、使わないとしたら並列処理を使う方法があります。
並列処理を使って数秒毎に計測実行してしまうのです。
実装方法はカンタン。さっきのを計算用コモンイベントとして作成し、別のコモンイベントで呼び出します。呼び出しコモンイベントのトリガーを並列処理にして適度なウエイトを挟むだけ。
これだけです。 例ではスイッチ1がONのとき実行、となっていますがこれをアイテムを入手した時にONにするなどしたら完成です。
残るは実際の時間計測をする③と④ですが思いの外長くなってしまったので一旦区切ります。
らくがき貼っておしまい。
ありがとうございました。次回は数日後の予定。