スポンサーリンク

TIPプラグインのマニアックな使い方

※太字は任意の部分です。

CSVデータの形式

TIPプラグインV4以降は、データをtf変数に保存しています。
CSVデータは、tf.system.tip_conf.data_ファイル名=[] に入れてあるので、
tip_data.csvの場合は、tf.system.tip_conf.data_tip_data=[] となります。

csvデータ
key,tip
hoge,ほげほげほげ
fuga,ふがふがふが

配列
tf.system.tip_conf.data_tip_data=[
	{key:hoge,tip:ほげほげほげ},
	{key:fuga,tip:ふがふがふが}
] 

こんな感じ。
0番目のtip項目は、tf.system.tip_conf.data_tip_data[0]["tip"] になります。長いね!!!

embタグでテキスト表示もできます。長いけど。
[emb exp="tf.system.tip_conf.data_tip_data[0]['tip']"]

※tf.system は文字通りシステムで使うデータが入っているので、下手に上書きしないよう tip_conf という配列内に全部入れるようにしております。
※tf.system はsleepgameでも消えない一時変数なのでちょっと便利かも。普通にこういう変数欲しい。

フラグについて

フラグはsf変数 または f変数 に保存し、CSV呼び出し時に tf.system.tip_conf.data_tip_data の中に格納しなおしています。
その為、ゲーム途中でフラグ立てをする場合は、tf.system.tip_conf.data_tip_datasf(f)変数 の2か所更新しないといけません。

フラグの名前は半角英数のみですが、フラグの中身自体は何でも入ります。
例えば、キャラ一覧CSVを作っておいて、パラメータ値を入れたりといった使い方も可能ではあります。

「フラグ名」に、csvデータの項目名を入れるとデータが上書きされますが、ゲーム再起動時にcsvを読むので元に戻ります。(戻らないようには出来るかも)
例えば、サンプルゲームの途中で、
[tip_flag key=tyrano flag_name=tip flag_val="テストだよん"]
を実行すると、「ティラノスクリプト」の説明テキストが「テストだよん」になっちゃいます。

テンプレートに {{:フラグ名(半角英数)}} と記述すると「フラグの値」が表示されます。

マクロ例

使えるかどうかはわかりませんが、こんな事もできますよ~的な例です。

TIPタグの記述をさらにマクロにする

[macro name="tip_emb"]
	[iscript]
		var tip_conf = tf.system.tip_conf;
		mp.data_name = mp.data_name || tip_conf.data_name;
		var data = tip_conf["data_"+mp.data_name];
		var tip = $.grep(data,function(e, i) {
			return (e.key == mp.key);
		});
		tf.tip_title = tip[0]["title"];
	[endscript]

	[tip key=%key data_name=%data_name]
	[emb exp=tf.tip_title]
	[endtip]
[endmacro]

[tip_emb key=hoge] または [tip_emb key=hoge data_name=dataname]

簡略化はできますが、シナリオの視認性は良くないですね…。

自動書き出しマクロ

CSVデータを0番目から順番に表示していくマクロです。
TIPプラグインじゃないと出来ない事ではないし、連想配列である必要すらないけど。

[eval exp=tf.text_num=0]
[macro name="シナリオ"]
	*シナリオループ
	[iscript]
		var tip_conf = tf.system.tip_conf;
		mp.data_name = mp.data_name || tip_conf.data_name;
		var data = tip_conf["data_"+mp.data_name];
		tf.data_max = data.length;
		var num = tf.text_num;
		tf.tip_title = data[num]['title'];
		tf.tip_tip = data[num]['tip'];
		tf.text_num=tf.text_num+1;  //0スタートなので最後にカウント
	[endscript]

	[chara_ptext name="&tf.tip_title"] //キャラ名に入れる場合
	[emb exp=tf.tip_tip]                //テキスト
	[p]
	[jump target=シナリオループ cond="tf.data_max>tf.text_num"]  //全部書き出したら終了
[endmacro]

[シナリオ]

keyからidを取得しティラノ変数に格納するマクロ

https://memocho.no-tenki.me/tyrano/archives/23#key_id

nextボタンで最後ページの次は詳細を閉じる(未確定)

※実装場所に悩んでいるので、今後変更の可能性があります。

CSV読み込み時に、nextend=close を指定すると、TIP詳細のnextボタンが最後のページの次は閉じる動作になります。(※リストのnextはなりません)
[tip_loadcsv nextend=close]

エロゲのCGモードとかで、クリックしてくと差分表示をして最後閉じるやつみたいなイメージです。
実際にエロゲのCGモードっぽくするにはCSSの知識が必要です。
エロゲの標準的なCGモードがどんなのかはわからないけど…私が遊んだのはそんなシステムのばっかだった!(どうでもいい)

TIPプラグインのレイヤー順について

使い方ではありませんが、TIPプラグインのレイヤー順について説明しておきます。

z-index の説明が必要なのですが、ざっくり説明すると、親要素にz-indexが指定されている場合、子要素のz-indexは親要素の外には出ません

という事をふまえてティラノの場合です。(※DOM要素をある程度理解してないとわからんかも)
layer_event_click(クリックするとゲーム進行する部分) は z-index:9999
message_inner(メッセージの文字表示部分) は z-index:1001
なので、そのままで message_inner 内の spanz-index:999999 と指定しても、layer_event_click の上にはなりません。

そこで、まず message_innerz-index:auto にします。

次に、message_inner 内の子要素それぞれに z-index:1001 を指定します
.message_inner p span
.message_inner p img (※[graph]タグ)
.img_next (※グリフ画像)
の三点です。
これで文字表示は元に戻ります。

次に、TIP に z-index:10000 を指定します。
.message_inner p span.tip

この方法で、TIPのみを layer_event_click の上に出しています。
こんな説明でわかりますかね?

もし message_inner を利用してキャラ画像表示したい!という場合は、TIPプラグインとは併用できない事になりますので参考まで。message_inner 内に入れた要素に z-index:1001 を指定してください。message_inner の背景に画像指定とかは無理です。

申し訳ありませんが、z-index について詳しくはGoogle先生に解説してもらってください!!
因みに下記サイトさんが分かりやすいかと思います。
CSSでz-indexが効かない時の4つの原因とその対応方法 | コリス

関連記事

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

スポンサーリンク