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