(MZ) 実時間で1日1回のみアクセス可能なイベントの作り方

クリックすると何かをプレゼントしてくれるイベントを作りたいのですが、翌日の現実の日にちが過ぎるまではもう一度はプレゼントされないようにしたいです。どうやって実装すればいいでしょうか?

問題を分割しましょう。

最初の問題:現実世界の今日の日付をどう取得するか。

2番目の問題:イベントと最後にやり取りした現実世界の日付をどう記憶するか。

ここで一点、これに少しスクリプトを使うことを検討してください。例えば、最初の問題については、Date クラスを使って現在の日付と月を変数に保存することができます。

var date = new Date();
// 1 と 2 は、使用していない変数 ID に変更してください
$gameVariables.setValue(1, date.getMonth())
$gameVariables.setValue(2, date.getDate())

これで、現在の日付と月が変数に保存されます。

その後、これらをどこかに保存しておき、再度現在の日付を取得して、条件分岐などを使って比較します。もし両方が等しければ、それは同じ日であることを意味します。必要であれば年も追加できます。date.getYear() で可能です。

ここで何かがうまく動いていないのですが、原因がわかりません。「Dateが定義されていません」と表示されます。何かアドバイスはありますか?

条件分岐スクリプトが、スクリプト呼び出しから変数を使おうとしています。これは動作しません – スクリプト呼び出し内で宣言されたJavaScript変数は、同じスクリプト呼び出し内でのみ参照可能です。

スクリプト呼び出しを使用すべきではありません。別の変数(3以外)を使用し、「変数の操作」機能で、この値をScriptボックスに入力してください:

new Date().getDate()

その後、条件分岐は通常の「変数の比較」(変数3と他の変数を比較)として設定できます。2つ目のスクリプト呼び出しは、変数3を他の変数に等しく設定する「変数の操作」に置き換えることができます。

同じマップ上に複数のこれを配置しても、お互いに打ち消し合うことはありませんか?

なぜダメなのか分かりませんね。ただし、それぞれに別々の変数ペアが必要になるかもしれません。数が多くなるとごちゃごちゃしてくる可能性があります。

そのSelf Variableプラグインについて確認してみます。

「いいね!」 1

日本語です。

私がログインボーナスに使用しているのは、以下のイベントです。

参考になると良いですが。

◆変数の操作:#0017 日 = new Date().getDate()
◆条件分岐:#0017 日 ≠ #0018 前回の日
◆文章:なし, なし, 暗くする, 中
: :遊んでくれてありがとう!
: :ログインボーナスをプレゼント!
◆変数の操作:#0018 前回の日 = #0017

:分岐終了