里々の内部処理について
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*里々の内部処理について [#vab10f90]
ここでは、里々がdll内部で行っている処理のうち、注意を要す...
こうした処理は本来里々利用者の便宜を計るために行われてい...
また他のSHIORIの経験があるとかえってつまずきやすい部分で...
里々を使っていて奇妙な不具合に遭遇した場合には、思い出し...
----
#contents
----
~
*里々の選択肢処理 [#l4773df8]
本題の前に、里々利用者が見落としがちな基本的な原理につい...
里々ではさくらスクリプトも使用できますが、捉え方としては...
以降、''辞書のトークは自動的にさくらスクリプトに変換され...
----
下例は、あるトークと、それを里々が自動的に変換した結果の...
*
:(7)じゃんけんするよー!
:いくでー。(11)最初は……
_グー
_パー【タブ】アンブッシュ
\1\n[half]\0\_w[6]\s[7]じゃんけんするよー!\n\n[half]\1\...
……\n\q[グー,グーグー1]\n\q[パー,アンブッシュパー2]\e
選択肢である &color(#ff0000){\q[グー,グーグー1]}; と、 ...
明らかに記述した覚えの無い単語が、\qタグ内に勝手に記述さ...
----
実は、里々は[[選択肢に関連した情報取得変数>情報取得変数#f...
まず、里々の選択肢の記法は、以下のようなさくらスクリプト...
_選択ラベル【タブ】選択ID
\q[選択ラベル,選択ID]
ここまでは基本的なさくらスクリプトですが、里々はさらに続...
\q[選択ラベル,選択ID(バイト値、1)選択ラベル(バイト...
結果、選択肢が選ばれ、[[OnChoiceSelect>http://ssp.shilles...
&color(#ff0000){選択ID 選択ラベル 選択番号};~
が返却される事になります(半角スペースは1バイト文字)。~
里々はこれをユーザーの目に触れる前に内部で分割し、それぞ...
//'''※OnChoiceEnterでも選択IDの再変換が行われるようです...
従って、選択肢のID部分が通知される[[OnChoiceEnter>http://...
~
''(↓ Mc159-3 で「script:」を使用した時に記述通りの動作を...
上記の仕様のため、[[\q[タイトル,script:実行内容]>http://s...
例えば、以下を実行してクリックするとします。~
\q[テスト,"script:\0\s[0]"]
これは、クリック時に「\0\s[0]」が実行されるさくらスクリプ...
しかし、里々でこれを書いた場合、実際には以下に変形されて...
\q[テスト,"script:\0\s[0]"(バイト値、1)テスト(バイト...
従って、バルーンには記述した覚えのない「テスト 1」という...
**留意すべき点 [#c394f8dc]
しかしながら、上記の選択肢の仕様はさくらスクリプト構成の...
例えば、スクリプトログで確認できるように、MAKOTOや[[repla...
上記の変形を受けた段階のものという事になります。~
[[OnTranslate]]を活用するケースでは、このイベントの性質か...
SSPがいくつか独自に実装している、選択肢関係のSHIORI Event...
~
例えば、SSPはOnChoiceSelectと同時にOnChoiceSelectExという...
~
''(↓ Mc159-3でOnChoiceSelectEx の不具合は修正済みで、正...
しかし、里々の上記処理はこれらSSP独自のイベントには対応し...
従って、上記の戻し処理が行われないので、ID部分には上記...
-\q → OnChoiceSelect~
加工処理が行われ、正しく分割される
-\q → OnChoiceSelectEx~
加工処理が行われるが、分割されないので本来IDが入ってい...
結論として、里々では\q選択肢タグでOnChoiceSelectExイベン...
この動作仕様が把握できれば、以下のように処理を組んで稼動...
*OnChoiceSelectEx
$引数区切り追加【タブ】(バイト値、2)
$ダミー【タブ】(nop、(split(バイト値、2)(R1)(...
$引数区切り削除【タブ】(バイト値、2)
>(S0)
:選択肢のジャンプ先「(S0)」は存在しません。
ちなみに、SSPでは選択肢系のさくらスクリプトとして、[[\__q...
先ほど例にあげた「\q[テスト,"script:\0\s[0]"]」は「\__q["...
*一部SHIORIイベントの自動化 [#pc196110]
里々には、簡単にゴーストを作れるよう、基本的な処理を里々...
これにより、ややこしい処理は省いて、トークだけを書けば良...
**OnSecondChange [#w0c14c7e]
里々には一定時間ごとにランダムトークする機能がついていま...
[[$喋り間隔>特殊変数#md9b70b1]]や[[$タイマ>特殊変数#hbd...
そのため、OnSecondChangeを辞書に書くと、ランダムトークを...
#ただし、こんな感じで改行以外に何もトークがない場合は大...
*OnSecondChange
$変数=(変数)+1
(nop,(split,123_12_1,_))
上記のようにトークがない場合は問題ありません。
***再現 [#c267117a]
「[[$○○タイマ>特殊変数#p366f286]]」や「[[$次から○回目の...
また、(R0)と(R1)を書き換えるため、これも里々スクリプ...
**OnMouseMove [#k7d95f56]
「*0Headなでられ」など[[○○なでられ>独自イベント#yba88c08...
[[OnMouseMove>http://ssp.shillest.net/ukadoc/manual/list_...
OnSecondChangeと違い、''「*OnMouseMove」が辞書にあるだけ...
しかし、部位ごとになで時間を調整したい場合など、より凝っ...
***再現 [#aab0bfbe]
辞書に[[OnMouseMove>http://ssp.shillest.net/ukadoc/manual...
里々のOnMouseMoveの動作に加えて何かしたい、という場合は以...
//実際は、部位ごとになでられ回数を別途記録している。以下...
//$(R3)(R4)なでられ回数=((R3)(R4)なでられ回数...
//ただ、これだと変数名が不定であり、追加シェル/surfaces.t...
//*なでられ回数初期化
//$0Headなでられ回数=0
//$0Mouseなでられ回数=0
//と、延々書く必要があり、名称不定の新規追加部はリセット...
*OnMouseMove
$計算用なでられ回数=(計算用なでられ回数)+1
$なでられ回数初期化タイマ=(なでられ持続秒数)
>なにもしない【タブ】(count、(Status)、talking)>0...
>なにもしない【タブ】(計算用なでられ回数)<(なでられ...
$計算用なでられ回数=0
>(R3)(R4)なでられ
*なにもしない
*なでられ回数初期化
$計算用なでられ回数=0
部位ごとになでられ時間を調整するサンプルが以下です。
//少しややこしいかもしれない。厳密さより分かりやすさ重視
*OnMouseMove
$なでられ回数初期化タイマ=(なでられ持続秒数)
>なにもしない【タブ】(count、(Status)、talking)>0...
$計算用Headなでられ回数=(計算用Headなでられ回数)(wh...
>なにもしない【タブ】(計算用Headなでられ回数)<50&&...
$計算用Mouseなでられ回数=(計算用Mouseなでられ回数)(...
>なにもしない【タブ】(計算用Mouseなでられ回数)<20&...
$計算用なでられ回数=(計算用なでられ回数)(when、(R4...
>なにもしない【タブ】(計算用なでられ回数)<60&&(R4...
$ダミー【タブ】(なでられ回数初期化)
>(R3)(R4)なでられ
*なにもしない
*なでられ回数初期化
$計算用なでられ回数=0
$計算用Headなでられ回数=0
$計算用Mouseなでられ回数=0
-上記の解説~
マウスがキャラ上で動くとOnMouseMoveが呼ばれます。~
里々と動作をあわせるため、[[$なでられ持続秒数>特殊変数#c...
*OnMouseMove
$なでられ回数初期化タイマ=(なでられ持続秒数)
>なにもしない【タブ】(count、(Status)、talking)>0...
部位名が「Head」の部分はなでられ回数50とします。~
計算式は、部位が「Head」の場合だけ、「$計算用Headなでら...
部位が「Head」でない場合、「$計算用Headなでられ回数=(...
$計算用Headなでられ回数=(計算用Headなでられ回数)(wh...
>なにもしない【タブ】(計算用Headなでられ回数)<50&&...
部位名が「Mouse」の部分はなでられ回数20とします。
$計算用Mouseなでられ回数=(計算用Mouseなでられ回数)(...
>なにもしない【タブ】(計算用Mouseなでられ回数)<20&...
「Head」でも「Mouse」でもない部分はなでられ回数60とします。
$計算用なでられ回数=(計算用なでられ回数)(when、(R4...
>なにもしない【タブ】(計算用なでられ回数)<60&&(R4...
改行発生を防ぐため、変数「ダミー」に格納する形で改行を吸...
「ダミー」は代入を行っていますが、使うことはありません。
$ダミー【タブ】(なでられ回数初期化)
ここまで来た場合、条件を満たしているので、なでられ反応を...
満たしてない場合、「*なにもしない」にジャンプしています。
>(R3)(R4)なでられ
**OnMouseDoubleClick [#p1a523f7]
「*0Headつつかれ」など[[○○つつかれ>独自イベント#p7d1ae34...
OnSecondChangeと違い、''「*OnMouseDoubleClick」が辞書に...
***再現 [#n31dfccb]
辞書に[[OnMouseDoubleClick>http://ssp.shillest.net/ukadoc...
里々のOnMouseDoubleClickの動作に加えて何かしたい、という...
テンプレートゴースト「[[Rポストと狛犬]]」には記述済みです...
*OnMouseDoubleClick
>(R3)(R4)つつかれ
()
**OnMouseWheel [#za98696a]
「*0Headころころ」など[[○○ころころ>独自イベント#v026b7e0...
OnSecondChangeと違い、''「*OnMouseWheel」が辞書にあるだ...
***再現 [#a0073af1]
辞書に[[OnMouseWheel>http://ssp.shillest.net/ukadoc/manua...
里々のOnMouseWheelの動作に加えて何かしたい、という場合は...
*OnMouseWheel
$計算用マウスホイール=(when、(計算用マウスホイール)...
$計算用マウスホイール初期化タイマ=2
>(R3)(R4)ころころ【タブ】(計算用マウスホイール)>...
*計算用マウスホイール初期化
$計算用マウスホイール=0
ホイールを回転させた時、連続で反応してしまうため、トーク...
*OnMouseWheel
$計算用マウスホイール=(when、(計算用マウスホイール)...
$計算用マウスホイール初期化タイマ=2
>(R3)(R4)ころころ【タブ】(計算用マウスホイール)>...
*計算用マウスホイール初期化
$計算用マウスホイール=0
**OnMouseDown、OnSecondChange、OnMouseUp [#qf3b5b50]
「*0Headホールド」など[[○○ホールド>独自イベント#zb54b53a...
マウス左クリックを押したのを[[OnMouseDown>http://ssp.shil...
ホールドが続いている場合、[[OnSecondChange>http://ssp.shi...
OnMouseDownとOnMouseUpにトークを記述していても動作します。
//Mc159-2での動作。修正が入る可能性あり
***再現 [#meda5f7b]
辞書に*○○ホールド呼び出し時に行われる処理を、里々スクリ...
*○○ホールドに限り、OnMouseDownとOnMouseUpの記述があって...
ただ、OnMouseDownの最初の行の条件、「(when、(R5)==1...
呼び出しイベント名は、実際に里々が使うイベント名の頭に、...
「*○○ホールド」だと里々本来のホールド処理が優先され、上...
*OnMouseDown
$計算用ホールドタイマ【タブ】(when、(R5)==1、2、...
$計算用ホールド終了【タブ】初期化
$計算用ホールド箇所【タブ】(R3)(when、(is_empty、(...
*OnMouseDragStart
$計算用ホールドタイマ【タブ】0
$計算用ホールド終了【タブ】初期化
*計算用ホールド
$計算用ホールド終了【タブ】ホールド済み
>代用(計算用ホールド箇所)ホールド
*OnMouseUp
$計算用ホールドタイマ【タブ】0
$計算用ホールド終了【タブ】(when、(計算用ホールド終了...
>代用(計算用ホールド箇所)ホールド終了【タブ】(計算用...
*代用0Headホールド
:痛い痛い!
*代用0Headホールド終了
:ふう、痛かった……。
**OnCommunicate [#off25a56]
[[コミュニケート]]の実装に使われています。~
ユーザからのコミュニケートは[[\![open,communicatebox]>htt...
OnSecondChangeと違い、''「*OnCommunicate」が辞書にあるだ...
***再現 [#a4d8cbba]
辞書に[[OnCommunicate>http://ssp.shillest.net/ukadoc/manu...
里々のOnCommunicateの動作に加えて何かしたい、という場合は...
*OnCommunicate
≫ユーザ「 (R1)【タブ】(R0)==user
≫(R0)「 (R1)
≫「 (R1)
>COMMUNICATE該当なし
**OnSurfaceRestore [#qda13cbb]
なにかしらのトーク後、一定時間経過時のサーフェス戻しに使...
[[$会話時サーフェス戻し>特殊変数#j901292e]]に値をセット...
OnSecondChangeと違い、''「*OnSurfaceRestore」が辞書にあ...
***再現 [#a0073af1]
辞書に[[OnSurfaceRestore>http://ssp.shillest.net/ukadoc/m...
里々のOnSurfaceRestoreの動作に加えて何かしたい、という場...
*OnSurfaceRestore
:((デフォルトサーフェス0))
:((デフォルトサーフェス1))
より正確には以下ですが、@のため$などが使えないので、上...
@OnSurfaceRestore
\0((デフォルトサーフェス0))\1((デフォルトサーフェ...
**一部のリソース [#o2531035]
[[sakura.recommendsites>http://ssp.shillest.net/ukadoc/ma...
-1行目がサイト名
-2行目がジャンプ先URL
-3行目がバナーURL(省略可)
-4行目以降はジャンプ時に表示される会話文(省略可)
*sakura.recommendsites
SSP配布ページ
http://ssp.shillest.net/
:SSP配布ページだよ。
*予約トーク [#x7d1af6d]
[[$次のトーク>特殊変数#af320606]]で予約したトークは、「[...
従って、トークをジャンルわけして全てのランダムトークに名...
解決方法として、以下のように1つだけ()の展開先を用意し、...
*メニュー
_何か話して
*何か話して
()
*
$トーク乱数【タブ】(乱数0~9)
>良い雰囲気トーク【タブ】(calc,(起動回数)>9||(...
>変なトーク【タブ】(トーク乱数)==1
>普通トーク
*良い雰囲気トーク
:~
*変なトーク
:~
*普通トーク
:~
*replace.txtとreplace_after.txt [#a6140485]
それぞれ、一部の記述を置換出来る便利な機能ですが、タイミ...
**replace.txt [#fd470853]
[[replace.txt>ファイル構成#sb0ae987]]は、ゴーストのロード...
[[辞書ファイル>ファイル構成#lf210f30]]をロードする時に、r...
例えば、replace.txtに以下が書いてあったとします。
(箱の数、【タブ】(call、箱の数、
辞書ファイルに、以下のような対応する記述があれば、ロード...
(箱の数、部屋、箱、16)
(call、箱の数、部屋、箱、16)
置換前は、ただの括弧なので、同じ名前のトークや変数がない...
しかし、置換後は[[自作関数>call関数]]として動作するように...
ファイル読み込み時に辞書の記述全てに対して処理をするため...
-辞書ファイルの合計サイズが非常に大きい
-replace.txtの記述が非常に多い
辞書ファイルのみの合計サイズがメガバイトを超えるような場...
**replace_after.txt [#cd7f01d3]
[[replace_after.txt>ファイル構成#e2122c25]]は、SSPに完成...
例えば、replace_after.txtに以下がかいてあったとします。
ちゃんさん【タブ】ちゃん
辞書の中ではまだ置換がされません。
*
$ユーザ名【タブ】ユーザちゃん
:(ユーザ名)さん。
これが出力される時、里々があれこれ処理して、ベースウェア...
その結果、出力されるのが以下の内容です。
\1\s[10]\0\s[0]ユーザちゃんさん。\e
里々が処理済みで、もうベースウェアに渡すだけ、というタイ...
#里々が出力しようとしたトーク
\1\s[10]\0\s[0]ユーザちゃんさん。\e
#replace_after.txt実行後
\1\s[10]\0\s[0]ユーザちゃん。\e
**まとめ [#ga79656f]
replace.txtの置換が行われるタイミングは、括弧展開の''前''...
replace.txtで置換された後に、括弧が展開される。~
さくらスクリプトへの変換は行われていない。~
replace_after.txtの置換が行われるタイミングは、括弧展開の...
ベースウェアに送る直前に行われるため、ここで()が出現し...
さくらスクリプトへ変換済み。~
*dicAnchor○○.txt [#d3db8866]
[[dicAnchor○○.txt>ファイル構成#h0e1c049]]というファイルを...
名称は「dicAnchor」で始まるテキストファイルならなんでも構...
-dicAnchor.txt
-dicAnchor_test.txt
dicAnchor.txtに以下が書かれているとします。
*犬
:ワンワンなく。
すると、別のトークに「犬」という単語が出るたびにアンカー...
dicAnchor.txtに名前付きのトークを書いておくだけでよいため...
**アンカー化で行われている処理 [#ya77f8e3]
[[\_a[ID]表示ラベル\_a>http://ssp.shillest.net/ukadoc/man...
処理自体はreplace_after.txtと似ています。~
上記をdicAnchor.txtを使わず、あえてreplace_after.txtで書...
犬【タブ】\_a[犬]犬\_a
*OnUpdateReadyのファイル数 [#yac98fc9]
SHIORI Event([[参照:構造とイベントの流れ>#gc01536d]])...
~どの[[イベント]]でどのような[[Reference>リファレンス]]が...
~ただしネットワーク更新において更新すべきファイルが見つか...
~UKADOCにもあるように、OnUpdateReadyのReference0には本来...
~しかし里々の(R0)ではこの値は補正され、更新を行うファイ...
~これは例えば
*OnUpdateReady
:ネットワーク更新を開始するよ。
:ファイルは全部で(R0)個あるみたいや。
といったトークを書く場合に(R0)を素直な序数として扱うの...
~
~しかし一方で、同様に更新ファイル総数や現在更新中のファイ...
~
もし
#思ったように動かない例
*OnUpdate.OnDownloadBegin
:今(R1)個目のファイルをダウンロード中だよ~。
などといったトークを実現したい場合は、[[calc>外部関数/ssu...
#思ったように動く例
*OnUpdate.OnDownloadBegin
:今(calc,(R1)+1)個目のファイルをダウンロード中だよ...
のようにする必要があります。
終了行:
*里々の内部処理について [#vab10f90]
ここでは、里々がdll内部で行っている処理のうち、注意を要す...
こうした処理は本来里々利用者の便宜を計るために行われてい...
また他のSHIORIの経験があるとかえってつまずきやすい部分で...
里々を使っていて奇妙な不具合に遭遇した場合には、思い出し...
----
#contents
----
~
*里々の選択肢処理 [#l4773df8]
本題の前に、里々利用者が見落としがちな基本的な原理につい...
里々ではさくらスクリプトも使用できますが、捉え方としては...
以降、''辞書のトークは自動的にさくらスクリプトに変換され...
----
下例は、あるトークと、それを里々が自動的に変換した結果の...
*
:(7)じゃんけんするよー!
:いくでー。(11)最初は……
_グー
_パー【タブ】アンブッシュ
\1\n[half]\0\_w[6]\s[7]じゃんけんするよー!\n\n[half]\1\...
……\n\q[グー,グーグー1]\n\q[パー,アンブッシュパー2]\e
選択肢である &color(#ff0000){\q[グー,グーグー1]}; と、 ...
明らかに記述した覚えの無い単語が、\qタグ内に勝手に記述さ...
----
実は、里々は[[選択肢に関連した情報取得変数>情報取得変数#f...
まず、里々の選択肢の記法は、以下のようなさくらスクリプト...
_選択ラベル【タブ】選択ID
\q[選択ラベル,選択ID]
ここまでは基本的なさくらスクリプトですが、里々はさらに続...
\q[選択ラベル,選択ID(バイト値、1)選択ラベル(バイト...
結果、選択肢が選ばれ、[[OnChoiceSelect>http://ssp.shilles...
&color(#ff0000){選択ID 選択ラベル 選択番号};~
が返却される事になります(半角スペースは1バイト文字)。~
里々はこれをユーザーの目に触れる前に内部で分割し、それぞ...
//'''※OnChoiceEnterでも選択IDの再変換が行われるようです...
従って、選択肢のID部分が通知される[[OnChoiceEnter>http://...
~
''(↓ Mc159-3 で「script:」を使用した時に記述通りの動作を...
上記の仕様のため、[[\q[タイトル,script:実行内容]>http://s...
例えば、以下を実行してクリックするとします。~
\q[テスト,"script:\0\s[0]"]
これは、クリック時に「\0\s[0]」が実行されるさくらスクリプ...
しかし、里々でこれを書いた場合、実際には以下に変形されて...
\q[テスト,"script:\0\s[0]"(バイト値、1)テスト(バイト...
従って、バルーンには記述した覚えのない「テスト 1」という...
**留意すべき点 [#c394f8dc]
しかしながら、上記の選択肢の仕様はさくらスクリプト構成の...
例えば、スクリプトログで確認できるように、MAKOTOや[[repla...
上記の変形を受けた段階のものという事になります。~
[[OnTranslate]]を活用するケースでは、このイベントの性質か...
SSPがいくつか独自に実装している、選択肢関係のSHIORI Event...
~
例えば、SSPはOnChoiceSelectと同時にOnChoiceSelectExという...
~
''(↓ Mc159-3でOnChoiceSelectEx の不具合は修正済みで、正...
しかし、里々の上記処理はこれらSSP独自のイベントには対応し...
従って、上記の戻し処理が行われないので、ID部分には上記...
-\q → OnChoiceSelect~
加工処理が行われ、正しく分割される
-\q → OnChoiceSelectEx~
加工処理が行われるが、分割されないので本来IDが入ってい...
結論として、里々では\q選択肢タグでOnChoiceSelectExイベン...
この動作仕様が把握できれば、以下のように処理を組んで稼動...
*OnChoiceSelectEx
$引数区切り追加【タブ】(バイト値、2)
$ダミー【タブ】(nop、(split(バイト値、2)(R1)(...
$引数区切り削除【タブ】(バイト値、2)
>(S0)
:選択肢のジャンプ先「(S0)」は存在しません。
ちなみに、SSPでは選択肢系のさくらスクリプトとして、[[\__q...
先ほど例にあげた「\q[テスト,"script:\0\s[0]"]」は「\__q["...
*一部SHIORIイベントの自動化 [#pc196110]
里々には、簡単にゴーストを作れるよう、基本的な処理を里々...
これにより、ややこしい処理は省いて、トークだけを書けば良...
**OnSecondChange [#w0c14c7e]
里々には一定時間ごとにランダムトークする機能がついていま...
[[$喋り間隔>特殊変数#md9b70b1]]や[[$タイマ>特殊変数#hbd...
そのため、OnSecondChangeを辞書に書くと、ランダムトークを...
#ただし、こんな感じで改行以外に何もトークがない場合は大...
*OnSecondChange
$変数=(変数)+1
(nop,(split,123_12_1,_))
上記のようにトークがない場合は問題ありません。
***再現 [#c267117a]
「[[$○○タイマ>特殊変数#p366f286]]」や「[[$次から○回目の...
また、(R0)と(R1)を書き換えるため、これも里々スクリプ...
**OnMouseMove [#k7d95f56]
「*0Headなでられ」など[[○○なでられ>独自イベント#yba88c08...
[[OnMouseMove>http://ssp.shillest.net/ukadoc/manual/list_...
OnSecondChangeと違い、''「*OnMouseMove」が辞書にあるだけ...
しかし、部位ごとになで時間を調整したい場合など、より凝っ...
***再現 [#aab0bfbe]
辞書に[[OnMouseMove>http://ssp.shillest.net/ukadoc/manual...
里々のOnMouseMoveの動作に加えて何かしたい、という場合は以...
//実際は、部位ごとになでられ回数を別途記録している。以下...
//$(R3)(R4)なでられ回数=((R3)(R4)なでられ回数...
//ただ、これだと変数名が不定であり、追加シェル/surfaces.t...
//*なでられ回数初期化
//$0Headなでられ回数=0
//$0Mouseなでられ回数=0
//と、延々書く必要があり、名称不定の新規追加部はリセット...
*OnMouseMove
$計算用なでられ回数=(計算用なでられ回数)+1
$なでられ回数初期化タイマ=(なでられ持続秒数)
>なにもしない【タブ】(count、(Status)、talking)>0...
>なにもしない【タブ】(計算用なでられ回数)<(なでられ...
$計算用なでられ回数=0
>(R3)(R4)なでられ
*なにもしない
*なでられ回数初期化
$計算用なでられ回数=0
部位ごとになでられ時間を調整するサンプルが以下です。
//少しややこしいかもしれない。厳密さより分かりやすさ重視
*OnMouseMove
$なでられ回数初期化タイマ=(なでられ持続秒数)
>なにもしない【タブ】(count、(Status)、talking)>0...
$計算用Headなでられ回数=(計算用Headなでられ回数)(wh...
>なにもしない【タブ】(計算用Headなでられ回数)<50&&...
$計算用Mouseなでられ回数=(計算用Mouseなでられ回数)(...
>なにもしない【タブ】(計算用Mouseなでられ回数)<20&...
$計算用なでられ回数=(計算用なでられ回数)(when、(R4...
>なにもしない【タブ】(計算用なでられ回数)<60&&(R4...
$ダミー【タブ】(なでられ回数初期化)
>(R3)(R4)なでられ
*なにもしない
*なでられ回数初期化
$計算用なでられ回数=0
$計算用Headなでられ回数=0
$計算用Mouseなでられ回数=0
-上記の解説~
マウスがキャラ上で動くとOnMouseMoveが呼ばれます。~
里々と動作をあわせるため、[[$なでられ持続秒数>特殊変数#c...
*OnMouseMove
$なでられ回数初期化タイマ=(なでられ持続秒数)
>なにもしない【タブ】(count、(Status)、talking)>0...
部位名が「Head」の部分はなでられ回数50とします。~
計算式は、部位が「Head」の場合だけ、「$計算用Headなでら...
部位が「Head」でない場合、「$計算用Headなでられ回数=(...
$計算用Headなでられ回数=(計算用Headなでられ回数)(wh...
>なにもしない【タブ】(計算用Headなでられ回数)<50&&...
部位名が「Mouse」の部分はなでられ回数20とします。
$計算用Mouseなでられ回数=(計算用Mouseなでられ回数)(...
>なにもしない【タブ】(計算用Mouseなでられ回数)<20&...
「Head」でも「Mouse」でもない部分はなでられ回数60とします。
$計算用なでられ回数=(計算用なでられ回数)(when、(R4...
>なにもしない【タブ】(計算用なでられ回数)<60&&(R4...
改行発生を防ぐため、変数「ダミー」に格納する形で改行を吸...
「ダミー」は代入を行っていますが、使うことはありません。
$ダミー【タブ】(なでられ回数初期化)
ここまで来た場合、条件を満たしているので、なでられ反応を...
満たしてない場合、「*なにもしない」にジャンプしています。
>(R3)(R4)なでられ
**OnMouseDoubleClick [#p1a523f7]
「*0Headつつかれ」など[[○○つつかれ>独自イベント#p7d1ae34...
OnSecondChangeと違い、''「*OnMouseDoubleClick」が辞書に...
***再現 [#n31dfccb]
辞書に[[OnMouseDoubleClick>http://ssp.shillest.net/ukadoc...
里々のOnMouseDoubleClickの動作に加えて何かしたい、という...
テンプレートゴースト「[[Rポストと狛犬]]」には記述済みです...
*OnMouseDoubleClick
>(R3)(R4)つつかれ
()
**OnMouseWheel [#za98696a]
「*0Headころころ」など[[○○ころころ>独自イベント#v026b7e0...
OnSecondChangeと違い、''「*OnMouseWheel」が辞書にあるだ...
***再現 [#a0073af1]
辞書に[[OnMouseWheel>http://ssp.shillest.net/ukadoc/manua...
里々のOnMouseWheelの動作に加えて何かしたい、という場合は...
*OnMouseWheel
$計算用マウスホイール=(when、(計算用マウスホイール)...
$計算用マウスホイール初期化タイマ=2
>(R3)(R4)ころころ【タブ】(計算用マウスホイール)>...
*計算用マウスホイール初期化
$計算用マウスホイール=0
ホイールを回転させた時、連続で反応してしまうため、トーク...
*OnMouseWheel
$計算用マウスホイール=(when、(計算用マウスホイール)...
$計算用マウスホイール初期化タイマ=2
>(R3)(R4)ころころ【タブ】(計算用マウスホイール)>...
*計算用マウスホイール初期化
$計算用マウスホイール=0
**OnMouseDown、OnSecondChange、OnMouseUp [#qf3b5b50]
「*0Headホールド」など[[○○ホールド>独自イベント#zb54b53a...
マウス左クリックを押したのを[[OnMouseDown>http://ssp.shil...
ホールドが続いている場合、[[OnSecondChange>http://ssp.shi...
OnMouseDownとOnMouseUpにトークを記述していても動作します。
//Mc159-2での動作。修正が入る可能性あり
***再現 [#meda5f7b]
辞書に*○○ホールド呼び出し時に行われる処理を、里々スクリ...
*○○ホールドに限り、OnMouseDownとOnMouseUpの記述があって...
ただ、OnMouseDownの最初の行の条件、「(when、(R5)==1...
呼び出しイベント名は、実際に里々が使うイベント名の頭に、...
「*○○ホールド」だと里々本来のホールド処理が優先され、上...
*OnMouseDown
$計算用ホールドタイマ【タブ】(when、(R5)==1、2、...
$計算用ホールド終了【タブ】初期化
$計算用ホールド箇所【タブ】(R3)(when、(is_empty、(...
*OnMouseDragStart
$計算用ホールドタイマ【タブ】0
$計算用ホールド終了【タブ】初期化
*計算用ホールド
$計算用ホールド終了【タブ】ホールド済み
>代用(計算用ホールド箇所)ホールド
*OnMouseUp
$計算用ホールドタイマ【タブ】0
$計算用ホールド終了【タブ】(when、(計算用ホールド終了...
>代用(計算用ホールド箇所)ホールド終了【タブ】(計算用...
*代用0Headホールド
:痛い痛い!
*代用0Headホールド終了
:ふう、痛かった……。
**OnCommunicate [#off25a56]
[[コミュニケート]]の実装に使われています。~
ユーザからのコミュニケートは[[\![open,communicatebox]>htt...
OnSecondChangeと違い、''「*OnCommunicate」が辞書にあるだ...
***再現 [#a4d8cbba]
辞書に[[OnCommunicate>http://ssp.shillest.net/ukadoc/manu...
里々のOnCommunicateの動作に加えて何かしたい、という場合は...
*OnCommunicate
≫ユーザ「 (R1)【タブ】(R0)==user
≫(R0)「 (R1)
≫「 (R1)
>COMMUNICATE該当なし
**OnSurfaceRestore [#qda13cbb]
なにかしらのトーク後、一定時間経過時のサーフェス戻しに使...
[[$会話時サーフェス戻し>特殊変数#j901292e]]に値をセット...
OnSecondChangeと違い、''「*OnSurfaceRestore」が辞書にあ...
***再現 [#a0073af1]
辞書に[[OnSurfaceRestore>http://ssp.shillest.net/ukadoc/m...
里々のOnSurfaceRestoreの動作に加えて何かしたい、という場...
*OnSurfaceRestore
:((デフォルトサーフェス0))
:((デフォルトサーフェス1))
より正確には以下ですが、@のため$などが使えないので、上...
@OnSurfaceRestore
\0((デフォルトサーフェス0))\1((デフォルトサーフェ...
**一部のリソース [#o2531035]
[[sakura.recommendsites>http://ssp.shillest.net/ukadoc/ma...
-1行目がサイト名
-2行目がジャンプ先URL
-3行目がバナーURL(省略可)
-4行目以降はジャンプ時に表示される会話文(省略可)
*sakura.recommendsites
SSP配布ページ
http://ssp.shillest.net/
:SSP配布ページだよ。
*予約トーク [#x7d1af6d]
[[$次のトーク>特殊変数#af320606]]で予約したトークは、「[...
従って、トークをジャンルわけして全てのランダムトークに名...
解決方法として、以下のように1つだけ()の展開先を用意し、...
*メニュー
_何か話して
*何か話して
()
*
$トーク乱数【タブ】(乱数0~9)
>良い雰囲気トーク【タブ】(calc,(起動回数)>9||(...
>変なトーク【タブ】(トーク乱数)==1
>普通トーク
*良い雰囲気トーク
:~
*変なトーク
:~
*普通トーク
:~
*replace.txtとreplace_after.txt [#a6140485]
それぞれ、一部の記述を置換出来る便利な機能ですが、タイミ...
**replace.txt [#fd470853]
[[replace.txt>ファイル構成#sb0ae987]]は、ゴーストのロード...
[[辞書ファイル>ファイル構成#lf210f30]]をロードする時に、r...
例えば、replace.txtに以下が書いてあったとします。
(箱の数、【タブ】(call、箱の数、
辞書ファイルに、以下のような対応する記述があれば、ロード...
(箱の数、部屋、箱、16)
(call、箱の数、部屋、箱、16)
置換前は、ただの括弧なので、同じ名前のトークや変数がない...
しかし、置換後は[[自作関数>call関数]]として動作するように...
ファイル読み込み時に辞書の記述全てに対して処理をするため...
-辞書ファイルの合計サイズが非常に大きい
-replace.txtの記述が非常に多い
辞書ファイルのみの合計サイズがメガバイトを超えるような場...
**replace_after.txt [#cd7f01d3]
[[replace_after.txt>ファイル構成#e2122c25]]は、SSPに完成...
例えば、replace_after.txtに以下がかいてあったとします。
ちゃんさん【タブ】ちゃん
辞書の中ではまだ置換がされません。
*
$ユーザ名【タブ】ユーザちゃん
:(ユーザ名)さん。
これが出力される時、里々があれこれ処理して、ベースウェア...
その結果、出力されるのが以下の内容です。
\1\s[10]\0\s[0]ユーザちゃんさん。\e
里々が処理済みで、もうベースウェアに渡すだけ、というタイ...
#里々が出力しようとしたトーク
\1\s[10]\0\s[0]ユーザちゃんさん。\e
#replace_after.txt実行後
\1\s[10]\0\s[0]ユーザちゃん。\e
**まとめ [#ga79656f]
replace.txtの置換が行われるタイミングは、括弧展開の''前''...
replace.txtで置換された後に、括弧が展開される。~
さくらスクリプトへの変換は行われていない。~
replace_after.txtの置換が行われるタイミングは、括弧展開の...
ベースウェアに送る直前に行われるため、ここで()が出現し...
さくらスクリプトへ変換済み。~
*dicAnchor○○.txt [#d3db8866]
[[dicAnchor○○.txt>ファイル構成#h0e1c049]]というファイルを...
名称は「dicAnchor」で始まるテキストファイルならなんでも構...
-dicAnchor.txt
-dicAnchor_test.txt
dicAnchor.txtに以下が書かれているとします。
*犬
:ワンワンなく。
すると、別のトークに「犬」という単語が出るたびにアンカー...
dicAnchor.txtに名前付きのトークを書いておくだけでよいため...
**アンカー化で行われている処理 [#ya77f8e3]
[[\_a[ID]表示ラベル\_a>http://ssp.shillest.net/ukadoc/man...
処理自体はreplace_after.txtと似ています。~
上記をdicAnchor.txtを使わず、あえてreplace_after.txtで書...
犬【タブ】\_a[犬]犬\_a
*OnUpdateReadyのファイル数 [#yac98fc9]
SHIORI Event([[参照:構造とイベントの流れ>#gc01536d]])...
~どの[[イベント]]でどのような[[Reference>リファレンス]]が...
~ただしネットワーク更新において更新すべきファイルが見つか...
~UKADOCにもあるように、OnUpdateReadyのReference0には本来...
~しかし里々の(R0)ではこの値は補正され、更新を行うファイ...
~これは例えば
*OnUpdateReady
:ネットワーク更新を開始するよ。
:ファイルは全部で(R0)個あるみたいや。
といったトークを書く場合に(R0)を素直な序数として扱うの...
~
~しかし一方で、同様に更新ファイル総数や現在更新中のファイ...
~
もし
#思ったように動かない例
*OnUpdate.OnDownloadBegin
:今(R1)個目のファイルをダウンロード中だよ~。
などといったトークを実現したい場合は、[[calc>外部関数/ssu...
#思ったように動く例
*OnUpdate.OnDownloadBegin
:今(calc,(R1)+1)個目のファイルをダウンロード中だよ...
のようにする必要があります。
ページ名: