CSLサイト内検索 help
[←戻る]


画像閲覧モードを作る

はじめに

市販のソフトになると、ゲーム中で見た画像やシーンのみを後から閲覧できる モードがあります。「あるといいなあ」と思ってもこのモードを製作するのは かなり難しく、特にフリーソフト作家さんはあまり作りません。 そこで、ここではNScripterでこのCG閲覧モードを実装する手法を紹介します 下準備
まず、下準備として、*define節に以下を記述します。 global これは、グローバル変数を有効にする命令です。グローバル変数とは、セーブ、 ロード、再起動にかかわらず一定の値を維持し続ける変数です。この命令により 変数201-800番がグローバル変数になります。フラグとしては使えなくなります のでご注意ください。 画像の準備
次に画像の準備です。イベント当で使用する1枚絵はもう出来ていると言う前提 で、サムネイル用の小さな画像を作ります。これは、画像閲覧モードで閲覧可能 な画像を小さく表示するためのものです。 今回はこのファイル名をcg01.jpg(元の1枚絵)→cg01s.jpg(サムネイル)とし ました。 次に、下地となる画像を用意します。これは、CGをまだ見ていない場合、そこに 【画像がありませんよ?】と言う意味の絵を表示するものです。 今回は、640x480ドット内に20枚の絵を表示するための下地を用意しました。 これがcgmode_back.jpgです。 今回のスクリプトはゲーム内では以下のような表示になります。もちろん絵の枚数 、表示位置はスクリプトや背景・サムネイルファイルを入れ替えることで自由に変 えられます。 CGモードのスクリプト
準備が整いました。実際のスクリプトを見ましょう。ちょっと長いですが、後で 順に解説をしていきますので大丈夫です! *cgpage1 ;画面を消去/音楽停止 csp -1 btndef clear stop ;台紙読み込み bg "cgmode_back.jpg",30 ;ここではスプライト化までの作業をしておきます。 ;1段目 if %201=1 lsp 1,":c/2,0,3;cg01s.jpg",0,0 : spbtn 1,1 if %202=1 lsp 2,":c/2,0,3;cg02s.jpg",128,0 : spbtn 2,2 if %203=1 lsp 3,":c/2,0,3;cg03s.jpg",256,0 : spbtn 3,3 if %204=1 lsp 4,":c/2,0,3;cg04s.jpg",384,0 : spbtn 4,4 if %205=1 lsp 5,":c/2,0,3;cg05s.jpg",512,0 : spbtn 5,5 ;2段目 if %206=1 lsp 6,":c/2,0,3;cg06s.jpg",0,96 : spbtn 6,6 if %207=1 lsp 7,":c/2,0,3;cg07s.jpg",128,96 : spbtn 7,7 if %208=1 lsp 8,":c/2,0,3;cg08s.jpg",256,96 : spbtn 8,8 if %209=1 lsp 9,":c/2,0,3;cg09s.jpg",384,96 : spbtn 9,9 if %210=1 lsp 10,":c/2,0,3;cg10s.jpg",512,96 : spbtn 10,10 ;3段目 if %211=1 lsp 11,":c/2,0,3;cg11s.jpg",0,192 : spbtn 11,11 if %212=1 lsp 12,":c/2,0,3;cg12s.jpg",128,192 : spbtn 12,12 if %213=1 lsp 13,":c/2,0,3;cg13s.jpg",256,192 : spbtn 13,13 if %214=1 lsp 14,":c/2,0,3;cg14s.jpg",384,192 : spbtn 14,14 if %215=1 lsp 15,":c/2,0,3;cg15s.jpg",512,192 : spbtn 15,15 ;4段目 if %216=1 lsp 16,":c/2,0,3;cg16s.jpg",0,288 : spbtn 16,16 if %217=1 lsp 17,":c/2,0,3;cg17s.jpg",128,288 : spbtn 17,17 if %218=1 lsp 18,":c/2,0,3;cg18s.jpg",256,288 : spbtn 18,18 if %219=1 lsp 19,":c/2,0,3;cg19s.jpg",384,288 : spbtn 19,19 if %220=1 lsp 20,":c/2,0,3;cg20s.jpg",512,288 : spbtn 20,20 ;機能ボタン ;lsp 21,":c/2,0,3;back.jpg",340,420 : spbtn 21,21 lsp 22,":c/2,0,3;exit.jpg",390,420 : spbtn 22,22 ;lsp 23,":c/2,0,3;next.jpg",540,420 : spbtn 23,23 ;表示 print 1 ;イベントスイッチ用コアループ ;この部分で見れるcgを選択するようにします。基本は音楽モードと同じです *cgpage1loop btnwait %1 if %1=0 goto *cgpage1loop if %1=-1 goto *cgpage1loop if %1=1 goto *cg01 if %1=2 goto *cg02 if %1=3 goto *cg03 if %1=4 goto *cg04 if %1=5 goto *cg05 if %1=6 goto *cg06 if %1=7 goto *cg07 if %1=8 goto *cg08 if %1=9 goto *cg09 if %1=10 goto *cg10 if %1=11 goto *cg11 if %1=12 goto *cg12 if %1=13 goto *cg13 if %1=14 goto *cg14 if %1=15 goto *cg15 if %1=16 goto *cg16 if %1=17 goto *cg17 if %1=18 goto *cg18 if %1=19 goto *cg19 if %1=20 goto *cg20 ; if %1=21 goto *cgpage1loop if %1=22 goto *special if %1=23 goto *cgpage2 goto *cgpage1loop ;各cg表示部分の設定 ;//1−10// *cg01 gosub *clear textoff bg "cg01.jpg",30 systemcall windowerase goto *cgpage1 *cg02 gosub *clear textoff bg "cg02.jpg",30 systemcall windowerase goto *cgpage1 *cg03 gosub *clear textoff bg "cg03.jpg",30 systemcall windowerase goto *cgpage1 *cg04 gosub *clear textoff bg "cg04.jpg",30 systemcall windowerase goto *cgpage1 *cg05 gosub *clear textoff bg "cg05.jpg",30 systemcall windowerase goto *cgpage1 *cg06 gosub *clear textoff bg "cg06.jpg",30 systemcall windowerase goto *cgpage1 *cg07 gosub *clear textoff bg "cg07.jpg",30 systemcall windowerase goto *cgpage1 *cg08 gosub *clear textoff bg "cg08.jpg",30 systemcall windowerase goto *cgpage1 *cg09 gosub *clear textoff bg "cg09.jpg",30 systemcall windowerase goto *cgpage1 *cg10 gosub *clear textoff bg "cg10.jpg",30 systemcall windowerase goto *cgpage1 ;//11−20// *cg11 gosub *clear textoff bg "cg11.jpg",30 systemcall windowerase goto *cgpage1 *cg12 gosub *clear textoff bg "cg12.jpg",30 systemcall windowerase goto *cgpage1 *cg13 gosub *clear textoff bg "cg13.jpg",30 systemcall windowerase goto *cgpage1 *cg14 gosub *clear textoff bg "cg14.jpg",30 systemcall windowerase goto *cgpage1 *cg15 gosub *clear textoff bg "cg15.jpg",30 systemcall windowerase goto *cgpage1 *cg16 gosub *clear textoff bg "cg16.jpg",30 systemcall windowerase goto *cgpage1 *cg17 gosub *clear textoff bg "cg17.jpg",30 systemcall windowerase goto *cgpage1 *cg18 gosub *clear textoff bg "cg18.jpg",30 systemcall windowerase goto *cgpage1 *cg19 gosub *clear textoff bg "cg19.jpg",30 systemcall windowerase goto *cgpage1 *cg20 gosub *clear textoff bg "cg20.jpg",30 systemcall windowerase goto *cgpage1 ======================================= スクリプト解説!
・下準備 csp -1 btndef clear stop ;台紙読み込み bg "cgmode_back.jpg",30 画面を消去し、CGモードを作る準備をします。 その後、あらかじめ製作した台紙を読み込みます。 ・CGを見たかを判定 if %201=1 lsp 1,":c/2,0,3;cg01s.jpg",0,0 : spbtn 1,1              ・・・・・・・・・・・・ CGを見た場合、対応する変数に1を入れます。例えば1枚目の変数を見たときに、 mov %201,1のように記述しておけば、1枚目のCGを見たことになります。 すると、上記の部分で%201=1であればサムネイルcg01s.jpgが表示されるわけで す。これをCGの枚数分繰り返します。表示は『瞬時表示(エフェクト1番)』に します。 ・サムネイルボタンが押された時の処置 *cgpage1loop btnwait %1 if %1=0 goto *cgpage1loop if %1=-1 goto *cgpage1loop if %1=1 goto *cg01           ・・・・・・・・・ 最初の2行はサムネイル部分以外を押した時の処理です。当然何もおきなくて良いの で最初(*cgpage1loop)へ戻します。btnwait %1はボタンを押された時の反応 を示す命令です。例えばspbtn 1,1のようにボタンに1番と言う数字を割り振 れば、そのボタンが押されると変数%1に1が代入されます。そして、それに対応して 、if %1=1 goto *cg01のように、%1に1が代入されたら*cg01に移動せよと 言う命令が続きます。ラベル*cg01はもちろん、cg01.jpgを表示するための命令が記 述されます。 ・画像を表示する *cg01 gosub *clear textoff bg "cg01.jpg",30 systemcall windowerase goto *cgpage1 画像を表示します。但し、このままでは画面上のボタン・テキストが残ってしまう のでsystemcall windoweraseとして一時的にボタンを消しましょう。 以上です。工夫次第で様々な閲覧モードが製作可能です。