『‘&’-空の向こうで咲きますように-』を応援しています!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

バックログテスト

今回は(前回って何時?)バックログについて解説を。
と言ってもひとつもり氏の作ったものを改変しただけですが……

fu氏の『水平線まで何マイル?』で使われているタイプのもので、『コミュ-黒い竜と優しい王国-WEB体験版』のバックログを作成します。
コンチェルトノートで解説しても良かったんですが、あれは複雑すぎるので……



作成の前提として

numaliasでtagを定義し、ゲーム開始直後(*start直下にでも)に『mov %tag,150』とし(150以外でも良いがグローバル変数は使用不可)、この入力した値から50ほど後の文字変数を使用してはならない(この場合150~199まで)。
システムカスタマイズをしていて、『textgosub *text_lb』を使用している。
バックログの開始地点は『*backlog』。



前準備としてする事は、

ボイス命令はdefsubを使用して『voice "A000a010001"』とし、
*voice
getparam $0
mov $voice,$0
dwave 0,"voice/"+$voice+".ogg";*pretext_lbで再生でも可
で"voice/A000a010001.ogg"を再生出来るように。

名前もdefsubを使用して『name "名前"』とし、
*name
getparam $0
mov $name,$0
lsp 100,":s/26,26,0;#FFFFFF"+$name,100,400;*pretext_lbで表示でも可
で"名前"をストライプ表示。
ボイスの再生、ストライプの表示はpretextgosubでも可。


*pretext_lb中か*text_lbの直後に
mov $%tag,$name+"|"+$voice
を導入。
ここでは$150~$199に名前とボイス番号を記憶させています。

*text_lb
の最後のreturnの前に
mov $name,"":mov $voice,""
inc %tag
if %tag = 200 mov %tag,150;200はmov %tag,150の150に50を足した値
を導入。
ここでは名前とボイス情報をクリアし、記憶する場所を次に移動させています。




そしてバックログ部分はこんな感じ


*backlog
btndef clear
vsp 701,0:vsp 702,0 ;名前スプライトの非表示
mov %back,0 ;%backは表示するバックログのページです
;バックログの保持数をチェック、%log_numが保持数
mov %log_num,1 ;現在表示している文字=1なので1から開始
for %0 = 1 to 50
checkpage %1,%0
if %1 = 0 break
inc %log_num
next
lsp 29,":a;image/backlog@base%layer.png",0,0,185;バックログ背景画像
lsp 28,":a;image/backlog@left%layer.png",0,0
lsp 27,":a;image/backlog@logo%layer.png",2,6
lsp 26,":a;image/backlog@right%layer.png",772,0
lsp 25,":a;image/backlog@slider%slider;rail.png",777,108
lsp 1,":a;image/backlog@slider%slider;over.png",775,106;スライドボタン
lsp 4,":a;image/backlog@close%button;off.png",765,6;バックログ終了ボタン
lsp 5,":a;image/backlog@close%button;on.png",765,6
lsp 7,":a;image/backlog@up%button;off.png",775,88;バックログupボタン
lsp 8,":a;image/backlog@up%button;over.png",775,88
lsp 10,":a;image/backlog@down%button;off.png",775,506;バックログdownボタン
lsp 11,":a;image/backlog@down%button;over.png",775,506
textoff
print 10,500
gosub *back_page
*back_btn
if %log_num <= 5 amsp 1,775,106:jumpf ;106はスライドボタンの一番上の値
amsp 1,775,490-384*%back/(%log_num-5) ;490はスライドボタンの一番下の値、384は移動幅
~

;ここにバックログ関連のスプライトをexbtnなどを使ってボタン化
;今回は手抜きなので省略


btnwait %0
if %0 = -1 goto *end_log
if %0 = -2 gosub *history_up:gosub *back_page
if %0 = -3 & %back = 0 goto *end_log ;最新のログを見ていてホイール下ならバックログ終了
if %0 = -3 & %back != 0 dec %back:gosub *back_page ;ホイール下で下のログへ
if %0 = 2 gosub *history_up5:gosub *back_page
if %0 = 3 gosub *history_down5:gosub *back_page
if %0 = 4 goto *end_log
if %0 = 20 dwave 0,"voice/"+$20+".ogg":gosub *back_page ;20~24は下のmov %9,%4+20に依存
if %0 = 21 dwave 0,"voice/"+$21+".ogg":gosub *back_page
if %0 = 22 dwave 0,"voice/"+$22+".ogg":gosub *back_page
if %0 = 23 dwave 0,"voice/"+$23+".ogg":gosub *back_page
if %0 = 24 dwave 0,"voice/"+$24+".ogg":gosub *back_page
goto *back_btn

*history_up ;1つ上のバックログが有るかチェック
if %back >= 46 return
checkpage %1,%back+5
if %1 = 0 return
inc %back
return

*history_up5 ;5つ上のバックログが有るかチェック
for %2 = 1 to 5
if %back >= 46 break
checkpage %1,%back+5
if %1=0 break
inc %back
next
return

*history_down5 ;5つ下のバックログが有るかチェック
for %2 = 1 to 5
if %back <= 0 break
checkpage %1,%back-1
if %1=0 break
dec %back
next
return

*end_log
if $name != "" vsp 701,1:vsp 702,1;名前スプライトの非表示
for %0 = 1 to 30;バックログ関連の消去
csp %0
next
texton
print 10,500
return

*back_page
btndef clear
if %back <= 0 mov %back,0 ;ここから念のため
if %back >= 46 mov %back,46
if %back < 5 jumpf
for %2=0 to 5
checkpage %1,%back-%2
if %1=0 dec %back
next
~
checkpage %1,%back
if %1=0 dec %back:return ;ここまで念のためだったと思う……忘れた……

for %1=20 to 24 ;表示しているログを削除
csp %1:mov $%1,""
next

mov %7,0 ;%7は表示されるログ(0~4番目)、Y座標の計算にのみ使用
for %4 = 4 to 0 step -1 ;%4=nとして解説します
mov %5,%back+%4 ;一番下に表示するバックログ+n番目のログをチェック
checkpage %1,%5 ;+n番目のログが有るか?
if %1=0 next ;無ければ終了
mov %9,%4+20 ;0~4に20を足した値のスプライトと文字変数を使用
mov %2,%tag-%5 ;%2に+n番目の名前やボイスを
if %2 < 150 add %2,50 ;記憶している変数値の代入
mov $2,"":mov $3,"" ;必要ないかも
split $%2,"|",$2,$3 ;名前を$2に、ボイスを$3に入れる
getlog $1,%5 ;+n番目のログを$1に入れる
mov %2,25+%7*115 ;25は一番上のログのY座標、115はY軸の間隔
if $2 != "" mov $1,"【"+$2+"】\"+$1 ;ログに名前が有れば名前とログを合成
strsp %9,$1,80,%2,27,4,23,23,0,0,1,2,#FFFFFF,#fd9618 ;ログをスプライトに
if $3 != "" mov $%9,$3:spbtn %9,%9 ;ボイスが有ればログをボタン化
inc %7 ;次に表示するログへ
next
print 1
repaint
return





とりあえず今回の解説はここまで。
コメント書いただけで理解しにくいかもしれませんが……

今回作成したバックログ部分のみの試作品を
コチラ
にアップしました。
コミュが展開出来る人だけ試してみて下さい。

1時間で作成したものなのでミスがあるかもしれません。
*text_lbは修正しないと文字がちらつきます。

展開方法についての質問は禁止です。
ゲームのシナリオは含まれていません。コミュの画像を使っているだけです。


コミュの作成フラグ?
そんなの立っていません。暇つぶしです。



追記
maxkaisoupage 49が必要でした。

コメントの投稿

非公開コメント

『るいは智を呼ぶファンディスク』を応援しています! 『黄昏のシンセミア』を応援しています! 『コミュ - 黒い竜と優しい王国 -』を応援しています! 『コンチェルトノート』を応援しています! 『るいは智を呼ぶ』を応援しています! 『見上げた空におちていく』応援中です
プロフィール

Herbas

管理人:Herbas
 
管理人及びこのサイトについて、詳しくはココを参照。
ご意見ご要望等の連絡も
このページに記載している
メールアドレスへお願いします。

変換記事へのショートカット
駄物記事へのショートカット
各種Tips
最新コメント
Twitter
カテゴリー+月別アーカイブ
 
検索フォーム
メールフォーム
何かあればあればお気軽に。
こんな記事を書いて等でもOK。
メールアドレスは任意ですが、
基本的に返信はしません。

送信はコチラから
リンク (敬称略)
応援中

ものべの - 夏葉
俺の彼女のウラオモテ 150px×600px
AXL新作第8弾 2012年春発売予定!
FaintTone|Reon
さくら、咲きました。「SORAHANE-ソラハネ-」学園エモーションビジュアルノベル
さくらさくらFESTIVAL!

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。