さてさて今回は、イベントのスクリプトで使用できるクラスおよび関数を自作しちゃいます。(クラスと聞いてビビらないで下さいね。クラスわかんなくても説明の通りやれば何とかなるでしょう。多分、もしかすると、運がよければ・・・。)
大したものではないのですが、掲題の機能を持ったクラス・関数の作成です。
このクラス・関数は、「年」、「月」、「日」、「曜日」、「時」、「分」、「秒」ををそれそれ任意の変数に格納します。
別に今回のクラスなしでも実現できないわけじゃないんですけど、まあより簡単にということで作ってしまいました。
まず以下のスクリプトをダウンロードして下さい。
date.zip(約1KB)
date.txt |
で、いつもなら何かのスクリプトと置き換えてというところですが、今回は違います。
項目(セクション)を1つ挿入します。Scene_DebugとMainの間がよいでしょう。挿入した項目には適当な項目名を入れて下さい。こちらは「Date」という名前にしました。
こんな感じ↓。
それで、できた項目内に先程ダウンロードしたスクリプトの内容を貼り付けて下さい。
今度は、値を格納したい変数の用意です。
こちらは任意のもので可能ですが、今回は変数1〜7を使用します。
これで準備OKです。
では、使い方です。
今回、自作したDateクラスというものを使うことになりますが、クラスとは何ぞやということは深く考えずに、まあコピー用の原紙だとでも考えて下さい。
具体的にはこんな感じ。(行頭の数字+:は便宜上記載しているだけで実際には記述しません。)一応、意味を注釈(#〜)で付記しておきます。
1: @Date = Date.new # Dateクラスの内容を@Dateという紙にを書き写します。カリカリ。
2: @Date.today(1,2,3,4) # Dateクラスはtodayという、年・月・日・曜日を変数に格納する機能を持っており、@Dateにもその機能が書き写されているので使用します。
3.: @Date.now(5,6,7) # 現在の時刻を変数に格納したい場合はnowという機能を使います。
4: @Date.dispose # 変数に値を格納し終わったので、書き写したDateクラスの内容は不要になりました。消しゴムで消します。ゴシゴシ。
5: @Date = nil # @Dateという紙自体も不要になったので、捨てます。ビリビリ、クシャクシャ、ポイ。←リサイクルせにゃもったいないっていうツッコミなしね。
これで1〜7の変数に値が入りました。
えっ何ですか、田中さん?1〜7の変数をうちは既に使ってる?じゃあもともと使っている変数を別のところに移動して下さいな、というと暴動起きそうなんで別の回避手段をっと。
todayおよびnowの括弧の中の値を変えていただければ結構です。
括弧の中はそれぞれ以下のような並びになっています。
today(年を格納する変数の番号, 月を格納する変数の番号, 日を格納する変数の番号, 曜日を格納する変数の番号[0-6、日曜日が0])
now(時を格納する変数の番号, 分を格納する変数の番号, 秒を格納する変数の番号)
これで好きな変数の番号を入れておけば、そこに値が入ります。
ちなみに値を入れる必要がない部分があれば、そこに0を入れておいて下さい。
例えば「時」が不要なら
@Date.now(0,6,7)
ってな具合です。
間違っても不要だからって省略しないで下さい。文法エラーになってしまうんで。
では具体例を見てみます。
こんなイベント書いてみました。
ここで、変数の操作の行が気になりますよね。実はtodayで格納される曜日の値は0〜6までの数字になっており0が日曜に相当します。変数はもともと数字しか扱えないため、データベース内のアクターの設定を利用して以下のような記述をしています。
アクター番号の9〜15に日〜土を割り当てているわけです。
つまり、todayで得た曜日の数値に9を足したアクター番号の名前を表示することにより曜日を日本語化するというトリックなのです。
結果として以下のような画面になります。(クリックすると拡大します。)
もう1つ、nowを使った例です。
結果はこんな感じ↓。(画像クリックで拡大します。)
今回はイベントのスクリプトを書く、少し難しい内容かもしれませんが、慣れないうちはスクリプト部分は上記例を丸写しするなどして使ってみて下さい。
使い方によっては、プレーヤーの誕生日だけに起きるイベントとか、現実世界と同じように時間が流れるゲームなんかもできるかも。
このスクリプトのサンプルを掲載します。百聞は一見にしかずで参考にしたい方どうぞ。
date.exe(約280KB)
- 戻る -