空想曲線

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

名前とセリフを表示するときのあれこれ  

|Д・)ノ < やぁ、久しぶり

やっとブログを書く時間が取れたので、吉里吉里/KAG ちょいネタ12回目 。
今回はこちら↓
name_sample01
※背景写真は吉里吉里の紹介サンプルに入っているものを使用しています
※よく見たら「ん」が抜けてるけど気にしない

ADVゲームといえば、こーんなウィンドウや……

name_sample04

こういったタイプのウィンドウがほとんどだと思います。
このスクリプトをほんの少しラクに書けるよう弄ってみましょう。

画面サイズやメッセージレイヤのマージンは初期設定のままです。
フォントサイズだけ 22 ptに変更してあります。

※2013/02/06 スクリプトミス修正



1.マクロをつくる


似たような処理は全部マクロにすりゃあいいんだよ。

■台詞用マクロ(名前と台詞を同じレイヤで表示するとき)

*macro
[ macro name=台詞 ]
; 台詞部分のメッセージレイヤを設定する
[ position layer=message0 color=0x000000 top=310 left=20 height=150 width=600 opacity=200 ]

; 名前表示はウェイトなし
[ nowait ]

; 発言者がかぐ子のとき
[ if exp="mp.name == 'かぐ子'" ]
[ font color=0xFF00FF ]

【かぐ子】
[ endif ]

; 発言者がきり太のとき
[ if exp="mp.name == 'きり太'" ]
[ font color=0xFF8000 ]

【きり太】
[ endif ]

; フォントカラーを戻す
[ font color=default ]
; メッセージのスピードを戻す
[ delay speed=user ][ r ]
[ endmacro ]

もし、主人公の名前を任意で変更できるようにしている場合は、
【かぐ子】の部分を[ emb exp="f.hoge" ]のように書き直してください。

■地の文だけを表示するマクロ(フレームとフォントカラーも変更)
[ macro name=テキストはじめ ]
; メッセージレイヤ1を不可視にする
[ position layer=message1 visible=false ]
; 地の文用のメッセージレイヤを設定する
[ position layer=message0 color=0x0000A0 top=310 left=20 height=150 width=600 opacity=200 ]
[ font color=0xFFFF00 ]
[ endmacro ]


■テキスト終了用マクロ
[ macro name=テキストおわり ]
; フォントカラーを元に戻して
[ font color=default ]
; 改ページ待ち
[ p ]
[ endmacro ]

どこでもセーブプラグインを使用している場合は
ここのマクロにタグを入れ込んでしまって構わないと思います。

■ネームプレート用マクロ(名前と台詞でレイヤを分ける場合)
[ macro name=ネームプレート ]
; 名前表示用のメッセージレイヤを設定する
[ position layer=message1 color=0x000000 top=260 left=20 width=200 height=40 opacity=200
visible=true margint=4 ]

; カレントをメッセージレイヤ1にする
[ current layer=message1 ]
[ endmacro ]

このマクロは直接使用せずに、マクロ「名前」に渡します。

■名前の部分を表示するマクロ
[ macro name=名前 ]
; マクロ「ネームプレート」の中身を渡す
[ ネームプレート ]
[ nowait ]


; 発言者が「かぐ子」のとき
[ if exp="mp.name == 'かぐ子'" ]
[ font color=0xFF00FF ]

【かぐ子】
[ endif ]

; 発言者が「きり太」のとき
[ if exp="mp.name == 'きり太'" ]
[ font color=0xFF8000 ]

【きり太】
[ endif ]

; メッセージスピードを戻す
[ delay speed=user ]
; 台詞部分のメッセージレイヤを設定
[ position layer=message0 color=0x000000 top=310 left=20 height=150 width=600 opacity=200 ]
; カレントをメッセージレイヤ0にする
[ current layer=message0 ]
; フォントカラーをデフォルトに
[ font color=default ]
[ endmacro ]


; 別シナリオからコールさせるので、最後に戻します。
[ return ]

マクロはここまで(・ω・)ノ



2.実際につくってみる


では、一気にスクリプトを打ち込んでいきます。

■準備

*001|準備しよう
[ cm ]
; マクロを呼ぶ
[ call target=*macro ]
; 背景を表示
[ image storage="_24_3.jpg" layer=base ]


■スクリプト打つよ(名前と台詞を同じレイヤに表示する場合)
*test|名前表示パターン1
[ cm ]
; 発言者は「かぐ子」
[ 台詞 name=かぐ子 ]
 べ、べつにアンタのことなんて何とも[ r ]
 思ってないだからね! 勘違いしないでよね![ r ]
 ホントにこれっぽっちも思ってないんだからね![ p ]
[ cm ]

; 発言者は「きり太」
[ 台詞 name=きり太 ]
 ふざけるな! この×××があぁぁぁぁぁっ![ r ]
 ツンデレが通用するのは二次元だけだ![ p ]

会話の内容はノリだけで書きました。特に反省はしません。
ちなみに、きり太が発言した場合はこんなカンジになります。
name_sample02
マクロ「台詞」の属性「name」を「きり太」にすると名前の部分がオレンジ色になります。

■スクリプト打つよ(名前と台詞を別のレイヤに表示する場合)
*test2|名前表示パターン2
[ cm ]
; 発言者は「かぐ子」
[ 名前 name=かぐ子 ]
 ふえぇ……こわいよぅ。[ p ]

画面ではこうなります。
名前の部分がメッセージレイヤ1、台詞の部分はメッセージレイヤ0に表示されています。
name_sample04

■スクリプト打つよ(地の文を表示する場合)
*test3
[ cm ]
; 地の文を表示したいとき用
[ テキストはじめ ]
地の文と台詞でメッセージフレームを変えたいときは[ r ]
別途、マクロを作っておくと便利です。
[ テキストおわり ]

ちなみに地の文はこのように表示されるよう設定しています。
name_sample03

「テキストはじめ」のマクロで、メッセージレイヤ1を不可視にしていたのは、
名前と台詞を別レイヤで表示したときのことを考慮しています。

こうしておかないと、地の文を表示しているときに
名前用に作ったメッセージレイヤ1が画面に残ったままになります。
予めマクロ側で制御しておけば、そういったミスがなくなります。

また、名前についても

やっぱり名前を変えたくなった(´ε`;)< やっぱ「かぐ子」より「かぐ実」かなぁ
フォントカラーを変えたくなった(´ε`;)< きり太のフォントは青がいいなぁ

そんなとき、シナリオファイル全てに検索をかけて置換するよりも
マクロを一行修正する方が遥かに効率がいいですし、
修正漏れによる誤字・脱字の防止にもなります。

【今回の結論】
マクロを上手く使えばラクできるよ!


関連記事

Posted on 2012/03/18 Sun 

category: 吉里吉里/KAG 小ネタ

tb: 0   cm: 0

コメント

コメントの投稿

Secret

トラックバック

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

現在のページ

Category

Link

Comment

Mailform

Author

Twitter