空想曲線

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

吉里吉里/KAG:ネームウィンドウプラグインを使ってみる  

2012-07-29
2017-06-16
cm0
tb0

色々な墓場さんで配布されているネームウィンドウプラグインを使ってみました。
ネームウィンドウプラグインスクリーンショット

■ここが便利
・表示させたいレイヤの切り替えがカンタン
・[cm][ct]を使ってもネームウィンドウは消えずに残るので、
 セリフがページをまたぐときも気にしなくていい

■注意点
・履歴画面を見ると、名前とセリフが一行でつながっているので
 気になる人は名前部分の履歴を出さないようにするか、履歴を改行する

これすごく便利だー(´∀`*)
ということで、プラグインの導入から基本的な使い方までご紹介します。



1.プラグインをダウンロードする


NameWindowPlugin_ks.txt TJSFunction_ks.txt を DL します。
一緒に NameWindowPlugin.txt(リファレンス)も DL しましょう。



2.ファイルをリネームする


このままだと使えないので、NameWindowPlugin_ks.txtを NameWindowPlugin.ks にリネームします。
保存しようとすると「拡張子がなんたら~」と警告が出ますがムシしてOKをクリック。
TJSFunction_ks.txt も同様に TJSFunction.ks と直しておきましょう。



3.プロジェクトフォルダに入れる


好きなフォルダに突っ込みます(私は others フォルダに入れてます)



4.プラグインを読み込む


[ call storage="NameWindowPlugin.ks" ]

first.ks のなるべく最初にプラグインを読み込みます。
( startanchor タグを使っている場合は、それよりも前で呼びましょう)
TJSFunction.ks は NameWindowPlugin.ks 内で呼び出しているので書かなくて大丈夫です。



5.プラグインの初期化


[ namewin_init layer=message1 ]

プラグインを使用する前に書きます。レイヤ指定は必須なので忘れないよう。
ネームウィンドウに使用できるのはメッセージレイヤのみです。



6.ネームウィンドウの設定


[ namewin_position frame="plate" left=100 top=100 width=200 height=50 
marginl=0 marginr=0 margint=8 marginb=0 visible ]

KAGの position タグに相当します。属性もすべて使用できます。
ここでは例として plate.png(200x50px) のフレーム用画像を読み込ませています。
もちろん画像がなくても問題ありません。

[ namewin_style align=center ]
style タグに相当。属性もすべて使用できます。

[ namewin_font size=24 color="0xffff00" ]
font タグに相当。以下略。



7.名前を表示させる


[ namewin_text text=きりこ ]

textの中身がネームウィンドウに表示される文字列です。namewin_position で設定した width を超える文字を入れると改ページ待ちの三角が出てしまうので一行に収まるようにしましょう。
[ namewin_text text="&f.p_name" ]のように書けば、名前に変数を使用できます。


また、デフォルトではネームウィンドウが100ミリ秒でトランジションして表示されます。
必要ない場合は[ namewin_text text=きりこ page=fore ]と記述しましょう。
もっと細かい設定はリファレンスを参照してください。



8.ネームウィンドウのクリア


[ namewin_clear ]

表示されている text のみクリアされます。フレーム画像は消えません
フレーム画像ごと消したいときは[ namewin_position visible=false ]で不可視にするか
[ namewin_uninit ]でプラグインを無効化(次項)しましょう。



9.プラグインの無効化


[namewin_uninit]

ネームウィンドウプラグインを無効化します。
再度使用するときは[ namewin_init ]を書き忘れないようにしましょう。



10.マクロを作ってみる


*macro
;センスのないマクロ名
[ macro name="かぐこ" ]
;ネームウィンドウに使用するメッセージレイヤの設定
[ namewin_position frame="plate" left=100 top=100 width=200 height=50
marginl=0 marginr=0 margint=8 marginb=0 visible ]
[ namewin_style align=center ]
[ namewin_font size=24 color="0xffff00" ]
[ namewin_text text="かぐこ" page=fore ]

;名前とテキスト部分を分けるため履歴のみ改行しておく
[ hr ]
[ endmacro ]


*使ってみる
;初期化、ネームウィンドウに使うのはメッセージレイヤ1
[ namewin_init layer=massage1 ]

;作ったマクロ投入
[ かぐこ ]
やっほー、かぐこだよー☆[ p ][ cm ]



11.キャラごとに文字色を変えるバージョンも作ってみる


*macro
;かぐこのときは文字色を0xffff00にする
[ macro name=kaguko ]
[ namewin_font size=24 color="0xffff00" ]
[ namewin_text text="かぐこ" page=fore ]
[ endmacro ]


;きりたのときは文字色を0xff00ffにする
[ macro name=kitira ]
[ namewin_font size=24 color="0xff00ff" ]
[ namewin_text text="きりた" page=fore ]
[ endmacro ]


;ネームウィンドウ表示マクロ
[ macro name=名前 ]
[ namewin_position frame="plate" left=100 top=100 width=200 height=50
marginl=0 marginr=0 margint=8 marginb=0 visible ]
[ namewin_style align=center ]

;かぐこのとき、マクロ[ kaguko ]を渡す
[ if exp="mp.kaguko" ][ kaguko ][ endif ]
;きりたのとき、マクロ[ kirita ]を渡す
[ if exp="mp.kirita" ][ kirita ][ endif ]
[ hr ]
[ endmacro ]


*hoge
[ cm ]

[ namewin_init layer=massage1 ]

[ 名前 kaguko ]
かぐこのセリフ。[ p ][ cm ]

かぐこのセリフその2。[ r ]
[ cm ]タグを使ってもネームウィンドウと名前は残る。[ r ]
ここが非常にありがたいところ。[ p ][ cm ]

[ 名前 kirita ]
きりたのセリフ。[ p ][ cm ]

[ namewin_position visible=false ]
ネームウィンドウを消してみる。[ r ]
地の文を書くときはこうするといいかもしれない。[ p ][ cm ]

[ 名前 kaguko ]
で、もっかいウィンドウを出す。
マクロ内で[ namewin_position visible=true ]になってるから
こっちで指定し直す必要はない。[ p ][ cm ]

もっといい書き方があると思うので、あれこれ試してみてください。



おまけ:メッセージレイヤのフレーム画像に関する注意点


フレーム画像に透過画像を使用しているのにちゃんと表示されなくて困っている方へ。
Config.tjs の473行目にある layertype を ltAddAlpha から ltAlpha に変更するか、
画像フォーマットコンバーターを使って ltAddAlpha 形式で出力しましょう。
読み込み速度に差があるようですが、それほど気にならないので好きな方を選べばいいと思います。

■画像フォーマットコンバーターはどこですか■
 kirikiri2 > tools > krkrtpc.exe ←ここだよ、ここ!

最初これに気づかなくて焦ったのはいい思い出(´ε`)


「黒後家蜘蛛の会贋作集」ふたたび  

2012-07-24
-0001-11-30
cm2
tb0

「黒後家蜘蛛の会贋作集」をプレイしたのは今からおよそ二年前のこと。
ミステリ好きと言ってるクセに黒後家蜘蛛の会を知らなかった不勉強者の私にとって

これは原作を読まねば!

と思わせてくれたステキな作品です。
実際、原作を読んでおくと随所に込められた小ネタに頬が緩みます。

そんな黒後家蜘蛛の会贋作集、第二弾を企画中だそうで、めっちゃ楽しみです(´∀`*)
現在、メンバー(シナリオ・グラフィック・BGM・スクリプト・その他)を募集されているので
「黒後家蜘蛛の会が好きだ!」という方は、ぜひ参加なさってみてはいかがでしょうか。


▼黒後家蜘蛛の会贋作集公式サイトはこちら。一作目と二作目のサンプル(第一版)がDLできます。
黒後家蜘蛛の会贋作集バナー
黒後家蜘蛛の会贋作集


▼原作が読みたくなったら

黒後家蜘蛛の会 1 (創元推理文庫 167-1)黒後家蜘蛛の会 1 (創元推理文庫 167-1)
(1976/12/24)
アイザック・アシモフ

商品詳細を見る

ちなみに私はヘンリーが好きです(´∀`*)最強の安楽椅子探偵にして最高の給仕。
あんなお父さんがいたら毎週デートに連れ出したい。ああ、連れ出したい。


吉里吉里/KAG:文字だって演出してほしい  

2012-07-22
2017-06-16
cm2
tb0

吉里吉里/KAGちょいネタシリーズ。書いたのアップし忘れてた。

今回はテキスト表示にまつわる小ネタをお送りします。
あまり専門的なことは書いてないので、たらんと読み流して貰えればOKです。

では、れっつごーε≡≡ヘ( ´Д`)ノ



▼続きを読む▼

吉里吉里/KAG:絶対に勝てない数取りゲーム  

2012-07-16
2017-06-16
cm0
tb0

更新ストップって言ったクセに戻ってくる。それが私だヽ(・∀・ )ノキャッホイ
というか、作業が行き詰まったので息抜きにきました。

今回のお題は「絶対に勝てない数取りゲーム」です。

元ネタは癸生川の「海楼館殺人事件」の冒頭でイクルミさんと伊綱ちゃんが遊ぶやつ。
お互いに1~6までの数字を足して50を言ったほうが負けなゲームです。
伊綱ちゃんのセリフは作中のものを拝借しました。

ゲームとしては成立しないスクリプトですので、使えそうな部分(@つき文字列即値の書き方とか、選択肢をループで表示させるとか、へぼい関数の作り方とか)だけでも持って行ってください。


では、れっつごーε≡≡ヘ( ´Д`)ノ



*001|準備
[cm]
それじゃあさっそく始めましょうか。[r]
では、お先にどうぞ。[p]

;カウント・数字用の変数リセット
;tf.count :いま何回目か
;tf.select :イクルミさんが選んだ数字
;tf.izuna :伊綱ちゃんが選んだ数字
;tf.sum1 :イクルミさんが選んだあとの合計
ltf.sum2 :伊綱ちゃんが選んだあとの合計


[eval exp="tf.count = tf.select = tf.izuna = tf.sum1 = tf.sum2 = 0"]

;練習用にむりやり関数を作る
[iscript]

function ans(pat){
  if(pat == 0){
   tf.izuna = 7 - tf.select;
   return tf.izuna;}

  else if(pat == 1){
   tf.sum1 = 7 * (tf.count-1) + tf.select;
   return tf.sum1;}

  else if(pat == 2){
   tf.sum2 = 7 * tf.count;
   return tf.sum2;}
}

[endscript]


;パターンの内訳
;pat=0 : 伊綱ちゃんが選ぶ数字
;pat=1 : イクルミさんが選んだあとの合計
;pat=2 : 伊綱ちゃんが選んだあとの合計


*002|数字選択
[cm]
[nowait][style align=center][locate y=150]


;数字を並べるときのチェック用変数
[eval exp=tf.numck = 1]

*loop
;1~6までの数字を並べる。全部並べるまで*loopの中身をくりかえす
;tf.selectには選んだ数字が入る
;kag.current.lastLinkだと1少ないので辻褄合わせで+1しておく

[link target=*003 exp="tf.count++, tf.select=kag.current.lastLink + 1"]
[emb exp="tf.numck"][endlink][r]
[jump target=*loop cond="++tf.numck < 7"]
[resetstyle][s]


*003|1~6回目のメッセージ
[cm]

;@つき文字列即値を使う練習。これだけ使えば忘れまい(`∀´)
;改行してるけど実際の記述は一行

;1回目

[if exp="tf.count == 1"]
[emb exp=@"${tf.select}ですか……。\n
じゃあ私は${ans(0)}。合計は${ans(2)}ですね"]


;2回目
[elsif exp="tf.count == 2"]
[emb exp=@"${tf.select}で合計${ans(1)}ですね。\n
私は……${ans(0)}にします。これで合計${ans(2)}です。"]


;3回目
[elsif exp="tf.count == 3"]
[emb exp=@"はい、${tf.select}を足して${ans(1)}ですね。\n
では……私は${ans(0)}で、合計${ans(2)}になりました。"]


;4回目
[elsif exp="tf.count == 4"]
[emb exp=@"${tf.select}……だと、合計で${ans(1)}ですか。
\nでは、それに${ans(0)}を足して${ans(2)}です。"]


;5回目
[elsif exp="tf.count == 5"]
[emb exp=@"ということは${ans(1)}か……。\n
それじゃ私は${ans(0)}を足して${ans(2)}にします。"]


;6回目
[elsif exp="tf.count == 6"]
[emb exp=@"${tf.select}だと……${ans(1)}かな。
\n私は${ans(0)}にします。これで${ans(2)}ですね。"]


;7回目は*004にジャンプ
[else]
[jump target=*004]
[endif]


;1~6回目は*002に戻す
[p]
[jump target=*002]


*004|7回目
[cm]
[emb exp=@"${tf.select}でいいんですね?\n
じゃあ合計${ans(1)}なので、私が${ans(0)}を足して……"][p][r]
[emb exp=@"はいっ、合計${ans(2)}です。私の勝ちですね♪"][s]

【タネ明かし】

伊綱ちゃんは合計が7の倍数になるように数字を選んでいます。
イクルミさんが5を選べば2を選び、3を選べば4を取るといった具合。
そんなこんなで進めていけば最終的に伊綱ちゃんが49を取り、イクルミさんは50を取らされます。
つまり、イクルミさんはどんだけ頑張っても勝てません


絶対に勝てないゲームスクショ1

▲逆ギレする青年


絶対に勝てないゲームスクショ2

▲返り討ち


あー楽しかった(´∀`*)
ということで今回はこれにて終了。ではまた来月。


Author

Recent

Category

Link

Comment

Mailform

Twitter