空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

吉里吉里/KAG:セーブラベル名に変数を使用する  

2016-11-11[Fri]
cm0
tb0

ひさしぶりの吉里吉里2/KAG3 ちょいネタ。
最近ティラノとHTMLばかり触ってたのでカンを取り戻すのが大変。年食うとダメっすな。


*001|セーブラベル名 ←今回のお題

通常は「シーン1」「◯◯ルートA」「選択肢:◯◯◯を選んだ」といったように
セーブラベル名を直接シナリオに書き込むことがほとんどだと思うのですが
ここに変数を代入したいときはどう書けばよいかというのが今回のお題です。

シミュレーションゲーム等でよく見かける「◯日目」というセーブラベル名を変数で制御してみましょう。
「◯日目」の「◯」に当たる部分を変数 f.日数 と定義します。


*001
; 変数 f.日数 に 1 を代入する
[ eval exp="f.日数 = 1" ]

*002|f.日数+'日目'
[ cm ]
この書き方は失敗例です。f.日数が単なる文字列として認識されてしまいます。[ p ]

*003|&f.日数+'日目'
[ cm ]
f.日数の直前に「&」をつけることで「これは変数ですよ」とシステムに伝えています。
変数がセーブラベル名の先頭&変数がひとつしかない場合は、この書き方で大丈夫です。[ p ]

*004|&@'${f.日数}日目'
[ cm ]
変数がセーブラベル名の先頭ではない or 変数が2つ以上ある場合は
エンティティ+@付き文字列即値で対応します。[ p ]



変数が2つ以上ある場合


*001
; 変数 f.日数 に 1 を代入する
[ eval exp="f.日数 = 1" ]
; 変数 f.月 に 1 を代入する
[ eval exp="f.月 = 1" ]

*005|&@'${f.月}月 ${f.日数}日目'
[ cm ]
このときセーブラベル名は「1月 1日目」となります。[ p ]



関数を作って呼び出す場合


ラベル名を返すだけの関数を作っておくとスクリプトの記述量を減らすことができます。


[ iscript ]
/* 文字列を返すだけの関数 */
function labelName()
 {
  return f.年 +'年 '+ f.月 + '月 ' + f.日数 +'日目';
 }


[ endscript ]

*001
; 変数 f.年 に 1、f.月 に 1 、f.日数に 5 を代入します
[ eval exp="f.年 = 1, f.月 = 1, f.日数 = 5" ]

*002|&labelName()
[ cm ]
関数を使った場合。セーブラベル名は「1年 1月 5日目」となります。

*002|&@'${f.年}年 ${f.月}の月 ${f.日数}日目'
[ cm ]
直接書いた場合。セーブラベル名は上と同じく「1年 1月 5日目」となります。


どちらを使うかはお好みで。修正の手間を考えるなら関数のほうがオススメです。


関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/432-cc6afbed
この記事にトラックバックする(FC2ブログユーザー)

現在のページ

Category

Link

Comment

Mailform

Author

Twitter