ティラノスクリプトで差分表示できるCGモードを組んだ。
お久しぶりです。
ブログを設置したものの、特に書くことが無くて放置してました。すみません。
今日はめずらしく記事にしておきたいことがあったので書いておきます。
タイトル通り、CGモードを組んだよっていう内容です。
スクリプトに慣れている人は「今更何言ってんだこいつ」っていう内容だと思うんですが、
私みたいな「ウェブサイトはwixじゃないとムリ。スクリプト?変数?コピペなら何とか……」
っていう初心者さんにはある程度参考になるんじゃないかなーと思います。
拙い部分は初心者の覚書なんだな、ということで目を瞑って頂ければ幸いです。
◆そもそも差分表示出来なかった理由
差分表示できるCGモードだといいなーと常々思っていて、
おそらく変数を使えば何とかなるだろうとは思ってました。
でも組んでみたけどやっぱ無理ぽ……ってなっていた理由が、
「変数をタイトルとかで最初に設置(@eval exp="sf.cg=0")したら
次にプレイしたときリセットされちゃうよね……」
ってずっと思っていたから。
しょ、初心者だからね!
if と undefined を使う っていう発想がないんだよね!
なのでずっとデフォルトで用意してあるCGモードを使っていましたが、
差分がサムネイルで並んでるとなんか滑稽な感じがしちゃう。(あと単純に見にくい)
しかも、自分のゲームのスチル数が予定より膨大な数になっていることに気付き、
「これはあかん」と思って数日、公式リファレンスとティラノスクリプト 製作テクニックwikiさんをにらめっこ。
そしてやっと見つけたページがここ↓
この辺りを読んでいて「使えそうだな」と思ったのは良いんですがいかんせん私はド素人。
「undefinedってなんだ……?」
っていうレベルで。(nullは聞いたことくらいはあったんだけどな……)
何度も言いますが初心者だからね!
温かい目で見守ってください…。
そこからif使えばいいんだー!ということを覚えてやっと組み込めました。
undefinedって未定義って意味なのね。(ググった)
変数について覚えたところで、スクリプトがこんな感じ。(以下参照)
(ここでは2つしか表示されていませんが、
実際はもっとたくさんスチルを用意してます…( ´ᾥ` )うッ)
黒字は解説部分です。
【title.ks】
;◆CGモードのフラグ管理
;wikiに習って、変数の初期設定をします。
;初期設定の記述場所はタイトルでも、別途シナリオファイル(ks)に記述して
;firstでcallしてもいいんだろうけど、私はタイトルの方に書いています。
;この辺はお好みで、とりあえず最初の方に読み込めればいいんだろうな。
;sf.cg1というシステム変数がundefined(未定義)、
;つまり変数が何も入ってないよ!って時のみ、0という変数を入れます。
;もしかしたらundefinedじゃなくて、nullでもいいのかもしれないけど。
;1つ目
[if exp="sf.cg1==undefined"] [eval exp="sf.cg1=0"] [endif]
;2つ目
[if exp="sf.cg2==undefined"] [eval exp="sf.cg2=0"] [endif]
【cg.ks】
*start
@layopt layer=message0 visible=false
@clearfix [hidemenubutton]
[cm]
;CGモードの背景画像表示
[bg storage="cgbg.jpg" time=500]
;-----------------------------------------------------------------------------------------------------
;noimageボタンを押した後ここに帰ってくるようにするのでラベル作成
*cgpage
[cm]
;タイトル画面に戻るボタン
[button graphic="backpage.gif" enterimg="backpage2.gif" target="*backtitle" clickse="cancel3.ogg" x=800 y=20]
;----------------------------------------------------------------------------------------------------- ;◆サムネイルボタン1P目
;ifを使って、sf.cg1が0の時はnoise.jpg画像のサムネイルを表示
;sf.cg1が1の時(スチルを見たことがあるとき)はスチル画像のサムネイルを表示
;(bgフォルダにあるやつを縮小表示してるだけ)
;sf.cg1==0"(スチル見てない)場合は下の*no_imageに飛んで何も出ません。その後*cgpageに飛んで
;もう一度サムネイルを表示させます。(@jump target=*cgpageする前に「まだ取得していません」的な
;コメントを表示させたり、ヒントを出したり、いろいろここで出来そう。)
;何もしない場合、*no_imageは使わず[button graphic="noise.jpg" target=*cgpage~でもいいか。
;CG1 [if exp="sf.cg1==0"] [button graphic="noise.jpg" target=*no_image x=55 y=100 width=190 height=127 folder="bgimage"] [else] [button graphic="cg1a.jpg" storage=cg2.ks target=*cg1 x=55 y=100 width=190 height=127 folder="bgimage"] [endif]
;CG2 [if exp="sf.cg2==0"] [button graphic="noise.jpg" target=*no_image x=275 y=100 width=190 height=127 folder="bgimage"] [else] [button graphic="cg2.jpg" target=*cg2 x=275 y=100 width=190 height=127 folder="bgimage"] [endif]
;----------------------------------------------------------------------------------------------------- ;◆スチルの表示
;差分がある場合、各ボタンを[cm]で消してから背景にスチルを表示、[l]でクリック待ちして次を表示、
;全部終わったら*startに飛ばして最初から・・・っていうのをやる。
;差分が無い場合はスチル表示したらクリック待ちして*startへ。シンプル。
;cgの差分あり
*cg1 [cm] [bg storage="cg1a.jpg" time=500] [l] [bg storage="cg1b.jpg" time=500] [l] @jump target=*start
;cgの差分なし
*cg2 [cm] [bg storage="cg2.jpg" time=500] [l] @jump target=*start
;----------------------------------------------------------------------------------------------------- ;◆タイトル画面へ戻る
*backtitle
;この辺りはデフォルトのまま使いました。
[cm] [freeimage layer=1] [awakegame]
;-----------------------------------------------------------------------------------------------------
;◆スチルがない場合ボタンを押されたらCGモードの最初へ戻る
*no_image @jump target=*cgpage
[s]
【scene1.ks】
;シナリオでスチルが表示されたときの処理です
*start
[bg storage="cg1a.jpg" time="1000" method="fadeIn"]
[wait time=1000]
[bg storage="cg1b.jpg" time="1000" method="fadeIn"] [wait time=1000]
;◆GCスチルフラグ [eval exp="sf.cg1=1"]
;予定通りにsf.cg1というシステム変数に1を代入してスチル見たよ!ってしてやります。
以上です!
見辛かったらすみません。
なんていうか、ifとundefinedの処理さえ知っていればあとは普通に組めたので変数についてもっと勉強しないとな~と思いました。反省。
でもなんとか差分表示CGモードができたので一歩前進です。やったぜ。
本当、wikiさんには足を向けて寝られない……。
引き続き頑張る!( ´ᾥ` )