情報取得変数。~ ここでは''カッコで取得できる変数''を指します。内容は、里々やベースウェアが提供してくれる情報など。~ 里々が自動で生成している変数なので、特に使用条件を必要としません。~ ただし、[[特殊変数]]同様、リストにある名前を変数名に使ってはだめ。~ ---- #contents ---- ~ *時間関連・起動回数の検出 [#tb2da92c] **現在○ [#i300e762] (現在年) (現在月) (現在日) (現在曜日) (現在時) (現在分) (現在秒) 現在の年月日と時間、それぞれ全角の数字列を返します。~ 曜日だけは「日」「月」「火」……となります。 **起動回数 [#m3f5df15] (起動回数) ゴーストを起動した回数を返します。~ この変数はsatori_savedata.txtに自動で保存されており、同ファイルを削除や上書きなどするとクリアされます。 ~ 辞書が読み込まれる時にカウントされる((辞書リロード時や辞書フォルダ変更時、ネットワーク更新成功時等))ので、(起動回数)に応じたイベントを仕込む際には注意。 **起動○ / 累計○ [#tbdd0e03] (起動時) (起動分) (起動秒) (累計時) (累計分) (累計秒) ゴーストの起動していた時間を返します。~ (起動○)は''今回の起動時間''、(累計○)は''今回までの合計起動時間''。~ 時・分・秒は非換算です(1時間20分55秒ならそれぞれ1、20、55)。秒単位、または分単位で換算した値が欲しいときは後述の(単純~)を使用して下さい。~ 後者はsatori_savedata.txtに[[ゴースト起動時間累計ミリ秒>#f01b87c5]]として保存されており、同ファイルを削除や上書きなどするとクリアされます。 -例 * :ユーザさんとは今までに(累計時)時間(累計分)分(累計秒)秒会ってるよ。 **OS起動○ [#g765dae2] (OS起動時) (OS起動分) (OS起動秒) OSを起動してからの経過時間。おおよそマシンの連続起動時間と捉えてOK。 偽林檎ではOS関連の時間が取得できません。~ 偽林檎では(OS起動時)、(OS起動分)、(OS起動秒)、(単純OS起動秒)、(単純OS起動分)はいずれも常に0(ゼロ)です。 **単純○ [#r23ac2e4] (単純累計秒) (単純起動秒) (単純OS起動秒) (単純累計分) (単純起動分) (単純OS起動分) 前記の(起動○)(累計○)(OS起動○)を指定単位で換算した数値にして出力します。~ -例/起動後2分15秒経過した時、起動秒と単純起動秒は以下のようになります --(起動秒) → 15が返る --(単純起動秒) → 135が返る **最終トークからの経過秒 [#b61e1de4] (最終トークからの経過秒) 最後のトークから経過した秒を返します。 **ゴースト起動時間累計ミリ秒 [#f01b87c5] (ゴースト起動時間累計ミリ秒) [[累計○>#tbdd0e03]]のミリ秒を返します。~ この変数はsatori_savedata.txtに自動的に保存・計測されます。つまりこれを消すと[[累計○>#tbdd0e03]]で取得できる起動時間もリセットされます。 *サーフェス関連 [#z6e56c81] **サーフェス○ [#z6ac19f0] 現在のサーフェスのID番号を取得します。~ ○はスコープID番号、¥0側は0、¥1側は1になります。 ~ (サーフェス0) (サーフェス1) 前のトークが怒ってる状態で終わったあと、次のトークの種類を変えてみる、とか。 **前回終了時サーフェス○ [#d597aa9e] 前回終了時のサーフェスのID番号を取得します。~ ○はスコープID番号、¥0側は0、¥1側は1になります。 ~ (前回終了時サーフェス0) (前回終了時サーフェス1) *辞書内の検出 [#jc763ebc] **文「○○」の存在 / 単語群「○○」の存在 / 変数「○○」の存在 [#sf7a810a] (文「○○」の存在) (単語群「○○」の存在) (変数「○○」の存在) それぞれ〇〇があれば1、なければ0を返します。~ フラグや教えてもらったもの等で分岐したい時などに。~ *【タブ】(変数「好きなもの」の存在)==0 :ねえ、(ユーザ)って好きなものある? -参考・判定の差 :(文「○○」の存在)|辞書内に「*〇〇」さえあれば、文の中身の有無にかかわらず1になります。 :(単語群「○○」の存在)|辞書内に「@〇〇」があり、かつ1つ以上単語が設定されていれば1になります。 :(変数「○○」の存在)|読み込まれている変数に「〇〇」があれば1になります。~ (中身が空っぽの変数は存在しないものとして扱われます) **文「○○」の数 / 単語群「○○」の数 [#xd23acbc] (文「○○」の数) (単語群「○○」の数) 里々Mc129-1以降で使用可。~ 現在読み込まれている辞書内の文の数、単語の要素数を取得。~ 存在しない場合0を返す。~ %%「単語の追加」で単語を追加すると数がおかしくなる。%% ~ 里々Mc135-1で修正されました。~ **単語群「○○」の重複回避枯渇 [#vcc01128] (単語群「○○」の重複回避枯渇) 里々Mc163-1以降で使用可。~ 単語群の重複回避で選ぶものが無くなった状態かどうかを判定します。~ 次にその単語群を使ったときにもう一度全体から選び直すことになる場合に1を、それ以外の場合に0が取得されます。~ *システム情報 [#ad1d03ec] システムやSHIORI関連の情報。 -(R○)や(H○)など全角英数字+大文字のものを除き、アルファベットの変数は、&color(#ff0000){全て半角かつ大文字小文字を正確に入力しないと受け付けません};。 -一部SSP専用のものがあるので注意。 -ベースウェアからのリクエストに関連した情報であるR○、Charset、Sender、Status、IDなどはイベント毎に送られ、その都度更新されます。 -OnSatoriBoot、OnSatoriLoadなどの[[里々の独自イベント>独自イベント]]はベースウェアからのリクエストではないため使用できません(通常イベントを介して呼び出される独自イベントは使用できます/つつかれ、ころころ等)。~ -また、一部の変数は[[(変数「○○」の存在)>#jc763ebc]]の検出では中身に関わらず反応せず、常に0になります。該当するのはSender、Status、Charset、Referenceなどです(R○は反応します)。 **Charset [#c3acf5d5] (Charset) リクエスト情報。~ 呼び出された時のリクエストの文字コード名を返します。 **Sender [#td6db92c] (Sender) リクエスト情報。~ ゴーストを起動しているプラットフォームなどのSenderヘッダが取得できます。~ 動作するベースウェアが限定される事をやる時の不具合回避対策等に便利。~ |BGCOLOR(#abc):ベースウェア名|BGCOLOR(#abc):Senderヘッダ| |MATERIA(伺か)|embryo| |SSP|SSP| |CROW|crow| |DAE|DAE| |偽林檎|NiseRingo| |なーコミックス|NAR COMIX| |何かみたいな何か|duet| |ninix-aya|ninix-aya| |ninix|ninix| Senderはベースウェア本体とは限りません。~ 例えば、The Handなど特定のゴーストが自身の名前をSenderとしてイベントを送信する事があります。~ これらの特殊なゴーストがベースウェアと同じイベントを発信する場合、 *0Bustなでられ【タブ】(compare,(Sender),The Hand) :マドハンド!!!! といった方法で個別に対応する事ができます。 **Status [#xe2aebf5] (Status) リクエスト情報。SSP専用。~ そのイベントが送られてきた時点でのステータスコード(Statusヘッダ)を返します。~ 特に何もなければ空っぽ。~ 参考:[[SSP/仕様書/SHIORI Statusヘッダ>http://emily.shillest.net/specwiki/index.php?SSP%2F%E4%BB%95%E6%A7%98%E6%9B%B8%2FSHIORI%20Status%E3%83%98%E3%83%83%E3%83%80]] ||SIZE(12):BGCOLOR(#fff):|c |talking|現在スクリプトを実行中(喋り中)。&br;喋り終わると(=さくらスクリプト\eが実行されると)解除される| |passive|パッシブモードの最中。&br;\![enter,passivemode]が実行され、まだ\![leave,passivemode]が実行されていない| |induction|インダクションモードの最中。&br;\![enter,inductionmode]が実行され、まだ\![leave,inductionmode]が実行されていない| |timecritical|\tタグが実行され、その影響下にある最中。&br;新たなイベントが起きる(選択肢を選ぶなど)か、選択肢の無い状態で喋り終わると解除| |online|オンライン中。&br;ヘッドライン取得中や時刻あわせ中、自分自身のネットワーク更新中など| |choosing|\q、\__qタグによる選択肢表示中。&br;里々では[[「_」>特殊記号一覧#q88485d2]]が\qタグに変換されるのでこれも含む| |minimizing|最小化中(タスクトレイアイコン化中)| |balloon(ID=n/ID=n...)|IDのスコープでn番のバルーンを表示中。&br;(0=0)なら本体側のみバルーンの0番表示中| 例えば、 talkingは現在スクリプトを実行中(喋り中)である事を示します。~ これを利用して、特定のトークを「talkingの時は実行しない」(喋り中に割り込まない)という設定をしたり、音楽再生機能で連続再生をする時に「特定のステータスコードの時だけ再生中のファイルの情報を表示する」といった事が可能です。~ 他にも、talking中に「\C」を頭に付けたトークを割り込ませると、現在喋っているトークの末尾に追記する形でトークを続けたりなんかもできます。~ #本体側の領域が設定されてない部分をつついたとき、 #Statusに、talking(喋り中)とchoosing(選択肢表示中)がない時だけメニューを表示する *0つつかれ >メニュー【タブ】(count、(Status)、talking)==0&&(count、(Status)、choosing)==0 **ID [#s0f5a907] (ID) リクエスト情報。~ 呼び出された時のイベントID名を返します。~ 参考:[[UKADOC ProjectのSHIORI Eventリスト>http://ssp.shillest.net/ukadoc/manual/list_shiori_event.html]] **里々のバージョン [#ua674302] (里々のバージョン) 文字通り里々のバージョンが返ってきます。~ うちのゴーストの里々って最新版だっけ?という時にどうぞ。 **本体の所在 [#y5001e12] (本体の所在) Mc142-1以降で使用可。~ ベースウェアがインストールされているフォルダを取得できます。~ **pwd [#k0f7c308] (pwd) そのゴーストの里々(satori.dll)のある場所を絶対パスで返します。~ この絶対パスはDLLのファイル名ではなくDLLが含まれるフォルダの絶対パスになります。~ Print Working Directory(=作業フォルダを表示する)の略。 **ウィンドウハンドル○ [#bb7442bf] (ウィンドウハンドル0) (ウィンドウハンドル1) Mc128-2以降で使用可。~ 指定した半角数字のスコープのウィンドウハンドルを返します。 **R○ / Reference○ [#l0da4eb8] リクエスト情報。イベントのリファレンスを返します。~ R0,R1,R2...と続く。半角で書いたり、Reference○の書き方でもOK。~ 用途は主に、イベント対応トークを作るときに、イベントの情報などを取得する。~ [[(Rの数)>情報取得変数#ge7589c6]]でいくつR○があるか調べることが可能。~ *OnGhostChanged :(R0)さんから交代しました。 イベントの種類とどんなリファレンスがあるかはこちらを参照→[[Ukadoc SHIORI Eventリスト>http://ukadoc.googlecode.com/svn/trunk/manual/list_shiori_event.html]] **A○ [#pb284f5d] call関数で呼び出した関数側で渡した引数を参照する、A0,A1,A2...と続く [[(Aの数)>情報取得変数#ge7589c6]]でいくつA○があるか調べることが出来る。 * :(call,足し算関数,100,2) @足し算関数 (A0)たす(A1)は(han2zen,(calc,(A0)+(A1)))です! 関連→[[call関数]] **S○ [#udf5ebeb] SAORIの複数返り値、S0,S1,S2...と続く~ [[(Sの数)>情報取得変数#ge7589c6]]でいくつS○があるか調べることができます。~ ~ 例えば[[split>関数一覧#split]]関数は、関数自体は分割数を返しますが、分割した文字列をS0以降に格納します。 (split,ドンジャラ) ↓ (S0)=ド (S1)=ン (S2)=ジ (S3)=ャ (S4)=ラ 値が保持されるのは次のSAORI関数を使用するまでです。~ S○をループで処理してる最中に別のSAORI関数を呼び出すとS○に入っていたデータが消えるので注意して下さい。その様な処理をしたい場合いったんS○を別の配列変数に退避しておいてから処理します。 $n【タブ】(Sの数) (for,0,(n)-1,(set、退避配列(C0)、(S(C0)))) (for,0,(n)-1,(split、(退避配列(C0))、\)) **H○ [#cc4e0adf] 単語等をもう一度呼び出す。 数字がそのトークの何番目の単語かを表わす。 * :今日の晩御飯は(オカズ)だよ! :昨日も(H1)だったような……。 :えー、昨日は(オカズ)だったよー。 :(H3)だったのは一昨日! **C○ [#s8d0383c] 里々Mc146-1,Mc134-901以降で使用可。~ [[times>関数一覧#times]],[[while>関数一覧#while]],[[for>関数一覧#for]]関数本体及びループ本文中でループカウンタとして使用。~ ループが入れ子の場合、現在のループがC0,一つ上のループのカウンタがC1…Cnと参照出来ます。~ **Aの数 / Rの数 / Sの数 [#ge7589c6] 里々Mc137-2以降で使用可。~ (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になる。~ リファレンスがいくつあるかいちいち数えなくてもいい。~ (loop,hoge,huga)の時の数値設定で困らなくてすむ。~ *他ゴーストとの連携 [#if079c3d] **隣で起動しているゴースト [#ddb7fa1f] (隣で起動しているゴースト) 他のゴーストが同時起動していれば、その中の一体のゴースト名(\0名)になります。~ 誰もいなければ空っぽになります。 **起動しているゴースト数 [#f972d57c] (起動しているゴースト数) 同時に起動しているゴースト数を取得します。~ 自分自身も含まれるので、もし自分ともう一体起動しているなら、2が返ってきます。 単に自分以外に起動しているゴーストがいるかどうかを知りたい場合は、(隣で起動しているゴースト)を使うよりこちらを使った方が確実かも知れません。 >他に誰も起動していない【タブ】(起動しているゴースト数)<2 **○○の存在 [#n2469e02] (さくらの存在) ○○に確認したいゴーストの「\0名」を入れて下さい。~ 同時に起動しているかどうかを取得できます。いれば1、いなければ0です。~ **○○のサーフェス [#m059ca55] (さくらのサーフェス) (うにゅうのサーフェス) ○○にゴーストの名前を入れると、同時起動中のそのゴーストの現在のサーフェス値を取得できます。~ \1名にも対応しているのが特徴。~ 多重人格ゴーストのモード判別ができる場合もあります。 *トーク関連 [#ncf073b7] **予約トーク [#jf3e05b0] (予約トーク数) (次から○回目のトーク) (トーク「○」の予約有無) 上から、~ 現在予約されているトーク数を返します。~ 指定した回に予約されているトークがあればそのトーク名を返し、なければ何も返しません。~ 指定したトークが予約されていれば1を、されていない場合は0を返します。 ~ **乱数○~△ [#oc9cf1eb] (乱数1~10) ○~△で指定された間の数値を、ランダムに取得する。~ なお○で指定した数値が半角だと結果も半角で出力してくれる。 *選択肢関連 [#f9381675] それぞれ直前に選択したものが返ります。~ 選択肢を選んだあと、次の選択肢を選ぶまで保持されます。~ さくらスクリプトの例でいうと \q[&color(#aa0000){選択ラベル};,&color(#aa0000){選択ID};] 。 **選択ラベル [#mdd99aa6] (選択ラベル) 選択肢の、マウスでクリックできる文章の部分。 **選択ID [#g4fb98aa] (選択ID) 選択肢の、クリックした時にジャンプするトーク名の部分。 **選択番号 [#xd03991d] (選択番号) *インストール確認 [#wcc91775] 以下のものはベースウェアから通知されるNOTIFY情報を利用するため、[[$NOTIFYの自動保存>特殊変数#dasnotify]]が有効になっている必要があります。~ **導入済み「○○」の存在 [#a30b1e3f] (導入済みゴースト「○○」の存在) (導入済みシェル「○○」の存在) (導入済みバルーン「○○」の存在) (導入済みフォント「○○」の存在) (導入済みヘッドライセンサ「○○」の存在) (導入済みプラグイン「○○」の存在) ○○で指定したものがインストールされているかどうかを確認できます。~ Mc155-1より追加。[[$NOTIFYの自動保存>特殊変数#dasnotify]]が有効になっている必要あり。~ **導入済みプラグイン「○○」のID [#z0ff3b55] (導入済みプラグイン「○○」のID) 上記のプラグインのIDの取得。 Mc155-1より追加。[[$NOTIFYの自動保存>特殊変数#dasnotify]]が有効になっている必要あり。~ **使ってるぞグラフ「○○」 [#kac2a9b9] (使ってるぞグラフ「○○」の本体側の名前) (使ってるぞグラフ「○○」の相方側の名前) (使ってるぞグラフ「○○」の起動回数) (使ってるぞグラフ「○○」の単純累計分) (使ってるぞグラフ「○○」の起動割合) (使ってるぞグラフ「○○」の状態) ○○で指定したものを使ってるぞグラフから参照して返します。~ Mc155-1より追加。[[$NOTIFYの自動保存>特殊変数#dasnotify]]が有効になっている必要あり。~ *デバッグ用 [#k2b609ce] **countTalk [#l5a91ef4] (countTalk) 全トーク数を返します。 **countNoNameTalk [#g63c7d2c] (countNoNameTalk) *のみ、いわゆるランダムトーク数の合計を返します。 **countEventTalk [#sa3e0d72] (countEventTalk) *On~で始まるイベントトーク数合計を返します。 **countOtherTalk [#rd340ce9] (countOtherTalk) ランダムトーク・イベントトーク以外のトーク数合計を返します。 **countWords [#mf2800c9] (countWords) 単語群の総数を返します。 **countWord [#n024c172] (countWord) 単語の総数を返します。 **countVariable [#x46bf52e] (countVariable) 変数の総数を返します。 **countAnchor [#k93151a6] (countAnchor) アンカーの総数を返します。 **countParenthesis [#w32b8fb2] (countParenthesis) 辞書中のカッコの数を返します。 phase120以前は(countParentheres)なので注意。 -[[「何か。の略歴」における里々の項目:http://www3.to/nobml/sakura/satori3.html#SATORI_0123]] -[[略歴雑記2006/01/03の記述:http://d.hatena.ne.jp/nobml/20060103#1136273154]] を参照のこと。 **countLine [#j5475469] (countLine) トークの総行数を返します。 *日時取得時に時分秒を付ける [#q2653c3c] 里々では、日時取得時に「2003,6,1,12,34,56」のようになります。~ これを、「2003年6月1日12時34分56秒」のように整形します。~ SAORIとして、ssu.dllの中のsplitを使用しています。~ *OnSNTPCompare $時計【タブ】(split、(R1)、,) :あちらは、(S0)年(S1)月(S2)日(S3)時(S4)分(S5)秒 $時計【タブ】(split、(R2)、,) こちらが、(S0)年(S1)月(S2)日(S3)時(S4)分(S5)秒