こんばんは! 笹音です。
すでにTwitterやサイトの方ではお知らせ済みですが、今月中に公開予定だった妄染フィリアのVer1.20アップデートを2回に分けて行うことになりました。
ひとまず近日中(目標は今週末)に、Ver1.10として以下の更新を行います。
詳しいは内容は以下のページをご覧ください
妄染フィリア|Ver1.20 詳細情報|USURAHI
以下、言い訳
眼帯さんのご褒美は完成済みですし、IFも完成間近ではありました。
ありましたが、正直納得のいくものではなかったです。
IFなんだからなにをしてもOKのはず!って、展開等何も考えずに勢いで書き始めてしまったこと。そして来月公開予定の幽寂と同時進行していたことが原因だと思っています。
自分がマルチタスクできない人間だと忘れたのか……!!
妄染フィリアはイラスト担当のアサキさんと時間をかけて作り上げた、とても大切な作品です。なので今のまま公開するのではなく、時間をかけて納得のいくものができたから出すことにしました。
楽しみにしてくださっていた方には申し訳ありません。
このままなかったことには絶対にしないので、待っていていただけると嬉しいです!
あ、この件についてはアサキさんにもきちんとご相談して、了承をいただいていますのでご安心くださいね……!
お詫びとして「ルーム」という謎の機能を作っています。
他にも動画上げています → @moco_285
幽寂の会話システムを輸入して、キャラクターたちと交流できる機能です。リアル時間や日付によって色々な反応をしてくれたり、一緒に遊んだりできます。
どうやって作ってるかを備忘録も兼ねて載せてみました。
長くなっちゃうので、興味がある方は続きからどうぞ。
※注意※ 使用Verはβ4.7。使用は自己責任で!
UI番号毎に選択肢デザインを変更
これはとっても簡単です。ファイル名を文字列変数に置き換えて、最初に分岐をいれるだけ。
UserDesignフォルダの「選択肢画面設計.txt」を開きます。
#=ES.SEL.BTDEF
の下に
IF[@L(777)==★UI番号]
$L(40)="通常状態の選択肢画像"
$L(41)="マウスオン時の選択肢画像"
$L(42)="オン時の選択肢画像"
$L(43)="選択不可状態の選択肢画像"
$L(44)="テキスト表示マスク"
ELSE[]
$L(40)="select/btn_select_off"
$L(41)="select/btn_select_over"
$L(42)="select/btn_select_on"
$L(43)="select/btn_select_na"
$L(44)="select/tip_select_txspace"
IFEND[]
と入力します。
★UI番号のところには選択肢を変えたい方のUI番号を入力してください。
その下の文字列変数には、それぞれ画像のパスを入れます。
$L(n)は任意の数字(他で使っていないもの)でOKです。IFとELSE内の数字は揃えてください。
そうしたら、
"select/btn_select_off", "select/btn_select_over", "select/btn_select_on", , "select/btn_select_na"
を
$L(40), $L(41),$L(42), , $L(43)
に。
"select/tip_select_txspace"
を
$L(44)
にそれぞれ置き換えてください。これでおわりです!
複数変更したい場合は ELSE[@L(777)==★UI番号] で条件を増やせばOK。
スクリプト内で
@L(777)=★UI番号
\UI.RELOAD
が呼び出されると、その間選択肢の画像が変わります。
選択肢の位置、テキスト装飾も変える
これは「es_Select.yst」をいじる必要があるので上級者向けです。
こんな感じのことをしていますが、うまく説明できる自信はありません……。
コードを見てできそうな場合はお試しください(ただしくれぐれも自己責任で!)
日付や時間ごとに会話を変える
これも基本の組み方がわかっているなら簡単です!
★今日が誕生日かの判定
@L(1302)=0
IF[@G(1300)==@_TIME(0,1) && @G(1301)==@_TIME(0,2)]
@L(1302)=1
IFEND[ ]
@_TIME(0,1) で現在の「月」を取得、
@_TIME(0,2) で現在の「日」を取得できます。
これを事前に入力してもらった誕生月(@G(1300))、誕生日(@G(1301))と比較して、一致している場合日付イベントフラグ(@G(1302))が1になる仕組みです。
同様に特別な日も判定できます。
IF[@_TIME(0,1) ==10 && @_TIME(0,2)==31]
@L(1302)=2
IFEND[ ]
今日はハロウィンかの判定です。一致する場合は日付イベントフラグに2が入ります。
★時間帯の設定
さすがに24時間毎に会話を変えるのは大変。「時間帯」として8つに分けることにしました。
@_TIME(0,4) で現在「何時」かを取得できるので、
IF[@_TIME(0,4)>=0 && @_TIME(0,4)<=3]
@L(1303)=0
ELSE[@_TIME(0,4)>=4 && @_TIME(0,4)<=5]
@L(1303)=1
ELSE[@_TIME(0,4)>=6 && @_TIME(0,4)<=8]
@L(1303)=2
ELSE[@_TIME(0,4)>=9 && @_TIME(0,4)<=11]
@L(1303)=3
ELSE[@_TIME(0,4)>=12 && @_TIME(0,4)<=15]
@L(1303)=4
ELSE[@_TIME(0,4)>=16 && @_TIME(0,4)<=18]
@L(1303)=5
ELSE[@_TIME(0,4)>=19 && @_TIME(0,4)<=20]
@L(1303)=6
ELSE[@_TIME(0,4)>=21 && @_TIME(0,4)<=23]
@L(1303)=7
IFEND[ ]
これで@L(1303)に時間帯が入ります。
この一連の流れはサブルーチン化すると便利なのでおすすめです。
★時間帯で会話や居場所を変える
これはもう地道に条件分岐するしか思いつきませんでした。
色々と省略しますがざっと書いてみます。
//最初に背景とBGMを設定
IF[@L(1303)==0]
//深夜 部屋にいる
\BGM(曲名, 500)
\BG(背景, , 0)
ELSE[@L(1303)==1]
//早朝 部屋にいる
\BGM(曲名, 500)
\BG(背景, , 0)
ELSE[@L(1303)==2]
・・・
IFEND[ ]
\FIN(500, トランジション)
\GOSUB(ルームキャラ名挨拶)
ーーーーここは別のテキストファイルーーーー
#ルームキャラ名挨拶
IF[@L(1302)==1]
//誕生日の場合
\立ち絵
誕生日のセリフ
ELSE[@L(1303)==0]
//深夜の場合
・・・
IFEND[ ]
\RETURN
ーーーーーーーーーーーーーーーーーーーーー
#**ルームコマンド処理
@L(781)=0
\UI.RELOAD
\SEL.GO(**ルーム会話,…)
\SEL(お話する,見つめる,触ってみる,一緒に遊ぶ,記録を表示,ルームに帰る)
#**ルーム会話
@L(781)=1
\UI.RELOAD
\RND(@L(199),0,2)//ここで乱数を設定しています。0~2の3パターン
IF[@L(1302)==1]
//誕生日の場合
IF[@L(199)==0]
誕生日の会話1
ELSE[@L(199)==1]
誕生日の会話2
IFEND[ ]
IF[@L(199)==0]
深夜の会話1
ELSE[@L(199)==1]
深夜の会話2
IFEND[ ]
・・・・
IFEND[ ]
\GO(**ルームコマンド処理)
こんな感じです。雑!
もっとスマートな方法もあると思いますが、動けばいいんだよ理論でゴリ押しします。
パラメーターを増やせば、リアルタイムと連動しながら交流を深めていくゲームとかも作れそうです。
やってみたい方、挑戦お待ちしております!(自分で作る元気はない……!)