• iPhone・Androidアプリ化対応。HTML5で動くノベルゲーム製作キット

変数とは

ティラノスクリプトでは変数を使うことができます。

変数とは 何かを記憶させておく箱になります。
この「何か」というのは、例えば

・プレイヤーに入力させた、主人公の名前
・キャラクターの好感度
・フラグ管理

など、いろいろです。「フラグが立った」といった表現は結構一般的になりましたね。

■変数の種類

ティラノスクリプトでは、以下の3つの種類の変数が利用できます。

  • システム変数
    ゲーム全体で共有する変数です。例えば、「エンディングを見たことがあるか否か」といったセーブデータに影響されない内容を保存します。
  • ゲーム変数
    セーブデータ毎に管理する変数です。他のセーブデータが呼び出されると上書きされます。 例えば、「アイテム管理」や「どの選択肢を選んだか」といったゲームの進行に関わるデータを保存します
  • 一時変数
    一時的に使用するデータを保存します。ゲームを再開しても復元されません。

実際のコードを見てみましょう ;ゲーム変数値数値を代入
[eval exp="f.flag1 = 1000"]

;システム変数に文字列を代入
[eval exp="sf.変数その1 = '文字列'"]

;一時変数に変数を代入
[eval exp="tf.flag1 = f.flag2"]


これらで代入した値は、アトで条件分岐で使ったりそのまま画面に表示したり、多様な活用が可能です。

さらに、[iscript]タグを使うと、連続したevalを完結に記述することができます。例えば、先程のコードは [iscript]
f.flag1 = 1000
sf.変数その1 = '文字列'
tf.flag1 = f.flag2
[endscript]


このように書くこともできます。2つはまったく同じ動作をします



変数として使用可能な名前

ティラノスクリプトでは変数に自由な名前を付けることができます。ただ、以下のルールは守ってください

・変数名には半角英数と全角文字、_ (アンダーバー) を使うことができる
(例) f.flag_test sf.your_name_3

・変数名の最初に数値がくることはできない
(例)× f.3name はダメ



変数の演算

計算をしたい場合は
[eval exp="f.flag1 = f.flag1 + 1"]
この例では、f.flag1 に 1 を足した物を f.flag1 に代入しています ( つまり f.flag1 に 1 を足している )。

[eval exp="f.flag1 = f.flag1 + f.flag2 * f.flag3"] f.flag2 と f.flag3 をかけたものに f.flag1 が加算されたものが f.flag1 に入ります。
除算を行うときは / (スラッシュ) を用います。

  文字列の連結も+を活用します
[eval exp="f.flag2 = 'hoge'"]
[eval exp="f.flag3 = 'une'"]
[eval exp="f.flag1= f.flag2 + f.flag3"]



変数の削除

変数を削除する場合は delete 変数名 と記述します。例えば、f.flag1 を削除したい場合は [eval exp="delete.f.flag1"]

と記述します。

[clearvar]でゲーム変数を一括で全消去できます。
[clearsysvar]タグでシステム変数を全消去できます。



変数の内容を表示する

変数の内容をシナリオで表示したい場合は[emb]タグを使用してください
例えば、以下のようになります。 [cm]
[eval exp="f.num=200"]
[eval exp="f.mojiretu='こんにちは'"]

f.num の内容 : [emb exp="f.num"][l][r]
f.mojiretu の内容 : [emb exp="f.mojiretu"][l][r]


実行結果は
f.numの内容:200
f.mojiretuの内容:こんにちは

これは、主人公の名前を自由に選択できるときなどに、活用できますね。



エンティティ

エンティティ機能は、変数の内容で他のタグ属性を置き換える機能です。
属性の値に、&を続けて変数名を記述して下さい
;一時変数にテキストを代入
[iscript]
tf.title = "これはテストですよ"
[endscript]
;代入しておいた変数をtext属性の値として格納 「これはテストですよ」というテキストが画面に表示されます
[ptext layer=1 page=fore text=&tf.title size=30 x=180 y=150 color=red ]