転送量軽減や、管理上の都合で、リンク先は基本的にテキストになってます。ご了承下さい。
Famous Writerの動作について、マニュアルに記載の無い部分をご説明いたします。
ライブラリに掲載するほど大がかりでない小技集です。
無償で改変OK連絡不要で自由にお使い下さい。改造したものをご自分のHPなどで配布しても構いません。
以下、v2との絡みがあるんで、以前のものをそのまま掲載しておきます。
アニメーション機能を使った、目パチ、口パクの例を。
・目パチ用のアニメ画像:/eye_1.bmp, /eye_2.bmp, /eye_3.bmpの3枚
・口パク用のアニメ画像:/lip_1.bmp, /lip_2.bmp, /lip_3.bmpの3枚
として、用意してある物とします。
# 背景レイヤーに背景を読み込む &Ly= 0; &LdCG= /background.bmp # レイヤー1は立ち絵 &Ly= 1; &LdCG= /tachi_1.bmp; # ↑ここまではアニメしない時と一緒 # レイヤー2は目パチ(非透過で高速化) &Ly= 2; &Transparent=0; &Pos= 320,80; &LdCG= /eye_1.bmp, /eye_2.bmp, /eye_3.bmp; &Anim= 10,yes,5,yes; # レイヤー3は口パク(非透過で高速化) &Ly= 3; &Transparent=0; &Pos= 336,184; &LdCG= /lip_1.bmp, /lip_2.bmp, /lip_3.bmp; &Anim= 10,yes,100,no; &VoiceSync = yes; # 描画 &Draw= 1; # テキスト(セリフ再生と同時に口パクが始まるので特別な命令はいらない) 【脇役】&v=voice1.aif&「セリフ1」 と脇役は言った。 【脇役】&v=voice2.aif&「セリフ2」 と脇役は叫んだ。 【脇役】&v=voice3.aif&「セリフ3」 と脇役は泣いた。 # 背景や立ち絵の切り替え前にはLClearしとかないと、アニメのレイヤーが残ってしまう &LClear= 2; &LClear= 3; #-------- 次のシーン -------- # レイヤー1に別の立ち絵 &Ly= 1; &LdCG= /tachi_2.bmp; # 以下同文
オープニングなどで、時間軸で処理を管理する方法の例です。
時間軸なので、マシンスペックによる動作の違いを多少は吸収できます。
また、時刻をチェックすることにより、遅いマシンでシーンが飛ばせるようにもなります。
# タイマーのリセット &TimerReset; @scene1 # ここにシーン1(1秒) &Wait = Timer:1000; # &TimerReset;から1秒経過まで待つ @scene2 # ここにシーン2(1.5秒) %var = &Timer; ?%var > 3700 : &Jmp = @scene4; # 3.7秒経過してた場合はシーン3を飛ばして4へ &Wait = Timer:2500; # &TimerReset;から2.5秒経過(1+1.5)まで待つ @scene3 # ここにシーン2(1.2秒) &Wait = Timer:3700; # &TimerReset;から3.7秒経過(1+1.5+1.2)まで待つ @scene4 # 以下続く
選択肢で色を変えたい場合は、直前のテキスト行末で変えておくといいでしょう。
v3では、テキストにインライン命令が使えます。
# 直前のテキスト コンパクトディスク(CD)の収録時間は?&c=123456& # 選択肢 &select = 78分: &jmp= @78 ,76分: &jmp= @76 ,74分: &jmp= @74 ,72分: &jmp= @72 ;
v2以前では、サブルーチンコールみたいなものはないので、&Jmpが文字変数を使えるのを利用して、次のように対応してください。
v3では、&Call〜&Return が使えます。
なんかの処理。
# 次の処理のアンカーを変数に入れておく
$sub.return= @next;
# で、飛んじゃう
&jmp= @sub;
# サブルーチンからここに飛んでくる
@next;
続きの処理
#----------------
# サブルーチン
#----------------
@sub;
処理
&jmp= $sub.return;
アンカーをつけかえればいいだけなので($sub.returnの右辺)、他の所からもガンガン呼べます。
また、このように変数名を「$(サブルーチン名).return」と命名に工夫しておけば、何段でも入れ子にしてサブルーチンを呼べます(再帰はだめですけど)。