*SSP独自タグで誕生日を入力させる [#ofdac826]
**はじめに [#x47de7cf]
SSPには
>\![open,dateinput,ID,表示時間,年,月,日]
というタグが存在します。
-「年月日を入力するダイアログを表示」するもの。
-詳しい説明はhttp://emily.shillest.net/specwiki/index.php?reference%2FSakuraScript#open_dateinputにあります。
**使い方 [#y1ddc287]
普通のinputboxと同じように
>\0\s[0]では、誕生日を入力してください。\![open,dateinput,ID,表示時間,年,月,日]
とトーク中にでも書いておくと、こんな感じ
http://img.f.hatena.ne.jp/images/fotolife/f/fm7743/20091116/20091116155057.gif
で出てきます。#br
これだけだとあまり意味が無いのでゴースト側にこれに反応するイベントを組み込みます。
**イベント [#taa706be]
基本はinputboxと同じOnUserInputを呼び出します。&br
>\![open,dateinput,&color(Red){ID};,&color(Blue){表示時間};,&color(Lime){年,月,日};]
-「&color(Red){ID};」に入れた文字がReference0に入る
--どんなイベントなのかを識別するものです
-「&color(Blue){表示時間};」
--このInputboxバルーンをどれだけ表示させるかの秒数を指定するものです。
--ここの数値が0,-1,または入力省略だと「タイムアウト無し」、ずっと表示されっぱなしになります。
-「&color(Lime){年,月,日};」は最初に表示させておきたい日付を入れておくことができます。
--省略するとその日の日付になります。
ここで入力して確定されると、年月日はReference1に格納されます。
--例えば「2009年11月14日」と入れておけばReference1には「2009,11,14」と入ります。
**具体的なイベント [#pf03211f]
-Reference1に入っているカンマ区切りのデータを「split」という関数で分割して「西暦」「月」「日」の3つの変数に入れて使います。
-そうしないと「ユーザーさんの誕生日を祝わせるイベント」が起こせないので
--里々だとssuがないと使えません。
--この記事を書いている人が里々と華和梨しか使えないのでAYA/YAYAなど他の栞ユーザーの方は適宜なんとかしてください。
---せっかくだから、俺はYAYAの例を追記するぜ! - 追記人
***里々 [#vb38c47b]
>&color(Green){#入力するところ};
>*誕生日入力
>:\![open,dateinput,誕生日,-1,年,月,日]
>(0)それでは、(ユーザ名)さんの誕生日を入力してください。
>
>&color(Green){#入力が確定されると「OnUserInput」のイベントに飛びます};
>&color(Green){#R0に入る識別子(ID)が「誕生日」なので「*誕生日が入力された」にジャンプ};
>*OnUserInput
>>(R0)が入力された
>
>*誕生日が入力された
>(split、(R1)、,)
>$誕生年【タブ】(S0)
>$誕生月【タブ】(S1)
>$誕生日【タブ】(S2)
>&color(Green){splitで分割された文字列は変数(S0)から順番に入れられます};
>&color(Green){あとはそれぞれ変数に代入してやればよいわけです};
>:誕生日は(誕生年)年(誕生月)月(誕生日)日ですね?
>
>_そうですよ【タブ】誕生日おぼえる
>_違います【タブ】誕生日入力
>
>*誕生日おぼえる
>:(5)はい、わかりました。
***華和梨+OpenKEEPS [#wc7294ec]
OpenKEEPSだとこんな感じ(「きぃ&ぷしゅう」の名前入力スクリプトを流用しています)
>&color(Green){#入力するところ};
>&color(Green){#\qタグで「誕生日入力」という選択肢を作ってそこから飛ばしたと仮定しています};
>Select.誕生日入力 : (
>$(
>setstr FlagBirth 1;
>setFreeze;
>)
>\0\![open,dateinput,TeachBirthday,-1,年,月,日]\s[0]それでは、\w3${username}さんの誕生日を入力してください。\w9\w9
>)
>
>&color(Green){#入力が確定されると「TalkInput.(識別子)」のイベントに飛びます};
>TalkInput.TeachBirthday : (
>	$(
>	clear FlagBirth;
>	split 生年月日 $(SReference 1) ",";
>	)
>&color(Green){#splitで分割された文字列はエントリに入れられます。};
>&color(Green){この場合は「生年月日」に 「生年月日:YYYY,MM,DD」という感じに。};
>&color(Green){配列として呼び出せます。詳しいことはKISリファレンスで。};
>	\0誕生日は\w9\w9\n\n
>	$生年月日[0]年 $生年月日[1]月 $生年月日[2]日\n\n
>	でいいですか?\n\n\n
>	\q["そうですよ,MemoryBirth"]\n
>	\q["違います ,誕生日入力"]\e
>)
>
>Select.MemoryBirth : (
>	$(
>		resetFreeze;
>	setstr userbirthY $生年月日[0];
>	setstr userbirthM $生年月日[1];
>	setstr userbirthD $生年月日[2];
>	)
>\0\s[5]はい、\w5わかりました。\w9\w9\n
>\e
>)
***YAYA + 「はろーYAYAわーるど」 [#za5b160b]
「[[はろーYAYAわーるど:http://ms.shillest.net/yayame.xhtml]]」の yaya_shiori3.dic + yaya_tmpl_util.txt の利用を想定しますが、できるだけ一般化しています。~
AYA5系テンプレートの場合は"reference[*]"を"refrence*"に置き換えて下さい。
>//入力するところ
>//\qタグで「誕生日入力」という選択肢を作ってそこから飛ばしたと仮定しています
>&color(Green){//入力するところ};
>&color(Green){//\qタグで「誕生日入力」という選択肢を作ってそこから飛ばしたと仮定しています};
>誕生日入力
>{
>	"\![open,dateinput,OnTeachBirthday,-1,%(GETTIME[0]),%(GETTIME[1]),%(GETTIME[2])]\e"
>}
>OnTeachBirthday
>{
>	"\0誕生日は\w9\w9\n\n%(reference[0][0])年 %(reference[0][1])月 %(reference[0][2])日でいいですか?\n\n\n/
>	\q[そうですよ,OnMemoryBirth,%(reference[0])]\n/
>	\q[違います ,誕生日入力]"
>	\q[違います ,誕生日入力]\e"
>}
>OnMemoryBirth
>{
>	userbirthY = TOINT(reference[0])
>	userbirthM = TOINT(reference[1])
>	userbirthD = TOINT(reference[2])
>	"\0\s[5]はい、\w5わかりました。\w9\w9\e"
>}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS