今回はいつかちゃんと説明したいと書いておきながら、

すっかり忘れていたウエイトについてです。


Waitとは、改めて英和で調べてみると、“待つ”ことらしいです。

つまり、間を演出するための命令というところでしょうか。


マニュアルでは

システム系命令→動作制御→タイマー(v3ではウエイト)あたりになります。



ウエイトの中で基本的でよく使われると思われるのが


&Wait = 待つ時間(100/1秒);


でしょう。


これは、音を鳴らすときに間隔を開けたいときや

次のシーンに飛ぶときなどで間が欲しいときなどに

使います。


たとえば、同じベルの音を3回鳴らしたいとします。


音を鳴らすときは私はだいたい

&EzSND = 効果音のファイル名;のような

かんたん命令を使っているのですが、

今回は同じ音を使っているので標準命令のほうを使います。


サウンド~効果音と環境音 でもやった


&SND.Load = 効果音のファイル名;


&SND.Play;


この2つの命令ですね。


これを使って、同じ音を鳴らす命令を三つ並べてみました。


#音声ファイルを効果音としてメモリに読み込む
&SND.Load = BellA@16.wav ;

#効果音をショット再生する
&SND.Play;
&SND.Play;
&SND.Play;


しかし、実際に試してみると、

これでは音が1回しかなりません。


そこで、間に2秒のウエイトを入れてみます。

&SND.Load = BellA@16.wav ;

&SND.Play;
&Wait = 200;

&SND.Play;
&Wait = 200;

&SND.Play;
&Wait = 200;



3回鈴の音が聞こえるようになったと思います。
(私の環境だと時々なぜか2回しか音が

聞こえなかったりするんですが(汗))

ちなみに、v3からは


&Wait.SND;

という“効果音の再生が停止するまで待つ”

新しい命令がありますので、

これを&Wait = 待つ時間;の代わりに
入れてもOKです。


この命令は、

音が鳴り終わってから次の音が再生してくれるので

音が重ならないようにしたいときには便利です。

前回は、 $任意の変数名$を文章中に入れることによって
ダイアログに入力された文字を表示させたわけですが、
FWは、setting.txtに設定を追加することによって、
文章中に書かれた主人公のデフォルトの苗字と名前を
任意のものに変えることができます。

_$yobina$さん、はじめまして。

つまり、↑のように書いてたものを

すずめさん、はじめまして。

と書いても同じ結果が得られるようになるわけです。


まずは、setting.txtから。
(マニュアルでは、v2・v3共、
特殊命令→setting.txt→プレーヤー情報のあたりです)

# 省略時設定の苗字
*Player.DefaultLastName = デフォルトのプレイヤーの苗字;

#省略時設定の名前
*Player.DefaultFirstName = デフォルトのプレイヤーの名前;

↑のような2つの命令をsetting.txtに書き入れます。

*Player.DefaultLastName = 畑野 ;

*Player.DefaultFirstName = すずめ ;


Famous Writerホームページ ライブラリ
名前入力のサンプルがありますので、
今回はこれを参考に進めていきます。

名前を入力してもらう場面のところで

$任意の文字変数名A = *Player.LastName;

$任意の文字変数名B = *Player.FirstName;

まず上の二つの命令を書き込みます。

*Player.LastName *Player.FirstName には
setting.txtで設定した *Player.DefaultLastName
*Player.DefaultFirstName の苗字と名前が
自動的に入ってますので、
文字変数Aには、デフォルトのプレイヤーの苗字
文字変数Bには、デフォルトのプレイヤーの名前
代入されていることになります。

次に名前を変える~ダイアログに入力する
やったように入力ダイアログを表示させ、

&Dialog = 入力欄の上に表示される文章,制限文字数,任意の文字変数名A;

とし、続いて↓のように入力内容を変数に代入します。

$任意の文字変数名C = &Dialog;

つまり、この段階では文字変数Cに
ダイアログで入力された名前が
入っていることになるわけですね。

ダイアログで何も入力されていない場合には

?$任意の文字変数名C = :&Jmp = @ダイアログを表示させる前のアンカーポイント;

こうして、名前入力の最初の場面に自動的に
飛ばすようにします。

文字が入力された場合は先に進み、
↓のように文字変数Cを文字変数Aに格納します。

$任意の文字変数名A = $任意の文字変数名C;


ダイアログで入力された名前が格納された文字変数Aを
デフォルトの名前と自動置換させるために

*PlayerLastName = 任意の変数名A;

とします。


こんな説明じゃちっとも分からないぞという方は、
(実は私もよく分かっていないあせる
とりあえず、サンプルをそのまま丸写しというのも有りかと。

ちなみにソースは下記の通りです。
今回はライブラリのをほとんど丸写ししてます。

@top

$lastname = *PlayerLastName;
$firstname = *PlayerFirstName;

#---------------------------------------
#  苗字の入力
#---------------------------------------

@lastname

#入力ダイアログ表示
&Dialog = 苗字を入力してください。,8,$lastname;

#入力内容を変数に代入
$dialog = &dialog;

#何も入力されてない場合は再トライ
?$dialog = :&Jmp = @lastname;

#変数に格納
$lastname = $dialog;

#---------------------------------------
#  名前の入力
#---------------------------------------

@firstname

#入力ダイアログ表示
&Dialog = 名前を入力してください。,8,$firstname;

#入力内容を変数に代入
$dialog = &dialog;

#何も入力されてない場合は再トライ
?$dialog = :&Jmp = @firstname;

#変数に格納
$firstname = $dialog;

#---------------------------------------
#  確認
#---------------------------------------

@check

#確認
お名前は「$lastname$ $firstname$」でよろしいですか?

&select = ●はい:,●いいえ:&Jmp = @top;

#自動置換用に記憶する
*PlayerLastName = $lastname;
*PlayerFirstName = $firstname;

#任意のジャンプ先
&Jmp = @honpen;

@honpen

【???】「畑野さん、すずめさん、どこへ行くんですか?ちょっと待ってください」


画面71 画面72

なんか今回のは前回に比べてややこしい気もしますが、
本文のなかで主人公の名前をいちいち変数名で
書かなくていいというのはやはり便利ですので、
ぜひ挑戦してみてください。

まだ全然自信がないんですが、

やはりゲームなら、名前を変えられるようにしてみたいよね。


というわけで、マニュアルやライブラリ等と睨めっこしながら、

そろそろとやっていきます。

(そろそろなので、今回は少しずつです汗



まず、入力ダイアログを表示させます。

&Dialog=入力欄の上に表示される文章,制限文字数(半角換算、0は無制限),デフォルトの文字;



次に入力内容を変数に代入します。


$任意の変数名=&Dialog;

マニュアルによると$は文字型変数らしいです。



$
任意の変数名$

後は、↑こんな感じのを名前の代わりに文章中に入れるわけです。


では、実際にやってみましょう。


入力ダイアログを表示させます。


&Dialog=なんと呼ばれたいですか?,10,すずめ;


ダイアログに好きな名前を入力します。


$yobina=&Dialog;


_$yobina$さん、はじめまして。




画面69


でてきたダイアログには、

すずめというデフォルトの名前が表示されています。


これを消して、つばめという名前を新たにダイアログに入れます。


画面70


$yobina$が、ダイアログに入れた名前に変わりました。

世間ではどこまで需要があるかは分からない

でも、私にとってはツールを選ぶ第一条件だった

今回は縦書きについてです。


FWは縦書き表示ができます。

しかも、シーンに応じて縦書きと横書きを簡単に切り替えられます。

縦書き表示させるために

全部システムカスタマイズをしなければならない

なんてこともありません。

前置きがいつもより長くなりましたが、

やることは簡単です。


*Text.Direction = 文字の流れる方向(横書きは0、縦書きは1);


これを縦書きにしたい文章の前に入れるだけ。


*Text.Direction = 1;


本来は、setting.txt用の命令なので

setting.txtに入れるべきなんでしょうが、

タイトル画面は横書きなんてこともあると思うので、

本編のほうに入れたほうがいいかなと個人的には思ってます。



後、下ウインドウ表示の場合は、

テキストウインドウを縦書き用することも

忘れないで下さいね。


画面67


↑こんなことになってしまうので。


画面68

↑って、ポテトもご一緒にじゃないんだから(笑。


一応、このキャプチャをとるために書いたソースも

↓にUPしておきますね。


#左上の座標x,y,領域の幅,領域の高さ
*EzMes = 20,320,600,140;
#色,透過度(0:非透過~100:透過)
*EzMesColor = 000000, 50;
#ボーダーの色,太さ
*EzMesBorder = 66cccc, 2;

*MesBody.New;


縦書きにしてみます。


*Text.Direction=1;


横書き用のテキストウインドウに表示させるとこんな感じになってしまいます。
なので、テキストウインドウも縦書き用のに変えてみましょう。

#左上の座標x,y,領域の幅,領域の高さ
*EzMes=20,20,140,440;

*MesBody.New;


こんな感じです。_
/和風もののゲームにいかがでしょうか?



もう一つ、注意しなければならないのは、

セーブとロード画面です。

セーブとロード画面も縦書きで作ってあるなら問題ないですが、

横書きの場合、そのままだと↓のように表示が崩れてしまいます。


画面69


なので、本文には縦書きが入っているけど、

セーブ・ロード画面は横書きという場合には、

セーブとロードのファイルの最初のほうに


*Text.Direction = 0;


を入れてください。


最近のこのブログの悩みはカテゴリー分けです。


テーマのほうはともかく、

INDEXに追加するとき、どこに入れたらいいんだろうと

悩んだ事がすでに何回か。


選択肢に音をつける は、やっぱり選択肢よね。

でも、基本ではないから詳細?


でも、同じような命令のボタン画像に音をつける

どうしよう?


選択肢といえば選択肢なんだけど、

主に使うのはタイトル画面のような気がするし……。

ボタン画像自体独立させるべきだった?


と、このようにぐちゃくちゃ悩んだ結果が

あのINDEXなんですが、

どうなんでしょう?

やはり、最初から順番に試していけるように

もってったほうがいいですよね。


中にはカテゴリー分けの都合上、

順番が逆になってしまっているのがあるので、

前回の何々と書いてあるのに後ろに来たりしているのが

非常に気になっています。

今回は、前回の選択肢に音をつける の命令と
よく似た“ボタン画像に音をつける”をやってみます。

まずボタン画像にマウスポイントが乗った時に鳴らす音

&B.Over.SND= 効果音のファイル名;

次に選択後に鳴らす音

&B.Push.SND = 効果音のファイル名;

これを今度は、ボタン画像のメニュー でやった例に
鳴らす音を設定します。

&LdSelectButton= 80, 310, s : &Jmp = @hajime;
&B.Over.SND= 01.wav;
&B.Push.SND =
02.wav;

&LdSelectButton= 80, 345, l : &Jmp = @tuzuki
;
&B.Over.SND= 01.wav;
&B.Push.SND =
02.wav;

&LdSelectButton= 80, 380, o : &Jmp = @system
;
&B.Over.SND= 01.wav;
&B.Push.SND =
02.wav;

&LdSelectButton= 80, 415, e : &Jmp = @end;
&B.Over.SND= 01.wav;
&B.Push.SND =
02.wav;

# ボタン画像を表示
&SelectButton = 611;


と、このように、“SelectLine”と“B”の命令の表記の違いだけで、

選択肢のときと使い方はほとんど同じです。

基本の選択肢は、

ただジャンプさせるためだけのものでしたが、

好感度を上下させたり、フラグによって出る選択肢が変わる

なんてものを作りたい場合もあると思います。


そういう詳細を付け加えるための選択肢は、

基本のとはちょっと違って


&SelectLine.Set = 選択肢1: &Jmp = 選択肢1の分岐先;


こんな感じで選択肢を並べた後、


&SelectMes;


(v3では、&SelectLine.Draw; )で一度に表示させます。


書き方的にはボタン画像を使ったものに

近いかもしれません。


これに好感度なり条件文なりを付けるわけなんですが、

未だによく分からずに変数を使っている身では

説明はまだ無理なので、

今回は選択肢に音をつけてみます。


マウスポイントが乗った時に鳴らす音


&SelectLine.Over.SND = 効果音のファイル名;


選択後に鳴らす音


&SelectLine.Push.SND = 効果音のファイル名;


例として、基本の選択肢でメニューを表示

作ったメニューに音をつけてみました。


&SelectLine=始めから: &Jmp=@hajime ;
&SelectLine.Over.SND =
01.wav;
&SelectLine.Push.SND =
02.wav;


&SelectLine=続きから:&Jmp=@tuzuki;
&SelectLine.Over.SND = 01.wav;
&SelectLine.Push.SND =
02.wav;


&SelectLine=環境設定: &Jmp=@system ;
&SelectLine.Over.SND = 01.wav;
&SelectLine.Push.SND =
02.wav;


&SelectLine=終わる:&Jmp = @end;
&SelectLine.Over.SND = 01.wav;
&SelectLine.Push.SND =
02.wav;


&SelectMes;


↑こんなふうに全部の選択肢に同じ音を割り当てる場合でも

各選択肢ごとに設定してください。

現在の開発途上版であるv3は、

v2とは命令の表記が変わっているものがあります。


2006.03.11現段階のをちょっと表にしてみました。

(2006.09.03追加修正)


v2 v3 命令を使っている主な記事
&SaveDialog &Menu.SaveAs
&LoadDialog &Menu.Load ボタン画像のメニュー
&PrefsDialog &Menu.Prefs ボタン画像のメニュー
&SaveEnable &Menu.SaveAsEnable セーブとロード
&LoadEnable &Menu.LoadEnable セーブとロード
&TitleEnable &Menu.TitleEnable
*MesBody.Img *MesBody.Load テキストウインドウに画像を使う
*MesHead.Img *MesHead.Load 名前表示欄を表示させる
*MesShowEffect *Mes.ShowEffect
*MesHideEffect *Mes.HideEffect
*MesbodyNameMode *Mes.AutoNameMode
*MesbodyIndent *Mes.AutoIndent
*WindowSize *Window.Size 文字を入れて起動してみる
&SelectButton &SelectButton.Draw ボタン画像のメニュー
&SelectLine &SelectLine.Set 選択肢に音をつける
&SelectMes &SelectLine.Draw 選択肢に音をつける
&Caption Window.Title タイトルバーの文字を章ごとに変える
&Click &Wait.Click
&ClickJmp &Jmp.Click
*DisableTextColor *Text.DisabledColor
&LText &Layer.Text
&LdSelectButton &EzSelectButton タイトル画面を作ってみる~ボタン画像のメニュー
&B.LdCG = &LoadBuffer.Img, x, y; &B.Icon = &LoadBuffer;
&B.Icon.Pos = x,y;


主な記事のところが空白になっているのは、

このブログではまだ使ってない(たぶん(汗))命令です。


変わったといっても正式表記が変わっただけで

v2の命令もエイリアスとして残ってるので

v3でもちゃんと動きます。


詳しくは、Famous Writerホームページ

v3の新機能と移植のヒント のページを参照下さい。


↑のページにも書いてあるように

エイリアスではコンパイルに時間がかかるらしいので

v3に完全に移るときやv3で初めから作るときなどは、

正式表記のほうがいいでしょう。


v2の段階で作り始めて、

しかもv2とv3のどっちで配布するか決めかねている

私みたいな場合は、当分前の命令のままでもいいかなと

思っています。


ただし、Ver2.58以降を使う場合は気をつけてください。


実はVer2.58から、

Paddingの順序がスタイルシート式になって

今まで左右、上下の順番で値を入れていたのが、

上下、左右になったそうです。


そのため、v2では*MesHead.Padding = 25,18;

↓のように表示されていたものが、


画面65


v3では↓こうなってしまいます。


画面66


もし、v2からv3へ移行しようとしたときに

表示が変なところがあったら、
まずPadding関係の値を調べてみてください。

FWはクリック待ちとか改頁待ちのときには

デフォルトでは文章の終わりに白い▽が点滅します。


このカーソルを、自分のオリジナルのものに変えたり、

横書きでは右下固定、縦書きでは左下固定にすることができます。



カーソル カーソル02 カーソル03


手元にあったカーソルの画像を並べてみました。


左端のは、ATrialProduct's素材置き場 さんから

真ん中のは、First Seed Material さんからそれぞれお借りして加工したものです。


右端は、Famous Writerホームページライブラリ に置いてあるカーソルの

色を変えただけです。


こんな感じで縦に並べて、立ち絵等と同じくマスク画像をつけます。


*Cursor.Loop = コマ数;

*Cursor =画像ファイル名;


*Cursor.Frame = コマとコマのウエイト時間(単位は約1/100秒);


カーソルは↑の3つがセットです。


*Cursor.Loop”は必ず画像を読む前に指定してください。


これをsetting.txtに書き入れます。


シーンによってカーソルを変えたい場合、

上の3つは本文中にも使用可能なので、

変えたいシーンの前にこの命令を入れてください。


ただし、setting.txt以外に書き込む場合は、最後に


*Cursor.New;


という命令を入れなければ、設定が反映されません。



後、カーソルの位置を変えたい場合は、

*Cursor.Place = 0か1(0はテキストの後、1は固定);

の命令を書き加えてください。(これも本文中に使うことが可能です)


では、実際にやってみます。

例では分かりやすくするために、setting.txtのほうではなく

本編のテキストのほうに設定を入れています。


#コマ数(必ず画像を読む前に指定)
*Cursor.Loop = 2;
#フレーム時間(単位は約1/100秒)
*Cursor.Frame = 40;
#画像ファイル
*Cursor = /cursor3;
# カーソル生成

*Cursor.New;


#カーソルの場所(0ならテキストの後、1なら左下固定)
*Cursor.Place = 1;


カーソルを変えてみました。羊が跳ねてます。


*Cursor.Loop = 4;
*Cursor.Frame = 40;
*Cursor = /cursor4;
*Cursor.New;


次は、スリープをかけられたみたいなカーソル。コマ数は4コマです。


*Cursor.Loop = 6;
*Cursor.Frame = 40;
*Cursor = /cursor2;
*Cursor.New;


これは実は6コマです。静止画では分かりにくいので、ぜひ実際に試してみてください。



画面62

                        
画面63
                        

画面64

そういえば、リクエストはボタン画像のメニューだったような。

今さらながら思い出す私(汗)。

というわけで、今回はボタン画像を使ったメニューについてです。


とはいえ、テキストのメニューと実はあまり変わりません。

新しいことといえば、ボタン画像を表示するための命令ぐらい?


&LdSelectButton= 横の座標,縦の座標, ボタン画像名 : &Jmp = 移動先;


↑この命令をメニューの数だけ並べ、


&SelectButton = ボタン画像の表示効果;


↑この命令でボタン画像を一気に表示させます。


では、実際にやってみましょう。


キタユメ。 』さんからボタン画像の素材をお借りしました。


ボタン画像01


↑こんな感じのボタン画像をメニューの数だけ用意します。

(ボタン用画像については、

マニュアル→グラフィクス系命令→ボタンをごらん下さい)


@menu

&LdSelectButton= 80, 310, s : &Jmp = @hajime;
&LdSelectButton=
80, 345, l : &Jmp = @tuzuki;
&LdSelectButton=
80, 380, o : &Jmp = @system;
&LdSelectButton=
80, 415, e : &Jmp = @end;

# ボタン画像を表示
&SelectButton = 611;

@hajime

ここでプロローグなり、名前入力なりをします。


@tuzuki

&LoadDialog;

jmp=@menu;


@system

&PrefsDialog;

jmp=@menu;


@end

&End;


↑のように
タイトル画面を作ってみる~メニューのジャンプ先を設定する

でやったメニューをテキストからボタン画像に変えてみます。


画面62


こうして表示してみると、やはりテキストのとは、雰囲気が違ってきますね。