選択肢。選択肢関連の技とか。




里々の書式

バルーンに選択肢を表示してユーザーに選択させたい場合等に使用します。
里々の書式の選択肢では表現に制限があるのでより細かく指定したい場合は後述のさくらスクリプトによる選択肢を参照して下さい。

*
:選択して下さい。

_選択肢1
_選択肢2

*選択肢1
:選択肢1が選ばれました。

*選択肢2
:選択肢2を選んだみたい。

*選択肢2
:選択肢2を選んだんだよ。

_は行頭に書く必要があります。選択肢のジャンプ先が複数ある場合はランダムで選ばれます。
この書式では選択肢の表示とジャンプ先のトーク名が同じになるので[はい]/[いいえ]の様な選択がいくつもある場合ではジャンプ先が同じになってしまうのでジャンプ先の名前を変えたい場合は次の様に書きます。

_選択ラベル1【タブ】選択ID1

この場合クリックできる文章が『選択ラベル1』のまま、『*選択ID1』にジャンプします。

また選択肢トークを実行した後は次の変数に値が保持されます

(選択ID)
(選択ラベル)
(選択番号)

さくらスクリプトの書式

選択肢はさくらスクリプトを直接記入する方法もあります。
(里々の書式も、ベースウェアに送る際に里々が自動でさくらスクリプトの書式に変換している)
こちらの方が応用がきくので、ゴースト制作に慣れてきたらぜひ使ってみよう。

_選択ラベル【タブ】選択ID
\q[選択ラベル,選択ID]
\__q[選択ID]選択ラベル\__q

一番上は里々の書式で、二番目・三番目がさくらスクリプトによる書式になります。*1
それぞれどのように対応しているか分かるはず。
以下使用例。

*
:選択して下さい。

\q[選択ラベル1,選択ID1]
\q[選択ラベル2,選択ID2]

段落点を表示する

さくらスクリプトの\![*]はSSTPマーカーを表示します。
これを段落点の代わりにして、選択肢の頭に付ければちょっとかっこよくなるかも?

*
:選択して下さい。

\![*]\q[選択ラベル1,選択ID1]
\![*]\q[選択ラベル2,選択ID2]

引数を与える

選択後はジャンプ先に引数を渡すこともできます。

\q[選択ラベル,On選択ID,引数1,引数2] または \__q[On選択ID,引数1,引数2]選択ラベル\__q

*On選択ID
:引数1は(R0)です、引数2は(R1)です。
*OnChoiceSelectEx
>(R1)

*例
\__q[選択ID,引数1,引数2]選択ラベル\__q

*選択ID
:引数1は(R2)です、引数2は(R3)です。

なお里々では独自仕様により\qタグの内容を加工するため、OnChoiceSelectExで引数を与えたい時は\__q[]~\__qの方を使います。

応用テクニック

選択肢の並びをランダムにする

デフォルトの設定では、1回のトーク中で複数回同名単語群を呼び出しても、単語は重複して選択されない。

*クイズ開始
:さて、ここで問題です。
デスパコーワとは何の薬でしょう。

_(回答肢)
_(回答肢)
_(回答肢)

@回答肢
口内炎
頭痛
歯痛

*口内炎
:正解!

*頭痛
:ハズレ!

*歯痛
:ハズレ!

2段組メニュー

里々では、今のところ2段組のメニューは作成できない。
実装する場合は、さくらスクリプトを使用して、次のようにする。

\q[選択ラベル1,選択ID1] \q[選択肢ラベル4,選択ID4]
\q[選択ラベル2,選択ID2] \q[選択肢ラベル5,選択ID5]
\q[選択ラベル3,選択ID3]

またはカーソル移動の ¥_l タグを利用して

\q[選択ラベル1,選択ID1] 
\q[選択ラベル2,選択ID2] 
\q[選択ラベル3,選択ID3]
\_l[,@-70]
\_l[160,]\q[選択ラベル4,選択ID4]
\_l[160,]\q[選択ラベル5,選択ID5]

¥_l[,@-70]の-70の数値は、戻りたい行数×14で計算

条件を満たしたら選択肢を表示

最初は隠しておきたい選択肢などの表現方法。

*例
:メニューだよ。
\q[選択ラベル1,選択ID1]
\q[選択ラベル2,選択ID2]
(when,(好感度)>=10,\q[選択ラベル3,選択ID3])

関数のwhenを使い、(好感度)が10以上の時だけ選択ラベル3を追加で表示します。
なお注意点ですが、\qタグ内ですでに半角コンマを使っているため、関数の引数区切りには半角コンマを使ってはいけません。
例のように全角コンマなど別の区切り文字を使いましょう。

選択肢の自動化

丸投げ→駄でべ sissy/選択肢の自動選択

# パラメータは \![timerraise,制限時間(ms),1(固定),ジャンプしたいラベル]

*おやつ裁判
:(7)被告に一週間お犬様の世話を命ずる。
_異議あり!
_異議ありません
\![timerraise,5000,1,異議ありません]

選択肢の表示条件

回りくどい気もします。

#「選択肢」は、重複回避のためだけなので、つけなくても変えても構いません。

*見たものリスト
:今まで見たものだよー
\q[(見たもの1フラグ),選択肢(見たもの1フラグ)]\_q
\q[(見たもの2フラグ),選択肢(見たもの2フラグ)]\_q
・
・
・

*選択肢見たもの1
:こんなのあったねー。

#「見たもの1フラグ」という文字は、選択肢に表示する文字に置き換えて下さい。
#他も同様です。

*見たもの1フラグ立て
$見たもの1フラグ【タブ】見たもの1
:見たものリストに追加しておくねー

頁切替式選択メニュー

不特定数の選択肢を次頁・前頁で行き来出来る選択メニューです。
例はインストールゴーストをリスト表示して選択出来ます。

installedghostname通知でゴースト名を配列変数_aryGhostNameに入れて置く

*installedghostname
(for,0,(Rの数)-1,(set,_aryGhostName(C0),(R(C0))))
_aryGhostName(Rの数)【タブ】

メニュー本体

#頁最大行数と表示開始頁数設定
*GhostMenu
$_PMax【タブ】22
$_Page【タブ】0
>GhostMenu.2

#ヘッダー処理
*GhostMenu.2
$_i【タブ】1
$スクリプトの一番頭【タブ】\C
\0\_q\c\b[2]■ゴースト選択メニュー\n[50]
>GhostMenu.loop

#ループ処理(選択肢表示)
*GhostMenu.loop
$_j【タブ】(calc,(_i)+(_Page)*(_PMax)-1)
$_f【タブ】(変数「_aryGhostName(_j)」の存在)
>GhostMenu.loopend【タブ】(_i)>(_PMax)||(_f)==0
\0\__q[OnGhostMenuSelect,(_j)](_aryGhostName(_j))\__q
$_i【タブ】(calc,(_i)+1)
>GhostMenu.loop

#フッター処理
*GhostMenu.loopend
\0(when,(_i)==1,(set,_i,2)\0...登録はありません\n)φ
(when,(_i)<=(_PMax),(times,(calc、(_PMax)-(_i)+1), \n))φ
\n[half]\![*]\q[閉じる,GhostMenu.close] φ
(if、(_Page)>0||(_i)>(_PMax)&&(_f)==1、\![*](if、(_Page)>0、\q[前頁,GhostMenu.prior]、前頁/)φ
(if、(_Page)>0&&(_i)>(_PMax)&&(_f)==1、/)φ
(if、(_i)>(_PMax)&&(_f)==1、\q[次頁,GhostMenu.next]))

#閉じる
*GhostMenu.close

#前頁
*GhostMenu.prior
$_Page【タブ】(calc,(_Page)-1)
>GhostMenu.2

#次頁
*GhostMenu.next
$_Page【タブ】(calc,(_Page)+1)
>GhostMenu.2

#選択時  
*OnGhostMenuSelect
\![call,ghost,(_aryGhostName(R0))]

解説


*1 三番目の\__qはアンダーバーが2つなことに注意。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-11 (土) 07:17:20