#author("2026-05-26T21:53:07+09:00","default:post","post") #author("2026-05-27T08:28:12+09:00","default:post","post") プロパティシステムは、SSPが持っている情報を取得する方法です。~ 里々の[[情報取得変数]]だけでは取得出来ない情報を扱うことが出来ます。~ 何が取得出来るかはukadocの[[プロパティシステム>http://ssp.shillest.net/ukadoc/manual/list_propertysystem.html]]を参照。~ ここに書いてある内容は、SSPでしか動きませんので注意してください。~ ---- #contents ---- ~ *注意点 [#y69659b8] 環境変数やプロパティシステムは、さくらスクリプトと同じくSSP(ベースウェア)で処理される命令です。~ ここで重要なのは&color(#ff0000){環境変数やプロパティシステムは里々の手を離れてから処理される};という事。~ 図の矢印を逆流させる事はできないので、環境変数やプロパティシステムで得た情報を~ 里々で扱うには、別のイベントを仕込んで里々に渡すなどの工夫が必要になります。~ 以下、詳細。 処理を逆流させる事はできないので、環境変数やプロパティシステムで得た情報を扱うには、基本的に別のイベントを仕込んだり埋め込んだりして里々に渡すなどの工夫が必要になります。~ しかし、Mc172-1で関数[[get_property>関数一覧#get_property]]が実装されたため、別のイベントを介する必要がなくなりました。 *環境変数の取得 [#e5d97c80] [[(隣で起動しているゴースト)>情報取得変数#ddb7fa1f]]と記述すると、同時起動している別ゴーストの本体側キャラクター名が表示されます。~ これを環境変数でゴースト名を取得して表示してみます。~ %property[表示したい情報]という書き方で表示が出来ます。~ * #括弧は全角 :(隣で起動しているゴースト) #外側の括弧は半角、内側は全角 %property[activeghostlist((隣で起動しているゴースト)).name] この結果、例えば「Rポストと狛犬」が同時に起動していれば、結果は以下になります。~ ポスト Rポストと狛犬 もし、情報が取れなかった場合、結果は空っぽになります。~ 今回の例であれば、同時起動しているゴーストがいなかった場合があてはまります。~ 環境変数による取得では、この情報を里々で調べたりすることは出来ません。~ * #インストールされている全ゴーストのうち、\0名が「ポスト」のゴースト名を取得 :%property[ghostlist(ポスト).name] #この文字数を表示してみる :(length(バイト値、1)%property[ghostlist(ポスト).name]) バルーンへの表示は以下になります。~ Rポストと狛犬 36 「Rポストと狛犬」の文字数7ではなく、「%property[ghostlist(ポスト).name]」の文字数36が表示されます。~ ''長所'' -記述が比較的簡単。 ''短所'' -内容によって分岐させたり出来ない。 *さくらスクリプトによる拾得 [#y8741b6f] *さくらスクリプトによる取得 [#y8741b6f] 上記の環境変数では、バルーンに表示することしか出来ません。~ 取得結果を使って、処理を変化するようにさせたい場合は[[\![get,property,...]>http://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#_!_get,property,イベント名,プロパティ名,プロパティ名,..._]]というさくらスクリプトを使用します。~ * #括弧は半角 \![get,property,ポストはいるかな,"ghostlist(Rポストと狛犬).name"] #\![get,property,ポストはいるかな,"ghostlist(ポスト).name"]でもOKだが #\0が同じ名前のことがあるので、ゴースト名の方が確実 *ポストはいるかな >ポストはいないよ【タブ】(is_empty(バイト値、1)(R0)) :ポストをちゃんとインストールしてるんだね。 えらい! *ポストはいないよ :そんな、ポストがインストールされていないなんて。 一度に複数の情報を取得することも出来ます。~ * #ほしい情報を、半角カンマ区切りで順番に羅列する \![get,property,ポスト起動時間,"rateofuselist(Rポストと狛犬).boottime","rateofuselist(Rポストと狛犬).bootminute"] *ポスト起動時間 #\![get,property,...]で羅列した順に、1番目は(R0)、2番目は(R1)、3番目は(R2)... :ポストの起動は(R0)回で、合計(R1)分。 >ポストたくさん起動した【タブ】(R0)>=10&&(R1)>=120 まだまだだね! *ポストたくさん起動した :そんなにたくさん起動してるなんて! ''長所'' -取得した情報を里々で使うことが出来る。 ''短所'' -記述量が多くなるため、書くのが大変。 *[[\![embed,...]>http://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#_!_embed,イベント名,r0,r1,r2..._]]を使う [#ue8f222e] \0側の現在表示しているサーフェスによって、おまけの一言をつける処理を作ります。~ #うまく動かない例 * :(0)普通の気分。 >おまけの一言 * :(7)怒ってます! >おまけの一言 *おまけの一言 #これだとちゃんと判定できない :(whenlist、(サーフェス0)== 、0、普通すぎて退屈だなあ。 、7、あー腹が立つ。 ) [[(サーフェス0)>情報取得変数#z6ac19f0]]は表示している本体側キャラクターのサーフェス番号が取得できます。~ 実際には「トーク開始直前のサーフェス」を取得します。~ トーク開始前が(0)だったら、以下のように表示されてしまいます。~ 怒ってます! 普通すぎて退屈だなあ。 \![get,property,...]と\![embed,]をあわせることで、現在表示しているサーフェス番号を取得できます。~ * :(0)普通の気分。 >おまけの一言 * :(7)怒ってます! >おまけの一言 *おまけの一言 \![get,property,表情取得,"currentghost.scope(0).surface.num","currentghost.scope(1).surface.num"]\![embed,おまけの一言の内容] *表情取得 $0側サーフェス番号【タブ】(R0) $1側サーフェス番号【タブ】(R1) *おまけの一言の内容 :(whenlist、(0側サーフェス番号)== 、0、普通すぎて退屈だなあ。 、7、あー腹が立つ。 ) これだと、トークでのサーフェスによってきちんと分岐してくれるようになります。~ 怒ってます! あー腹が立つ。 バルーン全体を表のように使ってみる例。~ バルーンの幅によらず、ブラウザのように調整して表示するのが利点です。~ ただし文字が多い場合の改行などは自動処理できないので、はみ出さないように注意してください。~ \![get,property,...]の直前に[[\b[ID]>http://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#_b_ID番号_]]などでバルーン幅が変化したとしても、自動的に合わせてくれます。~ * #現在表示しているバルーンで、文字表示範囲の横幅(ピクセル数)を取得 \![get,property,バルーン表示幅取得,"currentghost.balloon.scope(0).validwidth.initial"]\![embed,表示する内容] *バルーン表示幅取得 $バルーン横方向1【タブ】(zen2han、(calc、(R0)×25÷100)) $バルーン横方向2【タブ】(zen2han、(calc、(R0)×50÷100)) #$バルーン横方向3【タブ】(zen2han、(calc、(R0)×75÷100)) #項目を増やしたい場合 *表示する内容 #\f[bold,true]は太字にする、\f[bold,false]は太字を解除する :\_q\f[bold,true]本体名\_l[(バルーン横方向1),]相方名\_l[(バルーン横方向2),]その他\f[bold,false] ポスト\_l[(バルーン横方向1),]狛犬\_l[(バルーン横方向2),]里々 Emily\_l[(バルーン横方向1),]Teddy\_l[(バルーン横方向2),]SSP さくら\_l[(バルーン横方向1),]うにゅう\_l[(バルーン横方向2),]materia \_q #項目を増やしたい場合 #項目1\_l[(バルーン横方向1),]項目2\_l[(バルーン横方向2),]項目3\_l[(バルーン横方向3),]項目4 ''長所'' -適切なタイミングで処理を実行できる。 ''短所'' -処理がかなり複雑になる。 参考~ [[![embed,...]の使い方がわかった | すくりや>http://nikolat.herokuapp.com/ukagaka/embed-usage/]] *(get_property,プロパティ名)による取得 [#t3eb3c56] (get_property,プロパティ名)で取得できるようです Mc172-1以降では関数[[get_property>関数一覧#get_property]]を利用し、これまでの別のイベントを発生しなくても取得できるようになりました。~ 上例でいうと、 * >ポストはいないよ【タブ】(is_empty(バイト値、1)(get_property(バイト値、1)ghostlist(Rポストと狛犬).name)) :ポストをちゃんとインストールしてるんだね。 えらい! *ポストはいないよ :そんな、ポストがインストールされていないなんて。 と記述を短縮できます。