SSPに入力されたユーザ情報を使う

ユーザの名前・性別・生年月日の情報が、SSPに設定されている場合、ゴーストはその情報を利用する事ができます。
うまくすれば、いちいちゴーストにユーザの情報を入力してもらう手間が省けます。

※SSPのユーザ設定は、右クリックメニューから設定->本体設定で開く設定ダイアログの「一般」ページ下部に入力された物です。




SSPの設定を覚えさせる

※ssu.dllのsplit関数とiflist関数、is_emptyを使っています。
 動かない場合はSAORIを見直してみてください。

*OnNotifyUserInfo
$ユーザ名【タブ】(R0)
$ユーザフルネーム【タブ】(R1)
#日付は、例えば2014年4月17日なら「2014,4,17」という形で(R2)に入っている
$ダミー行【タブ】(nop,(split(バイト値、1)(R2)(バイト値、1),))
$ユーザ誕生年【タブ】(S0)
$ユーザ誕生月【タブ】(S1)
$ユーザ誕生日【タブ】(S2)
#性別は「male」or「famale」or「undef」が入っている
#分かりやすいように、「男」「女」「不明」に変更する
$ユーザ性別【タブ】(iflist、(R3)==、male、男、female、女、undef、不明)

このように書いておけば、(ユーザ名)といった、上で書いたそれぞれの変数にそれぞれの内容が勝手に入ります(SSPにあらかじめ設定があった場合)。
「OnNotifyUserInfo」はゴースト起動時と、SSP本体設定でユーザ名や誕生日や性別を変更した時に呼ばれます。
※OnNotifyUserInfoにトークを書いても表示されず無視されます。例のように変数への代入は有効です。
SSP本体設定が変更されると、勝手にゴースト側のデータも更新されるので便利です。

ただし、ゴースト毎にユーザが設定を変えたい場合など、勝手に更新されると困る場合もあると思います。
それを考える場合は初回起動時だけ処理が行われるようにすると便利です。

#初回起動時かつちゃんと本体設定で入力されている時のみデータを取る例
*OnNotifyUserInfo
>ユーザデータ取得処理【タブ】(起動回数)==1&&(is_empty(バイト値、1)(R2))==0

*ユーザデータ取得処理
$ユーザ名【タブ】(R0)
$ユーザフルネーム【タブ】(R1)
$ダミー行【タブ】(nop,(split(バイト値、1)(R2)(バイト値、1),))
$ユーザ誕生年【タブ】(S0)
$ユーザ誕生月【タブ】(S1)
$ユーザ誕生日【タブ】(S2)
$ユーザ性別【タブ】(iflist、(R3)==、male、男、female、女、undef、不明)

なおSSP側で設定していない場合、誕生年月日は空っぽです。
SSP設定画面での表示上は、今日の日付が入っています。


追記
ユーザ誕生年、ユーザ誕生月、ユーザ誕生日を全角で取得したい場合は 【タブ】 ではなく = を使う

$ユーザ誕生年=(S0)
$ユーザ誕生月=(S1)
$ユーザ誕生日=(S2)

本体設定画面をゴーストから開く

#以下のトークを、メニューの選択肢など適当な場所から呼ぶ
*SSPユーザ設定
:\![open,configurationdialog,setup]ここに名前や性別を設定してね!

このように\![open,configurationdialog,setup]というさくらスクリプトで、SSPの本体設定画面を開く事が出来ます。
設定画面を閉じるとOnNotifyUserInfoが呼ばれるので、先の例のように書いておけば変更がすぐに反映されます。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-05-01 (日) 23:26:49