幻日幻月環

作成した伺かの更新情報などをつぶやくところ

スポンサーサイト

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

自動生成リスト

2016:04:25 21:10 修正
----

里々のちょっとしたロジックを提供するコーナー。
全て、里々wikiukadocの情報の組み合わせで作ります。
里々のサンプルゴースト「Rポストと狛犬」を書き換えて自ゴーストを作るくらいの知識が必要です。

今回は、全項目のリストを自動生成する機能を作成します。
以下のようなフッター付きのリストを、自動生成します。
satori_list_sample.png
また、リスト選択時の個別のトークの末尾に、自動的にリストに戻る選択肢がつきます。
satori_list_sample2.png
少し処理が複雑なので、解説は長くなりすぎるためしません。
saoriのように、「そういう機能を使えるようになるスクリプト」として使ってください。
使い方は続きにあります。

準備
以下のファイルを里々の辞書ファイルの中においてください。
もし、ファイルが消えている場合、この記事末尾のスクリプトを新規テキストファイルにコピーし、「dic_editlist.txt」と名前を付けて保存してください。
辞書ファイル

使い方サンプル
以下のサンプルをコピーして書き換えてください。

#------------------------------------------------------------------------------
#サンプルここから

#メニュー表示などから呼び出す
*0つつかれ
_◯リスト表示
_◯別のリスト

#------------------------------------------------------------------------------
#リスト表示設定
#「リストイベントの名称」は、必ず先頭2文字が半角「On」で始まる名前にしてください。
*◯リスト表示
$リストイベントの名称=Onマイリスト1
(リスト表示開始)

#「0」なら本体バルーン、「1」なら相方バルーン、「2」なら3人目バルーン
@Onマイリスト1の表示スコープ
0

#リスト表示時の説明。@です。*ではないです。
#\nで改行、行末にφで次の行と合わせて1単語扱いにします。
#replace_after.txtでウェイト挿入している文字はφを入れてください。
#replace_after.txtでの置換が無効化されます。
@Onマイリスト1の説明
ここにφ…φ…説明などを書きます。φ
またφ、SAORI呼び出しでS0が出るようなもの\n例えばsplitなどを使わないでください。

#@にしないでください。*であっています。
#半角カンマや半角ダブルクオーテーション、replace_after.txtでの変換対象文字は使わないでください。
#それぞれ項目を表示したとき、バルーン1行に収まるようにしてください。
#改行は加味していないため、改行されるほど長い選択肢だと表示がおかしくなります。
*Onマイリスト1の一覧項目
◯リストテスト1
◯リストテスト2
◯リストテスト3
◯リストテスト4
◯リストテスト5
◯リストテスト6
◯リストテスト7
◯リストテスト8
◯リストテスト9
◯リストテスト10
◯リストテスト11
◯リストテスト12
◯リストテスト13
◯リストテスト14
◯リストテスト15
◯リストテスト16

#1ページに何項目表示するか。1項目1行。
@Onマイリスト1の一覧表示項目数
6

#フッターの表示位置。上からどのくらいのスペースを入れるか。
#100で上から1行改行した位置に表示。750で上から7行と半分改行した位置に表示。
@Onマイリスト1のフッター表示位置
950

#リスト初期表示時のページの設定です。
#「最初」で最初のページ、「最後」で最終ページを初期表示します。
@Onマイリスト1の初期表示ページ
最後

#フッターのページ操作で、最初のページに戻る選択肢の表示
@Onマイリスト1の一番最初へ
<<

#フッターのページ操作で、前ページに戻る選択肢の表示
@Onマイリスト1の前のページへ
<

#フッターのページ操作で、次ページに進む選択肢の表示
@Onマイリスト1の次のページへ
>

#フッターのページ操作で、最後のページに進む選択肢の表示
@Onマイリスト1の一番最後へ
>>

#フッターの選択肢で、閉じる選択肢の表示名
@Onマイリスト1の閉じる名
◯閉じる

#項目選択時、リストに戻る選択肢の表示名
@Onマイリスト1のリストに戻る名
◯リストに戻る

#リストを閉じた時に呼ばれるトーク
*Onマイリスト1の閉じセリフ
:おしまい。

#選択肢をクリックした時に呼ばれるトーク
*Onマイリスト1の◯リストテスト1
:「◯リストテスト1」が選択された。
*Onマイリスト1の◯リストテスト2
:「◯リストテスト2」が選択された。
*Onマイリスト1の◯リストテスト3
:「◯リストテスト3」が選択された。
*Onマイリスト1の◯リストテスト4
:「◯リストテスト4」が選択された。
*Onマイリスト1の◯リストテスト5
:「◯リストテスト5」が選択された。
*Onマイリスト1の◯リストテスト6
:「◯リストテスト6」が選択された。
*Onマイリスト1の◯リストテスト7
:「◯リストテスト7」が選択された。
*Onマイリスト1の◯リストテスト8
:「◯リストテスト8」が選択された。
*Onマイリスト1の◯リストテスト9
:「◯リストテスト9」が選択された。
*Onマイリスト1の◯リストテスト10
:「◯リストテスト10」が選択された。
*Onマイリスト1の◯リストテスト11
:「◯リストテスト11」が選択された。
*Onマイリスト1の◯リストテスト12
:「◯リストテスト12」が選択された。
*Onマイリスト1の◯リストテスト13
:「◯リストテスト13」が選択された。
*Onマイリスト1の◯リストテスト14
:「◯リストテスト14」が選択された。
*Onマイリスト1の◯リストテスト15
:「◯リストテスト15」が選択された。
*Onマイリスト1の◯リストテスト16
:「◯リストテスト16」が選択された。

#------------------------------------------------------------------------------
#「$リストイベントの名称」の名前を変えると、別のリストと認識します。
#2つ以上のリストを生成出来ます。
*◯別のリスト
$リストイベントの名称=Onリストその2
(リスト表示開始)

@Onリストその2の表示スコープ
1

@Onリストその2の説明
リストその2

*Onリストその2の一覧項目
△1
△2
△3
△4
△5

@Onリストその2の一覧表示項目数
3

@Onリストその2のフッター表示位置
400

@Onリストその2の初期表示ページ
最初

@Onリストその2の一番最初へ
[最初]

@Onリストその2の前のページへ
[前]

@Onリストその2の次のページへ
[次]

@Onリストその2の一番最後へ
[最後]

@Onリストその2の閉じる名
[閉じる]

@Onリストその2のリストに戻る名
[リスト表示]

*Onリストその2の閉じセリフ
おわり。

*Onリストその2の△1
△1
*Onリストその2の△2
△2
*Onリストその2の△3
△3
*Onリストその2の△4
△4
*Onリストその2の△5
△5
#サンプルここまで
#------------------------------------------------------------------------------


さくらスクリプトを入れたい
推奨しませんが、以下のようにすると使えます。
(上の辞書ファイル先頭行にver記述があるもののみです。なければ古いので落としなおしてください)
選択肢やアンカーは入れないでください。

*Onさくらスクリプト入りリストの一覧項目
\f[color,red]△\f[color,default]
*Onさくらスクリプト入りリストの\f[color,red]△\f[color,default]
:赤色の三角形が押された。


リストからさらに選択肢を出したい
リスト内部のトークから選択肢を出すと、リストに戻る選択肢が出ません。
その場合、以下のように、(里々リスト個別フッター)と書いてください。
(ver201604252114から)

*Onリスト項目から選択肢リストの一覧項目
てすと
*Onリスト項目から選択肢リストのてすと
:テストです。
_てすと2
*てすと2
:項目からさらに選択肢を出しました。
(里々リスト個別フッター)


リスト化スクリプト

#------------------------------------------------------------------------------
#以下の処理は理解する必要はありません。
#リスト化機能は、この中身のスクリプトを理解せずとも問題なく使えます。

#例えば、satori.dllの中身のソースを知らずとも里々は使えるように、
#以下の処理を理解しなくても、リスト化機能は使えます。
#------------------------------------------------------------------------------
#処理部ここから
@リスト表示開始
(nop,
(set,自動挿入ウェイトバックアップ,(when,(変数「自動挿入ウェイトタイプ」の存在),(自動挿入ウェイトタイプ)))
(set,自動挿入ウェイトタイプ,無効)
(split(sprintf,%c,1)
(replace(sprintf,%c,1)
(erase(sprintf,%c,1)((リストイベントの名称)の一覧項目)(sprintf,%c,1)\1)(sprintf,%c,1)
\n(sprintf,%c,1)
(sprintf,%c,2)
)(sprintf,%c,1)
(sprintf,%c,2)(sprintf,%c,1)
0(sprintf,%c,1)#要素数。0で無制限分割
0#空要素の分割。0で空要素は削除される

(set,里々リストページ数,(calc,((Sの数) - 1) / ((リストイベントの名称)の一覧表示項目数) + 1))
(when,(里々リストページ数) < 1,(set,里々リストページ数,1))
)\![embed,OnDisplaySatoriList,(when,((リストイベントの名称)の初期表示ページ) == 最後,(里々リストページ数),1)]

@OnDisplaySatoriList
\t\*\_q\p[((リストイベントの名称)の表示スコープ)]φ
((リストイベントの名称)の説明)\nφ
(里々リスト処理一覧ページ)\_l[0,0](when,((リストイベントの名称)のフッター表示位置) > 0,\n[((リストイベントの名称)のフッター表示位置)])(里々リスト処理一覧フッター)\_q

@里々リスト処理一覧ページ
\p[((リストイベントの名称)の表示スコープ)](for,((R0) - 1) * ((リストイベントの名称)の一覧表示項目数),(R0) * ((リストイベントの名称)の一覧表示項目数) - 1,1,
\__q[OnChoiceSatoriList,"(S(C0))",(R0)](S(C0))\__q
(when,(C0) != (R0) * ((リストイベントの名称)の一覧表示項目数) - 1,\n)


@里々リスト処理一覧フッター
\__q[OnDisplaySatoriList,1]((リストイベントの名称)の一番最初へ)\__qφ
\__q[OnDisplaySatoriList,(when,(R0) <= 1,(里々リストページ数),(calc,(R0) - 1))]((リストイベントの名称)の前のページへ)\__qφ
(sprintf,%(length,(里々リストページ数))d,(R0)) / (sprintf,%(length,(里々リストページ数))d,(里々リストページ数)) φ
\__q[OnDisplaySatoriList,(when,(R0) >= (里々リストページ数),1,(calc,(R0) + 1))]((リストイベントの名称)の次のページへ)\__qφ
\__q[OnDisplaySatoriList,(里々リストページ数)]((リストイベントの名称)の一番最後へ)\__qφ
\__q[OnEndDisplaySatoriList]((リストイベントの名称)の閉じる名)\__q

@OnChoiceSatoriList
((リストイベントの名称)の(R0))(set,里々リストの選択ページ保存,(R1))(OnChoiceSatoriListUnitFooter)

@里々リスト個別フッター
\![embed,OnChoiceUnitFooter,1,(里々リストの選択ページ保存)]

@OnChoiceSatoriListUnitFooter
\t\*\_q\__q[OnDisplaySatoriList,(R1)]((リストイベントの名称)のリストに戻る名)\__q\__q[OnEndDisplaySatoriList]((リストイベントの名称)の閉じる名)\__q\_q

@OnEndDisplaySatoriList
((リストイベントの名称)の閉じセリフ)(里々リスト終了処理)

@里々リスト終了処理
(nop,
(set,自動挿入ウェイトタイプ,
(when,(変数「自動挿入ウェイトタイプバックアップ」の存在),(自動挿入ウェイトタイプバックアップ))

(set,里々リストイベントの名称,)
(set,里々リストページ数,)
(set,里々リストの選択ページ保存,)
(set,自動挿入ウェイトタイプバックアップ,)

#処理部ここまで
#------------------------------------------------------------------------------
PageTop

コメント


管理者にだけ表示を許可する
 

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