[eval]タグの機能とは?
早い話が「変数の定義」をするためのタグです。使いたい変数があればこの[eval]タグで定義してから使いましょう。それだけです。ポイントとしてはJavaScripitにもこの変数を組み込むことが可能ですってくらいです。
ちなみにですが、変数のことをフラグと呼んだりします。告白してもし彼女がイエスと言ってくれたなら1を代入(これを、「フラグに1を立てる」ともいう)、もしノーだったら0を代入する…みたいなのをフラグって呼んだりします。
[eval]タグのパラメータ一覧
パラメータ | 必須 | 解説 |
---|---|---|
exp | ◯ | 実行するJavaScript文を指定します。 |
[eval]には毎回expを使いますので、もう[eval exp]というタグで良いんじゃないかって思います。融合している。
変数の種類
まず、変数には3つの種類があります。
- システム変数
- ゲーム変数
- 一時変数
システム変数とは?
システム変数は、sf.~で表される変数で、その名の通りシステム全体を通して管理する変数です。具体的にどういうときに使うかと言いますと、1度クリアしたゲームのタイトル画面が変わることとかってありますよね?そういうときはシステムフラグを使っています。すべてのセーブデータで共通の変数になり、そのゲーム自体で管理される変数なので扱いには結構注意です。
ちなみに一文字は、複数エンディングがあるゲームにおいて、すべてのエンディングを回収してくれたプレイヤーに、真エンディングを見られるルートを用意する…といったときに使ったことがあります。
システム変数の使い方
;エンディング1を回収した
[eval exp=”sf.end1=1″]
ゲーム変数とは?
ゲーム変数は、f.~で表される変数で、セーブデータごとに管理されている変数です。ロードなどで呼び出してくれますので、ロードした時に立てておきたいフラグがあるのであればこの変数を使えばOkです。というよりも、よっぽどシステム変数を使わないといけない!とかいうとき以外は大体この変数を使っておけば問題ないかなって感じです。
ゲーム変数の使い方
;左(0)、中央(1)、右(2)のマップ位置を示すフラグ
;左の部屋に来ました
[eval exp=”f.map=0″]
一時変数とは?
tf.~で表される変数です。セーブデータをロードしたタイミングで初期化される変数で、その時だけ利用するぞっていうタイミングで使いましょう。
ちなみに、いちもんじはこれ、マップ位置を判定するのにいいじゃ~んと思って使っていたら、セーブデータをロードしたときに自分がどこにいるのか分からなくなった主人公くんが元の位置にワープしてしまうと言う現象を起こしたことがあります。(なぜならば位置管理していた値が消失していたから、主人公くんがどこにいるのか記憶がなくなっている)
じゃあ具体的に使うタイミングっていつよ?って感じなんですが、一文字はミニゲームの時とかに使いました。例えばじゃんけん大会のときとか。相手が何を出すか、みたいなのは別にセーブデータに残しておく必要もないので、グーとかチョキとかパーとかを管理するときとかそういう時に使いました。でもなんかもう使えると思ってたのに使えなかった現象がめんどいので、分からんぞゴルァ!って方はもうf.~のゲーム変数を使っておけばよいと思います。
;相手が何を出すか(グーなら0、チョキなら1、パーなら2)
[eval exp=”tf.zyanken=0″]
[emb]タグで変数の中身を表示する
変数に入れたものを本文中に表示させたいときってありますよね。例えばプレイヤーに入力して貰った名前を表示させるとか。そういう時に[emb]タグを使用します。使い方はこんな感じです。f.nameという変数にプレイヤーから入力して貰った名前が入っているとしましょう。
おや、あなたの名前は[emb exp=”f.name”]さんと言うのですか。[p]
と言った具合に出来ます。公式でも書いてありましたが、これをマクロ化しておくと使いやすいですね。例えば[na](名前の名)というマクロを作って、名前をパッと表示できるようにしておきましょう。
[macro name=”na”]
[emb exp=”f.name”]
[endmacro]
こうしておけば、↑でしている処理も楽になります。
おや、あなたの名前は[na]さんと言うのですか。[p]
ちなみに、プレイヤーに入力して貰う方法はこちらで解説しております。
マクロについてはこちらで説明しております。↓
ランダム値の代入をする
先ほど一時変数の説明をしている際にじゃんけんの話に触れました。じゃんけんって普通何を出すか分からないから面白いわけじゃないですか。だったらランダムに値を代入させましょう。
ただ困ったことに、ティラノスクリプトにはランダムに値を出すという機能がありません。なので毎回Javascriptを使用しています。
;ランダム0~2まで。
[iscript]
f.zyanken= Math.floor( Math.random()*3);
[endscript]
f.zyankenというゲーム変数の中に、ランダムで0から2までの値を代入させています。0ならばグー、1ならばチョキ、2ならばパーで0~2までです。これは必ず0から始まります。ただ、f.zyanken= Math.floor( Math.random()*3);ここでは2ではなく3を書く必要があります。いくつ生成するかを指定する場面なので…なので、f.zyankenの中には、0もしくは1もしくは2の3つのうちのどれかの値が入っていることになります。
使う数はそのまま書くけど、実際に代入される数字は使う最高値よりも-1しなければならないんだよってことです。
変数を消去する[clearvar]・[clearsysvar]
[clearvar]・[clearsysvar]タグを使用すれば使っていた変数を消去することが出来ます。
;フラグ名を指定して消去
[clearvar exp=”f.ichimonji”]
;システムフラグも消去OK
[clearvar exp=”sf.ichimonji”]
;システム変数の全消去
[clearsysvar]