*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" >}