情報取得変数。
里々が自動で生成している変数で、かっこで参照する事ができます。
特殊変数同様、このリストにある名前を普通の変数名に使うのはNG。




時間関連・起動回数の検出

現在○

(現在年)
(現在月)
(現在日)
(現在曜日)
(現在時)
(現在分)
(現在秒)

現在の年月日と時間、それぞれ全角の数字列を返します。
曜日だけは「日」「月」「火」……となります。

起動回数

(起動回数)

ゴーストを起動した回数を返します。
この変数はsatori_savedata.txtに自動で保存されており、同ファイルを削除や上書きなどするとクリアされます。
交代での起動・辞書リロード・ネットワーク更新成功・$辞書フォルダ変更でもカウントするので、(起動回数)に応じたイベントを仕込む際には注意。

起動○ / 累計○

(起動時)
(起動分)
(起動秒)
(累計時)
(累計分)
(累計秒)

ゴーストの起動していた時間を返します。
(起動○)は今回の起動時間、(累計○)は今回までの合計起動時間
時・分・秒は非換算です(1時間20分55秒ならそれぞれ1、20、55)。秒単位、または分単位で換算した値が欲しいときは後述の(単純〜)を使用して下さい。
後者はsatori_savedata.txtにゴースト起動時間累計ミリ秒として保存されており、同ファイルを削除や上書きなどするとクリアされます。

  • *
    :ユーザさんとは今までに(累計時)時間(累計分)分(累計秒)秒会ってるよ。

OS起動○

(OS起動時)
(OS起動分)
(OS起動秒)

OSを起動してからの経過時間。おおよそマシンの連続起動時間と捉えてOK。 (OS起動時)とアルファベットを半角で記述してもOK。

偽林檎ではOS関連の時間が取得できません。
偽林檎では(OS起動時)、(OS起動分)、(OS起動秒)、(単純OS起動秒)、(単純OS起動分)はいずれも常に0(ゼロ)です。

単純○

(単純累計秒)
(単純起動秒)
(単純OS起動秒)
(単純累計分)
(単純起動分)
(単純OS起動分)

前記の(起動○)(累計○)(OS起動○)を指定単位で換算した数値にして出力します。

  • 例/起動後2分15秒経過した時、起動秒と単純起動秒は以下のようになります
    • (起動秒) → 15が返る
    • (単純起動秒) → 135が返る

(単純OS起動秒)とアルファベットを半角で記述してもOK。

最終トークからの経過秒

(最終トークからの経過秒)

最後のトークから経過した秒を返します。

ゴースト起動時間累計ミリ秒

(ゴースト起動時間累計ミリ秒)
(ゴースト起動時間累計(ms))

ゴーストの累計起動時間をミリ秒(=1/1000秒)単位で返します。
この変数はsatori_savedata.txtに書き込まれるタイミングで、自動的に生成されて保存されます。

一定時間以上超えるとおかしくなるので、この変数をゴースト内で表示する場合は要注意。
その場合、以下の「ゴースト起動時間累計秒」を参照してください。
(プログラマ向け→里々の変数は符号付き32bitです)

ゴースト起動時間累計秒

ゴーストの累計起動時間を秒単位で返します。
この変数はsatori_savedata.txtに書き込まれるタイミングで、自動的に生成されて保存されます。

サーフェス関連

サーフェス○

現在のサーフェスのID番号を取得します。
「トーク開始直前のサーフェス」が取得出来ると考えてください。
○はスコープID番号、¥0側は0、¥1側は1になります。スコープIDは半角数字のみ有効です。

(サーフェス0)
(サーフェス1)

前のトークが怒ってる状態で終わったあと、次のトークの種類を変えてみるなどに使えるでしょう。

前回終了時サーフェス○

前回終了時のサーフェスのID番号を取得します。
○はスコープID番号、¥0側は0、¥1側は1になります。スコープIDは半角数字のみ有効です。

(前回終了時サーフェス0)
(前回終了時サーフェス1)

辞書内の検出

文「○○」の存在 / 単語群「○○」の存在 / 変数「○○」の存在

(文「○○」の存在)
(単語群「○○」の存在)
(変数「○○」の存在)

それぞれ、あれば1、なければ0が返ってくる。
フラグや教えてもらったもの等で分岐したい時などに。

*【タブ】(変数「好きなもの」の存在)==0
:ねえ、(ユーザ)って好きなものある?

文「○○」の数 / 単語群「○○」の数

(文「○○」の数)
(単語群「○○」の数)

現在読み込まれている辞書内の文の数、単語の要素数を取得。
存在しない場合0を返す。

システム情報

SHIORI関連のヘッダ情報。

  • (R○)(Sender)(Status)(Charset)などのSHIORI関連のヘッダはイベント毎に送られてきます。
  • 一部SSP専用のものがあるので注意。
  • この項にある一部の変数は(変数「○○」の存在)の検出では中身に関わらず反応しません。常に0になります。該当するのはSender、Status、Charset、Referenceなどです(R○は反応します)。
  • OnSatoriBoot、OnSatoriLoadなどの里々の独自イベントには付加されていないため使用できません(通常イベントを介して呼び出される独自イベントは使用できます/つつかれ、ころころ等)。

(Sender)(Status)(Charset)はこの記述でしか取得出来ません。全角にしたり小文字にしたりしないよう注意。

里々のバージョン

(里々のバージョン)

文字通り里々のバージョンが返ってきます。
うちのゴーストの里々って最新版だっけ?という時にどうぞ。

本体の所在

(本体の所在)

ベースウェアがインストールされているフォルダを取得できます。
「\」区切りで、最後に「\」がついています。

pwd

(pwd)

satori.dllのフォルダを取得できます。
「\」区切りで、最後に「\」がついています。
SAORI使用時など、絶対パスが必要な場合に使うと便利です。

#saoriフォルダのtest.dllの絶対パス
(pwd)saori\test.dll

Sender

(Sender)

ゴーストを起動しているプラットフォームなどのSenderヘッダが取得できます。
動作するベースウェアが限定される事をやる時の不具合回避対策等に便利。

ベースウェア名Senderヘッダ
MATERIA(伺か)embryo
SSPSSP
CROWcrow
DAEDAE
偽林檎NiseRingo
なーコミックスNAR COMIX
何かみたいな何かduet
ninix-ayaninix-aya
ninixninix

Senderはベースウェア本体とは限りません。
例えば、The Handなど特定のゴーストが自身の名前をSenderとしてイベントを送信する事があります。
参考:Don/特殊Shioriイベント一覧

これらの特殊なゴーストがベースウェアと同じイベントを発信する場合、

*0Bustなでられ【タブ】(equal(バイト値、1)(Sender)(バイト値、1)The Hand)
:ギャアアアアア!!!!マドハンド!!!!

といった方法で個別に対応する事ができます。

Status

(Status)

SSP専用の付随情報。
そのイベントが送られてきた時点でのステータスコード(Statusヘッダ)を返します。
特に何もなければ空っぽ。
この(Status)はリファレンスと同じく、イベントのたびに格納されなおします。
参考:SSP/仕様書/SHIORI Statusヘッダ

talking現在スクリプトを実行中(喋り中)。喋り終わると(=さくらスクリプト\eが実行されると)解除される
passive\![enter,passivemode]が実行され、まだ\![leave,passivemode]が実行されていない
induction\![enter,inductionmode]が実行され、まだ\![leave,inductionmode]が実行されていない
timecritical\tタグ実行中。新たなイベントが起きる(選択肢を選ぶなど)か、選択肢の無い状態で喋り終わると解除される
onlineオンライン中(ヘッドラインデータ取得中や時刻あわせ中、自分自身のネットワーク更新中など)
choosing\q、\__q(アンダーバー2個)タグによる選択肢表示中(里々では行頭「_」は\qタグに変換される)
minimizing最小化中(タスクトレイアイコン化中)
balloon(ID=n/ID=n...)IDのスコープでn番のバルーンを表示中。(0=0)なら本体側のみバルーンの0番表示中

例えば、 talkingは現在スクリプトを実行中(喋り中)である事を示します。
これを利用して、「talkingの時は実行しない」(喋り中に割り込まない)という設定をしたりできます。

(Status)を参照することで、ユーザにされると困る動作を制御できます。
例えば、以下は喋っているまたは選択肢表示中はマウスダブルクリックを無視します。
(このStatusがtalkingの時のなでられ反応は、$トーク中のなでられ反応に値を入れると設定が可能)
Statusの中身が複数ある場合、半角カンマ区切りで通知されるため、区切り文字は読点(、)やバイト値を使いましょう。
Statusが空であってもis_emptyで判別出来ないので注意してください。

#本体側の領域が設定されてない部分をつついたとき、
#Statusの中身に、talking(喋り中)とchoosing(選択肢表示中)がない場合だけ、メニューを表示する
*0つつかれ
>メニュー【タブ】(count、(Status)、talking)==0&&(count、(Status)、choosing)==0

このStatusは常に設定されているため、以下の例のように、「喋ってる時はトークをしない」というような使い方が出来ます。

#ダブルクリック時に喋ってる時はトークしないようにする例
*0つつかれ
>本体つつかれ【タブ】(count、(Status)、talking)==0

*本体つつかれ
:なんか用?
*本体つつかれ
:いてっ!
#ホイール回転時に喋ってる時はトークしないようにする例
#ここでの(R2)は回転方向
#0より大きい場合は上回転、0より小さい場合は下回転
*0Shoulderころころ
>本体肩抱きしめ【タブ】(R2)<0&&(count、(Status)、talking)==0

*本体肩抱きしめ
:わ! 変態だ! 急に抱きしめてきた!

Charset

(Charset)

辞書の文字コード名を返します。
里々の場合、「Shift-JIS」固定です。

ウィンドウハンドル○

里々が把握しているウィンドウハンドル値を取得。
○はスコープID番号、¥0側は0、¥1側は1になります。スコープIDは半角数字のみ有効です。

R○ / Reference○

イベントのリファレンスを取得。
R0,R1,R2...と続く。R0,R1,R2と半角で書いたり、Reference○と書いてもOK。
用途は主に、イベント対応トークを作るときに、イベントの情報などを取得します。
(Rの数)でいくつR○があるか調べることが可能。

詳しくはリファレンスのページを参照。

A○

call関数で呼び出した関数側で渡した引数を参照する。
A0,A1,A2...と続く。A0,A1,A2と半角で書いてもOK。
(Aの数)でいくつA○があるか調べることが出来る。

*
:(call,足し算関数,100,2)

@足し算関数
(A0)たす(A1)は(han2zen,(calc,(A0)+(A1)))です!

詳しくはcall関数のページを参照。

S○

SAORIの複数返り値。
S0,S1,S2...と続く。S0,S1,S2と半角で書いてもOK。
(Sの数)でいくつS○があるか調べることが出来る。

例えばsplit関数は、関数自体は分割数を返しますが、分割した文字列をS0以降で返します。

(split,あ、、い、う,、,0,0)  結果(S0)=あ(S1)=い(S2)=う

値が保持されるのは次のSAORI関数を使用するまでです。
S○をループで処理してる最中に別のSAORI関数を呼び出すとS○に入っていたデータが消えるので注意して下さい。その様な処理をしたい場合いったんS○を別の配列変数に退避しておいてから処理します。

$n【タブ】(Sの数)
 (for,0,(n)-1,(set、退避配列(C0)、(S(C0))))
 (for,0,(n)-1,(split、(退避配列(C0))、\))

H○

単語等をもう一度呼び出す。
数字がそのトークの何番目の単語かを表わす。
H0,H1,H2...と続く。H0,H1,H2と半角で書いてもOK。

*
:今日の晩御飯は(オカズ)だよ!
:昨日も(H1)だったような……。
:えー、昨日は(オカズ)だったよー。
:(H3)だったのは一昨日!

注意事項としては里々形式でのサーフェス指定や、カッコ内でさらに展開された回数も数えられるので注意が必要。

*
:(5)今日の晩ご飯は(オカズ)だよ!
:昨日も(H2)だったような……。

@オカズ
カレー
ハンバーグ
(ゲテモノ)

上記実行時、(オカズ)展開時に「(ゲテモノ)」が選ばれて更にカッコが展開されることがあり、その場合は(H3)でないと取得できない。
(ゲテモノ)の中でも括弧を使った単語があった場合はさらにずれる。
このように展開される括弧の数が不定になるため、(H○)では正しく表示出来ない。
変数に入れておくようにした方が無難。

*
$一時変数【タブ】(オカズ)
:(5)今日の晩ご飯は(一時変数)だよ!
:昨日も(一時変数)だったような……。
$一時変数【タブ】

@オカズ
カレー
ハンバーグ
(ゲテモノ)

C○

times,while,for関数本体及びループ本文中でループカウンタとして使用。
ループが入れ子の場合、現在のループが(C0)、一つ上のループのカウンタが(C1)、内側から順にC0、C1…Cnと参照出来ます。
(C0),(C1),(C2)と半角で書いてもOK。
入れ子の場合の動作についてはforの説明を参照してください。

Aの数 / Rの数 / Sの数

(Aの数)(Rの数)(Sの数)

それぞれの総数を出してくれる。

  • Aの数 / call関数で呼び出された文の中で渡された引数の数を取得、A0,A1…Anまであった場合(Aの数)はn+1
  • Rの数 / イベントの引数の数を取得、R0,R1…Rnまであった場合(Rの数)はn+1
  • Sの数 / 関数SAORIからの返り値の数を取得、S0,S1…Snまであった場合(Sの数)はn+1

(R0)〜(R5)まで有効なら(Rの数)は6になる。
間が抜けている場合は最後の数+1になる。

それぞれ、(Aの数)(Rの数)(Sの数)とアルファベットを半角で書いてもOK。

他ゴーストとの連携

隣で起動しているゴースト

(隣で起動しているゴースト)

他のゴーストが同時起動していれば、その中の一体のゴースト名(\0名)になります。
誰もいなければ空っぽになります。

起動しているゴースト数

(起動しているゴースト数)

同時に起動しているゴースト数を取得します。
自分自身も含まれるので、もし自分ともう一体起動しているなら、2が返ってきます。

単に自分以外に起動しているゴーストがいるかどうかを知りたい場合は、(隣で起動しているゴースト)を使うよりこちらを使った方が確実かも知れません。

>他に誰も起動していない【タブ】(起動しているゴースト数)<2

○○の存在

(さくらの存在)

○○に確認したいゴーストの「\0名」を入れて下さい。
同時に起動しているかどうかを取得できます。いれば1、いなければ0です。

○○のサーフェス

(さくらのサーフェス)
(うにゅうのサーフェス)

○○にゴーストの名前を入れると、同時起動中のそのゴーストの現在のサーフェス値を取得できます。
\1名にも対応しているのが特徴。
多重人格ゴーストのモード判別ができる場合もあります。

インストール状況の取得

以下はベースウェアによって機能しないので注意。
使う前に、特殊変数「$NOTIFYの自動保存」を有効にする必要があります。
これらの値はゴースト起動時のベースウェアからの通知を元に作られるため、ゴースト起動後に上記変数を有効にしても、次回起動時まで値が取得されません。
ネットワーク更新などで追加した場合、再現不能なバグの筆頭となるので注意。

導入済みゴースト「○○」の存在

NOTIFY eventのinstalledghostnameを里々が内部で保存した値が取得できます。

(導入済みゴースト「Emily/Phase4.5」の存在)

○○に確認したいゴーストの「ゴースト名」を入れて下さい。
\0名ではないので注意してください。
現在起動しているベースウェアにインストールされていれば1、いなければ0となります。
フォルダ分けなどによらず、インストールされているかを判別することが出来ます。
以下のように条件部分に使うことができます。

*
:最近、ポストを見ないね。
>ポストはいるよ【タブ】(導入済みゴースト「SWポストと狛犬」の存在)
:そうだな、しかしまたどこかで会えるさ。

*ポストはいるよ
何言ってるんだ、この前会ったじゃないか。

導入済みシェル「○○」の存在

MATERIA(伺か)で動作しない。
NOTIFY eventのinstalledshellnameを里々が内部で保存した値が取得できます。

(導入済みシェル「master」の存在)

○○に確認したいシェルの名前を入れて下さい。
実行したゴーストにその名前のシェルがインストールされていれば1、いなければ0となります。

導入済みバルーン「○○」の存在

MATERIA(伺か)で動作しない。
NOTIFY eventのinstalledballoonnameを里々が内部で保存した値が取得できます。

(導入済みバルーン「SSPデフォルト+」の存在)

ベースウェアにその名前のバルーンがインストールされていれば1、いなければ0となります。

導入済みフォント「○○」の存在

SSPでのみ動作。
NOTIFY eventのOnNotifyFontInfoを里々が内部で保存した値が取得できます。

(導入済みフォント「Nishiki-teki」の存在)

SSPにその名前のフォントがインストールされていれば1、いなければ0となります。

導入済みヘッドライセンサ「○○」の存在

SSPでのみ動作。
NOTIFY eventのinstalledheadlinenameを里々が内部で保存した値が取得できます。

(導入済みヘッドライセンサ「うにゅう@もどき」の存在)

SSPにその名前のヘッドライセンサがインストールされていれば1、いなければ0となります。

導入済みプラグイン「○○」の存在

SSPでのみ動作。
NOTIFY eventのinstalledpluginを里々が内部で保存した値が取得できます。

(導入済みプラグイン「共有変数プラグイン」の存在)

SSPにその名前のプラグインがインストールされていれば1、いなければ0となります。

導入済みプラグイン「○○」のID

SSPでのみ動作。
NOTIFY eventのinstalledpluginを里々が内部で保存した値が取得できます。

(導入済みプラグイン「共有変数プラグイン」のID)

SSPにその名前のプラグインがインストールされていれば以下のようなIDが帰ります。
ABED14AF-F34B-4ff2-95B7-30ED37D5802D
されていなければ、空っぽです。

使ってるぞグラフからの情報取得

以下はすべてSSPでのみ動作。
使う前に、特殊変数「$NOTIFYの自動保存」を有効にする必要があります。
これらの値はゴースト起動時のベースウェアからの通知を元に作られるため、ゴースト起動後に上記変数を有効にしても、次回起動時まで値が取得されません。
ネットワーク更新などで追加した場合、再現不能なバグの筆頭となるので注意。

使ってるぞグラフからの情報を取得出来ます。
NOTIFY eventのrateofusegraphを里々が内部で保存した値が取得できます。
これは1分毎に更新されていくので、注意してください。
以下の変数で、使ってるぞグラフに存在しないゴースト名を入れた場合、中身は空っぽになります。

使ってるぞグラフ「○○」の本体側の名前

(使ってるぞグラフ「Emily/Phase4.5」の本体側の名前)

そのゴーストの相方側の名前を取得出来ます。
表示結果

Emily

使ってるぞグラフ「○○」の相方側の名前

(使ってるぞグラフ「Emily/Phase4.5」の相方側の名前)

相方側の名前を取得出来ます。

使ってるぞグラフ「○○」の起動回数

(使ってるぞグラフ「Emily/Phase4.5」の起動回数)

起動した回数を取得出来ます。

使ってるぞグラフ「○○」の単純累計分

(使ってるぞグラフ「Emily/Phase4.5」の単純累計分)

起動時間を取得出来ます。
累計分のため、135などの数字が帰ってきます。
時間分に分割して表示したい場合は以下。

(calc,(使ってるぞグラフ「Emily/Phase4.5」の単純累計分)/60)時間
(calc,(使ってるぞグラフ「Emily/Phase4.5」の単純累計分)%60)分

「135」の場合「2時間15分」と表示されます。

使ってるぞグラフ「○○」の起動割合

(使ってるぞグラフ「Emily/Phase4.5」の起動割合)

全起動時間に対する割合が取得できます。
小数点を含めた値になっているので、計算するときはcalc_floatを使ってください。

使ってるぞグラフ「○○」の状態

(使ってるぞグラフ「Emily/Phase4.5」の状態)

そのゴーストの状態が取得できます。
「boot」=現在起動中、「install」=インストールされている、「vanish」=削除されている

トーク関連

予約トーク

(予約トーク数)
(次から○回目のトーク)
(トーク「○」の予約有無)

上から、
現在予約されているトーク数を返す。
指定した回に予約されているトークがあればそのトーク名を返す。なければ何も返さない。
指定したトークが予約されていれば1を、されていない場合は0を返す。

乱数○〜△

(乱数1〜10)

○〜△で指定された間の数値を、ランダムに取得する。

#全角の100〜200の文字になる。
(乱数100〜200)

#半角の100〜200の文字になる。
(乱数100〜200)

#半角の100〜200の文字になる。
(乱数100〜200)

里々では、数値の全角半角は処理に影響を与えません。

>トーク【タブ】100==100

上記は「*トーク」へジャンプします。

選択肢関連

それぞれ直前に選択したものが返ります。
選択肢を選んだあと、次の選択肢を選ぶまで保持されます。
さくらスクリプトの例でいうと \q[選択ラベル,選択ID] 。

選択ラベル

(選択ラベル)

選択肢の、マウスでクリックできる文章の部分。

選択ID

(選択ID)

選択肢の、クリックした時にジャンプするトーク名の部分。
(選択ID)のアルファベットは全角のみ有効。

選択番号

(選択番号)

上記は_\q[ラベル,ID]の選択肢でのみ保存され、\__q[ID]ラベル\__qの選択肢では保存されないため注意。

デバッグ用

以下のような関数を書いておくと、自分のゴーストの状況が把握出来ます。(SSPデフォルト+に準拠したバルーン推奨)

*辞書情報
:\_q全トーク数(↓内訳)countTalk    (countTalk)
・ランダムトーク数countNoNameTalk (countNoNameTalk)
・イベントトーク数countEventTalk  (countEventTalk)
・上記以外の数  countOtherTalk  (countOtherTalk)
単語群の総数   countWords    (countWords)
単語の総数    countWord    (countWord)
変数の総数    countVariable  (countVariable)
アンカーの総数  countAnchor   (countAnchor)
辞書中のカッコの数countParenthesis (countParenthesis)
トークの総行数  countLine    (countLine)\_q

countTalk

(countTalk)

全トーク数を返します。

countNoNameTalk

(countNoNameTalk)

*のみ、いわゆるランダムトーク数の合計を返します。

countEventTalk

(countEventTalk)

*On〜で始まるイベントトーク数合計を返します。

countOtherTalk

(countOtherTalk)

ランダムトーク・イベントトーク以外のトーク数合計を返します。

countWords

(countWords)

単語群の総数を返します。

countWord

(countWord)

単語の総数を返します。

countVariable

(countVariable)

変数の総数を返します。

countAnchor

(countAnchor)

アンカーの総数を返します。

countParenthesis

(countParenthesis)

辞書中のカッコの数を返します。 を参照のこと。

countLine

(countLine)

トークの総行数を返します。

日時取得時に時分秒を付ける

里々では、日時取得時に「2003,6,1,12,34,56」のようになります。
これを、「2003年6月1日12時34分56秒」のように整形します。

*OnSNTPCompare
$時計【タブ】(split、(R1)、,)
:あちらは、(S0)年(S1)月(S2)日(S3)時(S4)分(S5)秒
$時計【タブ】(split、(R2)、,)
こちらが、(S0)年(S1)月(S2)日(S3)時(S4)分(S5)秒

その他

里々ではありませんが、さくらスクリプトで環境変数、プロパティシステムが使えます。

取得可能な情報は こちらのページ参考。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-06-03 (土) 23:52:55 (111d)