★★モナー娘のギャルゲー制作スレ★★

このエントリーをはてなブックマークに追加
528トテー ◆tote0hc2
http://totetero.hoops.ne.jp/Flash/monamix.html
ほんの少しかえました

>>518 435さん
凄いです。萌えました。
線でなぞってトレースしようかと思ったけど
自分の実力では有限時間内に終わらせることはできないと感じました。
キャラクターの髪をなびかせることは難しそうです。

>>519 軟骨 ◆flash7zcさん
質問です。
>>428(114さん)のように文字を一つずつ表示させるのにASでは
どうやるんですか?
あと本当に外部テキストからシナリオを読み込めるのですか?
ASが貧弱なVer.4を使ってるので本当にできるか疑問なんです。
MX体験版もあと17日で期限切れだし、、

背景も(下手だけど)描いてみようかと思うのですが
どんな背景が必要でしょうか?
大きな木の下とか自販機の前とか考えているんですが。
529軟骨 ◆flash7zc :02/07/15 14:19 ID:???
>>528 トテー氏
うちはFLASH5Jですので使えるかどうか解らないですが。
あと5分くらいで考えたものなので動くかどうか(w

単純に言えば文字列を少しずつ表示させるわけですから、
forとlengthとsubstringを使えばいけます。
ここでstrは文字が格納されている変数、dispはダイナミックテキストです。
for( i=0; i<=str.length; i++ ){
disp = str.substring( 0, i );
}
でもたぶんこれだけだと一瞬で表示が終わってしまうので、
どうにかしてウエイトをかけないといけないです。
そこら辺の詳しい説明はまたの機会に。

シナリオを外部テキストから読み込ませることはもちろんできます。
ただ、複数の方法がありまして。
 1)巨大なテキストファイルを全部配列に読み込ませる
 2)細切れのテキストファイルを随時読み込ませる
方法としては2)のほうがメンテやりやすいし、たぶんこっちがオススメ。

テキストファイル内の例。
txt=表示される文字列\t次ページで表示される文字列\tさらに次ページ(\tが現れたらそこで一度表示停止)
select=分岐がある場合1、ない場合0
option1=分岐がある場合の選択項目1
opfile1=分岐がある場合、次に読み込むファイル名
option2=分岐がある場合の選択項目2
opfile2=分岐がある場合、次に読み込むファイル名
 :
file=分岐がなく次のテキストを読み込む場合のテキストファイル名
とかにしていけばいいかと。<昔DOSゲーを作ったときはこの方法でした。
530トテー ◆tote0hc2 :02/07/15 16:07 ID:???
>>529 軟骨さん
ありがとうございます
Flash 4Jでもこんなかんじでできました。
4JではforがなかったのでかわりにLoopを使いました。
Set Variable:"i" =0
Set Variable:"ward" ="こんにちは"
Loop While (i < Length ( ward ))
Set Variable:"i" =i + 1
Set Variable:"message" =Substring ( ward, 0, i )
End Loop
一応ちゃんと機能してるっぽいけど
じっさいに1文字ずつ表示しているか確認できないのでちょっと不安。
ウエイトをかけるのはたいへんなのでしょうか?

外部テキストの方は明日にでも実験してみます。
531軟骨 ◆flash7zc :02/07/15 22:44 ID:???
>>530
あー、Flash4JはPascalみたいなんだなぁ(汗
4Jは触ったことないので、想像でAS書いてみた。
5Jの文法と混ざってて意味が解らないかも。

フレーム1
Set Variable: "i" = 0
Set Variable: "word" = "こんにちは"
フレーム2
Set Variable: "message" = Substring( word, 0, i )
フレーム10くらい(2〜10の間がウエイトというか無駄フレームです)
Set Variable: "i" = i + 1
if( i<= Length( word ) ){ gotoAndPlay(2); } else { stop(); }
みたいにしてループさせるとか。
532トテー ◆tote0hc2 :02/07/17 15:55 ID:???
>>531 軟骨さん
有り難うございます。おかげさまで
一文字ずつ表示させるのに成功しました。
レスがおくれて申し訳ありませんでした。
ところで外部テキストを利用する実験を行ってたんですが、
http://totetero.hoops.ne.jp/Flash/monamix/monamixTEST.html
こうなってるはずが、
http://totetero.hoops.ne.jp/Flash/monamix/monamixBeta.html
こうなってるんです。(外部テキストを読み込む方)
なぜか外部テキストを2回以上読み込めないんです。
読み込むファイル名を変数にしてレベルを0にしてloadvariablesを実行したのですが
ループして戻ってきた時に2回目のloadvariablesでエラーが起きます。
なぜだかもしわかったら教えて下さい。
http://totetero.hoops.ne.jp/source/monamixBeta.lzh
ソースです。(マクなのでマドでうまくいくか心配)
教えて君で本当に申し訳ありません。
533軟骨 ◆flash7zc :02/07/17 16:32 ID:???
>>532
今からバイトに行くので、解った問題点だけ挙げておきます。

loadVariablesNum ("scene" & pass & ".txt", 0);
で外部テキストを読み込んでいますよね?

例えばscene1.txtを見ると、
「&opfile1=2 」
と、数字の後に余分な半角スペースが入っています。
まず修正すべきはこの点ですね。
全ての.txtファイルにこの余分な半角スペースが入っていました。
これを全部取り除いてください。

次に、外部ファイルの記述を見ると、
&opfile1=2
&opfile2=…
となっているわけですが、これでは変数に数字+改行コードが
読み込まれてしまうことになります。
変数ごとに改行を入れるのをやめれば直ります。
つまり、メッセージ以外の変数定義部分を
&opfile1=2&opfile2=3…
と全てを1行にまとめてしまえば良いわけです。


解りにくかったらごめんなさいですが…。
534軟骨 ◆flash7zc :02/07/17 16:35 ID:???
あと、問題点.txtにあった、MXでパブリッシュうんぬんのやつ。

なんだかMXからは文字コードセットが変わったらしいので、
System.useCodepage=True を追加するか、
外部テキストのエンコーディングをUTF-8にする必要が
あるらしいです。詳しくは↓こっち。
ttp://www.macromedia.com/jp/support/flash/ts/documents/fl0262.html


もう一個の問題点はまた後で…。
535トテー ◆tote0hc2 :02/07/17 18:42 ID:???
本当にありがとうがざいます。
分かりやすかったです。
外部テキストを訂正したら上手くいきました。
そしたらもう一つのラベルの方の問題も同時に解決しました。
MXの文字化けはFlash 4では手におえないっていうことで、、
536135:02/07/17 22:22 ID:???
相談です。
ゲームで使用するBGMを
「前奏」と「ループ」に分けて、
鳴り始め「前奏」を一回だけ再生→ループで繰り返し
というのは可能でしょうか。
537軟骨 ◆flash7zc :02/07/17 23:07 ID:???
>>535
できましたか。よかったよかった。

>>536
できないことはないですよ。っつーかできる。
方法としては、BGMを入れたMCを作ることです。
まずMC内に前奏部分を「同期:スタート」で貼り付けます。
ちょうど前奏が終わる辺りにループ部分を「同期:スタート」で貼り付けて、
繰り返し回数を65535とでもしておけば大丈夫。永久ループ。
音楽を止めたい場合はstopAllSounds();でも実行すればOK。
初めまして
とあるスレでこのスレを知り、来てみました。
>>536
軟骨氏の方法が効率的だと思いますが、
あえてスクリプトで実行しようとすればこんな感じかなぁ(動作確認済み)

soundPrelude = new Sound();
soundPrelude.attachSound("sound1");
soundPrelude.start(0, 1);
_root.onEnterFrame = function() {
soundPrelude.onSoundComplete = function() {
soundPrelude.stop();
soundLoop = new Sound();
soundLoop.attachSound("sound2");
soundLoop.start(0, 999);
};
};

sound1が前奏、sound2がループサウンドで、
それぞれサウンドファイルをライブラリに読み込んだとき、リンケージとして付けた名前です。
ちなみにFlashPlayer6じゃないと動きませぬ。
よく考えたら6行目の
soundPrelude.stop();
は、いらないですね。
スレ汚しスマソ。
540135:02/07/18 22:44 ID:???
軟骨さん、世界記録はカメルーンで17個さん
ありがとうございます。
現在、試行錯誤で調整中。
激しく切れ目ができたり、音が重なったりです。

http://proxy.ymdb.yahoofs.jp/users/ef05ecf3/bc/neko244.swf?bcQAzh9ARbkEUa2q
(試作品につき危険)